107 lines
3.3 KiB
CMake
107 lines
3.3 KiB
CMake
# Platform detection and conditional dependencies
|
|
|
|
if(WIN32)
|
|
set(SOFTBUS_PLATFORM_NAME "Windows")
|
|
add_compile_definitions(SOFTBUS_PLATFORM_WINDOWS NOMINMAX WIN32_LEAN_AND_MEAN)
|
|
else()
|
|
set(SOFTBUS_PLATFORM_NAME "Linux")
|
|
add_compile_definitions(SOFTBUS_PLATFORM_LINUX)
|
|
endif()
|
|
|
|
find_package(Threads REQUIRED)
|
|
|
|
if(WIN32)
|
|
set(SOFTBUS_HAS_DBUS OFF)
|
|
set(SOFTBUS_HAS_UDEV OFF)
|
|
else()
|
|
find_package(PkgConfig QUIET)
|
|
if(PkgConfig_FOUND)
|
|
pkg_check_modules(DBUS QUIET dbus-1)
|
|
if(DBUS_FOUND)
|
|
set(SOFTBUS_HAS_DBUS ON)
|
|
else()
|
|
set(SOFTBUS_HAS_DBUS OFF)
|
|
message(WARNING "libdbus-1 not found; DBus IPC will be disabled on Linux")
|
|
endif()
|
|
else()
|
|
set(SOFTBUS_HAS_DBUS OFF)
|
|
endif()
|
|
|
|
find_library(UDEV_LIB udev)
|
|
if(UDEV_LIB)
|
|
set(SOFTBUS_HAS_UDEV ON)
|
|
else()
|
|
set(SOFTBUS_HAS_UDEV OFF)
|
|
message(WARNING "libudev not found; udev device monitor will use stub on Linux")
|
|
endif()
|
|
endif()
|
|
|
|
# ZeroMQ
|
|
option(SOFTBUS_WITH_ZMQ "Enable ZeroMQ transport" OFF)
|
|
if(SOFTBUS_WITH_ZMQ)
|
|
if(PkgConfig_FOUND)
|
|
pkg_check_modules(ZMQ QUIET libzmq)
|
|
endif()
|
|
if(NOT ZMQ_FOUND)
|
|
find_library(ZMQ_LIBRARY NAMES zmq libzmq)
|
|
find_path(ZMQ_INCLUDE_DIR zmq.h)
|
|
if(ZMQ_LIBRARY AND ZMQ_INCLUDE_DIR)
|
|
set(ZMQ_FOUND TRUE)
|
|
set(ZMQ_LIBRARIES ${ZMQ_LIBRARY})
|
|
set(ZMQ_INCLUDE_DIRS ${ZMQ_INCLUDE_DIR})
|
|
endif()
|
|
endif()
|
|
if(ZMQ_FOUND)
|
|
set(SOFTBUS_HAS_ZMQ ON)
|
|
message(STATUS "ZeroMQ found: ${ZMQ_LIBRARIES}")
|
|
else()
|
|
set(SOFTBUS_HAS_ZMQ OFF)
|
|
message(WARNING "ZeroMQ not found; set SOFTBUS_WITH_ZMQ=OFF or install libzmq")
|
|
endif()
|
|
else()
|
|
set(SOFTBUS_HAS_ZMQ OFF)
|
|
endif()
|
|
|
|
# open62541 (optional until daemon links it)
|
|
option(SOFTBUS_WITH_OPCUA "Enable OPC UA server in daemon" ON)
|
|
|
|
function(softbus_apply_platform_libs target)
|
|
target_link_libraries(${target} PRIVATE Threads::Threads)
|
|
if(WIN32)
|
|
target_link_libraries(${target} PRIVATE ws2_32 wsock32)
|
|
endif()
|
|
if(MINGW)
|
|
target_compile_options(${target} PRIVATE -fno-stack-protector)
|
|
target_link_options(${target} PRIVATE -fno-stack-protector)
|
|
endif()
|
|
endfunction()
|
|
|
|
function(softbus_apply_zmq target)
|
|
if(SOFTBUS_HAS_ZMQ)
|
|
target_compile_definitions(${target} PRIVATE SOFTBUS_HAS_ZMQ=1)
|
|
target_include_directories(${target} PRIVATE ${ZMQ_INCLUDE_DIRS})
|
|
target_link_libraries(${target} PRIVATE ${ZMQ_LIBRARIES})
|
|
else()
|
|
target_compile_definitions(${target} PRIVATE SOFTBUS_HAS_ZMQ=0)
|
|
endif()
|
|
endfunction()
|
|
|
|
function(softbus_apply_dbus target)
|
|
if(SOFTBUS_HAS_DBUS)
|
|
target_compile_definitions(${target} PRIVATE SOFTBUS_HAS_DBUS=1)
|
|
target_include_directories(${target} PRIVATE ${DBUS_INCLUDE_DIRS})
|
|
target_link_libraries(${target} PRIVATE ${DBUS_LIBRARIES})
|
|
else()
|
|
target_compile_definitions(${target} PRIVATE SOFTBUS_HAS_DBUS=0)
|
|
endif()
|
|
endfunction()
|
|
|
|
function(softbus_apply_udev target)
|
|
if(SOFTBUS_HAS_UDEV)
|
|
target_compile_definitions(${target} PRIVATE SOFTBUS_HAS_UDEV=1)
|
|
target_link_libraries(${target} PRIVATE ${UDEV_LIB})
|
|
else()
|
|
target_compile_definitions(${target} PRIVATE SOFTBUS_HAS_UDEV=0)
|
|
endif()
|
|
endfunction()
|