first commit
This commit is contained in:
23
cmake/SoftbusPackage.cmake
Normal file
23
cmake/SoftbusPackage.cmake
Normal file
@@ -0,0 +1,23 @@
|
||||
# ROS-like package registration helper
|
||||
|
||||
macro(softbus_package name)
|
||||
set(SOFTBUS_CURRENT_PACKAGE ${name})
|
||||
endmacro()
|
||||
|
||||
function(softbus_export_include target include_dir)
|
||||
target_include_directories(${target}
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${include_dir}>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
)
|
||||
endfunction()
|
||||
|
||||
function(softbus_add_plugin target)
|
||||
set_target_properties(${target} PROPERTIES
|
||||
PREFIX ""
|
||||
OUTPUT_NAME ${target}
|
||||
)
|
||||
if(WIN32)
|
||||
target_compile_definitions(${target} PRIVATE SOFTBUS_PLUGIN_EXPORTS)
|
||||
endif()
|
||||
endfunction()
|
||||
106
cmake/SoftbusPlatform.cmake
Normal file
106
cmake/SoftbusPlatform.cmake
Normal file
@@ -0,0 +1,106 @@
|
||||
# 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()
|
||||
79
cmake/SoftbusThirdParty.cmake
Normal file
79
cmake/SoftbusThirdParty.cmake
Normal file
@@ -0,0 +1,79 @@
|
||||
include(FetchContent)
|
||||
|
||||
# nlohmann_json
|
||||
FetchContent_Declare(
|
||||
nlohmann_json
|
||||
GIT_REPOSITORY https://github.com/nlohmann/json.git
|
||||
GIT_TAG v3.11.3
|
||||
GIT_SHALLOW TRUE
|
||||
)
|
||||
FetchContent_MakeAvailable(nlohmann_json)
|
||||
|
||||
# standalone asio
|
||||
FetchContent_Declare(
|
||||
asio
|
||||
GIT_REPOSITORY https://github.com/chriskohlhoff/asio.git
|
||||
GIT_TAG asio-1-30-2
|
||||
GIT_SHALLOW TRUE
|
||||
)
|
||||
FetchContent_GetProperties(asio)
|
||||
if(NOT asio_POPULATED)
|
||||
FetchContent_Populate(asio)
|
||||
add_library(asio INTERFACE)
|
||||
target_include_directories(asio INTERFACE ${asio_SOURCE_DIR}/asio/include)
|
||||
target_compile_definitions(asio INTERFACE ASIO_STANDALONE ASIO_NO_DEPRECATED)
|
||||
if(WIN32)
|
||||
target_compile_definitions(asio INTERFACE _WIN32_WINNT=0x0601)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# open62541
|
||||
if(SOFTBUS_WITH_OPCUA)
|
||||
set(UA_ENABLE_AMALGAMATION OFF CACHE BOOL "" FORCE)
|
||||
|
||||
if(MINGW)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-stack-protector")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-stack-protector")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fno-stack-protector")
|
||||
endif()
|
||||
|
||||
set(_softbus_saved_build_shared ${BUILD_SHARED_LIBS})
|
||||
set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
|
||||
|
||||
set(UA_ENABLE_SUBSCRIPTIONS ON CACHE BOOL "" FORCE)
|
||||
set(UA_ENABLE_METHODCALLS ON CACHE BOOL "" FORCE)
|
||||
set(UA_ENABLE_DISCOVERY ON CACHE BOOL "" FORCE)
|
||||
set(UA_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
|
||||
set(UA_BUILD_UNIT_TESTS OFF CACHE BOOL "" FORCE)
|
||||
set(UA_ENABLE_ENCRYPTION OFF CACHE BOOL "" FORCE)
|
||||
|
||||
FetchContent_Declare(
|
||||
open62541
|
||||
GIT_REPOSITORY https://github.com/open62541/open62541.git
|
||||
GIT_TAG v1.4.6
|
||||
GIT_SHALLOW TRUE
|
||||
)
|
||||
FetchContent_MakeAvailable(open62541)
|
||||
set(BUILD_SHARED_LIBS ${_softbus_saved_build_shared} CACHE BOOL "" FORCE)
|
||||
|
||||
if(MINGW AND TARGET open62541)
|
||||
set_target_properties(open62541 PROPERTIES
|
||||
INTERFACE_LINK_LIBRARIES "ws2_32;iphlpapi"
|
||||
)
|
||||
target_compile_options(open62541 PRIVATE -fno-stack-protector)
|
||||
target_link_options(open62541 PRIVATE -fno-stack-protector)
|
||||
endif()
|
||||
|
||||
set(SOFTBUS_HAS_OPCUA ON)
|
||||
else()
|
||||
set(SOFTBUS_HAS_OPCUA OFF)
|
||||
endif()
|
||||
|
||||
function(softbus_apply_open62541 target)
|
||||
if(SOFTBUS_HAS_OPCUA)
|
||||
target_compile_definitions(${target} PRIVATE SOFTBUS_HAS_OPCUA=1)
|
||||
target_link_libraries(${target} PRIVATE open62541)
|
||||
else()
|
||||
target_compile_definitions(${target} PRIVATE SOFTBUS_HAS_OPCUA=0)
|
||||
endif()
|
||||
endfunction()
|
||||
Reference in New Issue
Block a user