Integrate shared C transport with desktop and Android frontends, add radio probes and detailed Windows diagnostics, and fix GUI build dependencies and early configuration startup errors.
61 lines
3.2 KiB
CMake
61 lines
3.2 KiB
CMake
cmake_minimum_required(VERSION 3.16)
|
|
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
|
|
project(vibechat_ble LANGUAGES C CXX)
|
|
enable_testing()
|
|
set(CMAKE_C_STANDARD 99)
|
|
set(BLE_LIB "${CMAKE_CURRENT_SOURCE_DIR}/..")
|
|
add_library(uasync STATIC ${BLE_LIB}/u_async.c ${BLE_LIB}/ll_queue.c ${BLE_LIB}/timeout_heap.c
|
|
${BLE_LIB}/memory_pool.c ${BLE_LIB}/mem.c ${BLE_LIB}/debug_config.c
|
|
${BLE_LIB}/platform_compat.c ${BLE_LIB}/socket_compat.c)
|
|
target_include_directories(uasync PUBLIC "${BLE_LIB}")
|
|
if(WIN32)
|
|
target_link_libraries(uasync PUBLIC ws2_32 iphlpapi)
|
|
else()
|
|
target_link_libraries(uasync PUBLIC pthread m)
|
|
endif()
|
|
endif()
|
|
add_library(vibechat_ble_core OBJECT ble_transport.c ble_identity.c)
|
|
target_link_libraries(vibechat_ble_core PUBLIC uasync)
|
|
target_include_directories(vibechat_ble_core PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
|
|
set_target_properties(vibechat_ble_core PROPERTIES AUTOMOC OFF)
|
|
if(WIN32)
|
|
add_library(vibechat_ble STATIC ble_winrt.cpp)
|
|
target_compile_features(vibechat_ble PRIVATE cxx_std_20)
|
|
find_path(BLE_WINRT_INCLUDE winrt/Windows.Devices.Bluetooth.h REQUIRED)
|
|
target_include_directories(vibechat_ble PRIVATE "${BLE_WINRT_INCLUDE}")
|
|
target_link_libraries(vibechat_ble PRIVATE windowsapp)
|
|
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
find_package(PkgConfig REQUIRED)
|
|
pkg_check_modules(BLE_SYSTEMD REQUIRED IMPORTED_TARGET libsystemd)
|
|
add_library(vibechat_ble STATIC ble_bluez.c)
|
|
target_link_libraries(vibechat_ble PRIVATE PkgConfig::BLE_SYSTEMD)
|
|
else()
|
|
message(FATAL_ERROR "BLE backend supports Linux and Windows")
|
|
endif()
|
|
target_link_libraries(vibechat_ble PUBLIC vibechat_ble_core)
|
|
set_target_properties(vibechat_ble PROPERTIES AUTOMOC OFF)
|
|
add_executable(test_ble_transport tests/test_ble_transport.c)
|
|
target_link_libraries(test_ble_transport PRIVATE vibechat_ble_core)
|
|
set_target_properties(test_ble_transport PROPERTIES AUTOMOC OFF)
|
|
add_test(NAME test_ble_transport COMMAND test_ble_transport)
|
|
set_tests_properties(test_ble_transport PROPERTIES TIMEOUT 30)
|
|
add_executable(ble_probe tests/ble_probe.c)
|
|
target_link_libraries(ble_probe PRIVATE vibechat_ble)
|
|
set_target_properties(ble_probe PROPERTIES AUTOMOC OFF)
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
find_program(BLE_DBUS_RUN_SESSION dbus-run-session REQUIRED)
|
|
add_executable(test_ble_bluez tests/test_ble_bluez.c)
|
|
target_link_libraries(test_ble_bluez PRIVATE vibechat_ble PkgConfig::BLE_SYSTEMD)
|
|
set_target_properties(test_ble_bluez PROPERTIES AUTOMOC OFF)
|
|
add_test(NAME test_ble_bluez COMMAND "${BLE_DBUS_RUN_SESSION}" -- $<TARGET_FILE:test_ble_bluez>)
|
|
set_tests_properties(test_ble_bluez PROPERTIES TIMEOUT 30)
|
|
endif()
|
|
add_executable(ble_peer_probe tests/ble_peer_probe.c)
|
|
target_link_libraries(ble_peer_probe PRIVATE vibechat_ble)
|
|
set_target_properties(ble_peer_probe PROPERTIES AUTOMOC OFF)
|
|
add_executable(test_ble_identity tests/test_ble_identity.c ble_identity.c)
|
|
target_link_libraries(test_ble_identity PRIVATE uasync)
|
|
target_include_directories(test_ble_identity PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}")
|
|
set_target_properties(test_ble_identity PROPERTIES AUTOMOC OFF)
|
|
add_test(NAME test_ble_identity COMMAND test_ble_identity)
|