142 lines
4.6 KiB
CMake
142 lines
4.6 KiB
CMake
# SPDX-License-Identifier: MIT
|
|
|
|
cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
|
|
get_filename_component(basename ${CMAKE_CURRENT_SOURCE_DIR} NAME)
|
|
|
|
project(test_${basename}
|
|
VERSION 1.0.0
|
|
LANGUAGES C)
|
|
|
|
include(CMakePrintHelpers)
|
|
|
|
find_package(Threads)
|
|
find_package(libwebsockets CONFIG REQUIRED)
|
|
include_directories(${LIBWEBSOCKETS_INCLUDE_DIRS})
|
|
|
|
string(REGEX REPLACE
|
|
"/test/bacnet/[a-z0-9A-Z_/-]*$"
|
|
"/src"
|
|
SRC_DIR
|
|
${CMAKE_CURRENT_SOURCE_DIR})
|
|
string(REGEX REPLACE
|
|
"/test/bacnet/[a-z0-9A-Z_/-]*$"
|
|
"/ports"
|
|
PORTS_DIR
|
|
${CMAKE_CURRENT_SOURCE_DIR})
|
|
string(REGEX REPLACE
|
|
"/test/bacnet/[a-z0-9A-Z_/-]*$"
|
|
"/test"
|
|
TST_DIR
|
|
${CMAKE_CURRENT_SOURCE_DIR})
|
|
set(ZTST_DIR "${TST_DIR}/ztest/src")
|
|
|
|
add_compile_definitions(
|
|
BACNET_BIG_ENDIAN=0
|
|
CONFIG_ZTEST=1
|
|
BACDL_BSC
|
|
BSC_CONF_CLIENT_CONNECTIONS_NUM=5
|
|
BSC_CONF_SERVER_HUB_CONNECTIONS_MAX_NUM=4
|
|
BSC_CONF_SERVER_DIRECT_CONNECTIONS_MAX_NUM=4
|
|
BSC_CONF_WSURL_MAX_LEN=128
|
|
BSC_CONF_WEBSOCKET_ERR_DESC_STR_MAX_LEN=128
|
|
BSC_CONF_WEBSOCKET_SERVERS_NUM=4
|
|
)
|
|
|
|
include_directories(
|
|
${SRC_DIR}
|
|
${TST_DIR}/ztest/include
|
|
${LIBWEBSOCKETS_INCLUDE_DIRS}
|
|
)
|
|
|
|
if(ZEPHYR_BASE)
|
|
message(FATAL_ERROR "ZEPHYR_BASE env variable defined. Use zephyr/CMakeLists.txt for Zephyr build")
|
|
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
|
message(STATUS "Websockets test: building for linux")
|
|
set(BACNET_PORT_DIRECTORY_PATH ${CMAKE_CURRENT_LIST_DIR}/ports/linux)
|
|
add_compile_definitions(BACNET_PORT=linux)
|
|
find_package(OpenSSL)
|
|
find_package(PkgConfig)
|
|
pkg_check_modules(LIB_WEBSOCKETS REQUIRED libwebsockets)
|
|
add_executable(${PROJECT_NAME}
|
|
${PORTS_DIR}/linux/websocket-cli.c
|
|
${PORTS_DIR}/linux/websocket-srv.c
|
|
${PORTS_DIR}/linux/websocket-global.c
|
|
${PORTS_DIR}/linux/bsc-event.c
|
|
${SRC_DIR}/bacnet/basic/sys/debug.c
|
|
# Test and test library files
|
|
./src/main.c
|
|
${ZTST_DIR}/ztest_mock.c
|
|
${ZTST_DIR}/ztest.c
|
|
)
|
|
target_link_libraries(${PROJECT_NAME}
|
|
${LIBWEBSOCKETS_LIBRARIES}
|
|
)
|
|
elseif(WIN32)
|
|
message(STATUS "Websockets test: building for win32")
|
|
set(BACNET_PORT_DIRECTORY_PATH ${CMAKE_CURRENT_LIST_DIR}/ports/win32)
|
|
add_compile_definitions(BACNET_PORT=win32)
|
|
find_package(OpenSSL)
|
|
add_executable(${PROJECT_NAME}
|
|
${PORTS_DIR}/win32/websocket-cli.c
|
|
${PORTS_DIR}/win32/websocket-srv.c
|
|
${PORTS_DIR}/win32/websocket-global.c
|
|
${PORTS_DIR}/win32/bsc-event.c
|
|
${SRC_DIR}/bacnet/basic/sys/debug.c
|
|
# Test and test library files
|
|
./src/main.c
|
|
${ZTST_DIR}/ztest_mock.c
|
|
${ZTST_DIR}/ztest.c
|
|
)
|
|
|
|
# basically if you use vcpkg you should just add ${LIBWEBSOCKETS_LIBRARIES}
|
|
# into target_link_libraries() but for some reason it does not work as expected
|
|
# so that's why libs have to be hardcoded as workaround
|
|
|
|
target_link_libraries(${PROJECT_NAME}
|
|
C:\\vcpkg\\installed\\x64-windows-custom\\lib\\websockets.lib
|
|
C:\\vcpkg\\installed\\x64-windows-custom\\lib\\libssl.lib
|
|
C:\\vcpkg\\installed\\x64-windows-custom\\lib\\libcrypto.lib
|
|
C:\\vcpkg\\installed\\x64-windows-custom\\lib\\pthreadVC3.lib
|
|
ws2_32.lib
|
|
userenv.lib
|
|
psapi.lib
|
|
iphlpapi.lib
|
|
crypt32.lib
|
|
C:\\vcpkg\\installed\\x64-windows-custom\\lib\\zlib.lib
|
|
C:\\vcpkg\\installed\\x64-windows-custom\\lib\\uv.lib
|
|
kernel32.lib
|
|
user32.lib
|
|
gdi32.lib
|
|
winspool.lib
|
|
shell32.lib
|
|
ole32.lib
|
|
oleaut32.lib
|
|
uuid.lib
|
|
comdlg32.lib
|
|
advapi32.lib
|
|
)
|
|
elseif(APPLE)
|
|
message(STATUS "Websockets test: building for APPLE")
|
|
set(BACNET_PORT_DIRECTORY_PATH ${CMAKE_CURRENT_LIST_DIR}/ports/bsd)
|
|
add_compile_definitions(BACNET_PORT=bsd)
|
|
execute_process (
|
|
COMMAND bash -c "brew --prefix openssl"
|
|
OUTPUT_VARIABLE OPEN_SSL_DIR OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
include_directories(${OPEN_SSL_DIR}/include)
|
|
add_executable(${PROJECT_NAME}
|
|
${PORTS_DIR}/bsd/websocket-cli.c
|
|
${PORTS_DIR}/bsd/websocket-srv.c
|
|
${PORTS_DIR}/bsd/websocket-global.c
|
|
${PORTS_DIR}/bsd/bsc-event.c
|
|
${SRC_DIR}/bacnet/basic/sys/debug.c
|
|
# Test and test library files
|
|
./src/main.c
|
|
${ZTST_DIR}/ztest_mock.c
|
|
${ZTST_DIR}/ztest.c
|
|
)
|
|
target_link_libraries(${PROJECT_NAME}
|
|
${LIBWEBSOCKETS_LIBRARIES}
|
|
)
|
|
endif()
|