Files
softbus_OPC/cmake/SoftbusPlatform.cmake
flowerstonezl 70f675a48b first commit
2026-06-09 16:50:28 +08:00

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()