From 8c3c229c7a4fd8d1371418e46f99e49bccd1f7d1 Mon Sep 17 00:00:00 2001 From: Mooneer Salem Date: Sun, 21 May 2023 17:00:27 -0400 Subject: [PATCH] Allow use of external Socket.io library. --- CMakeLists.txt | 16 +++++++++++++++ cmake/BuildSocketIo.cmake | 39 ++++++++++++++++++++++++++++++++++++ src/reporting/CMakeLists.txt | 39 +----------------------------------- 3 files changed, 56 insertions(+), 38 deletions(-) create mode 100644 cmake/BuildSocketIo.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 5d25d5e1..5a3b7cee 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -392,6 +392,22 @@ else(HAMLIB_LIBRARY AND HAMLIB_INCLUDE_DIR) endif(HAMLIB_LIBRARY AND HAMLIB_INCLUDE_DIR) +# sioclient library +message(STATUS "Looking for sioclient...") +find_path(SIOCLIENT_INCLUDE_DIR sio_client.h) +find_library(SIOCLIENT_LIBRARY sioclient) +message(STATUS " Socket.io library: ${SIOCLIENT_LIBRARY}") +message(STATUS " Socket.io headers: ${SIOCLIENT_INCLUDE_DIR}") +if(SIOCLIENT_LIBRARY AND SIOCLIENT_INCLUDE_DIR) + message(STATUS "Socket.io library found.") + include_directories(${SIOCLIENT_INCLUDE_DIR}) + list(APPEND FREEDV_LINK_LIBS ${SIOCLIENT_LIBRARY}) +else(SIOCLIENT_LIBRARY AND SIOCLIENT_INCLUDE_DIR) + message(STATUS "Using static sioclient build") + include(cmake/BuildSocketIo.cmake) +endif(SIOCLIENT_LIBRARY AND SIOCLIENT_INCLUDE_DIR) + + # # Samplerate Library # diff --git a/cmake/BuildSocketIo.cmake b/cmake/BuildSocketIo.cmake new file mode 100644 index 00000000..e98caf39 --- /dev/null +++ b/cmake/BuildSocketIo.cmake @@ -0,0 +1,39 @@ +set(SIO_CMAKE_ARGS -DBUILD_SHARED_LIBS=OFF) +if(CMAKE_CROSSCOMPILING) + set(SIO_CMAKE_ARGS ${SIO_CMAKE_ARGS} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}) +endif() + +include(ExternalProject) +if(APPLE) + ExternalProject_Add(build_sioclient + SOURCE_DIR sioclient_src + BINARY_DIR sioclient_build + GIT_REPOSITORY https://github.com/socketio/socket.io-client-cpp.git + GIT_TAG master + CMAKE_ARGS ${SIO_CMAKE_ARGS} + CMAKE_CACHE_ARGS -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${CMAKE_OSX_DEPLOYMENT_TARGET} -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} + INSTALL_COMMAND "" + ) +else(APPLE) + ExternalProject_Add(build_sioclient + SOURCE_DIR sioclient_src + BINARY_DIR sioclient_build + GIT_REPOSITORY https://github.com/socketio/socket.io-client-cpp.git + GIT_TAG master + CMAKE_ARGS ${SIO_CMAKE_ARGS} + INSTALL_COMMAND "" + ) +endif(APPLE) + +ExternalProject_Get_Property(build_sioclient BINARY_DIR) +ExternalProject_Get_Property(build_sioclient SOURCE_DIR) +add_library(sioclient STATIC IMPORTED) +include_directories(${SOURCE_DIR}/src) +list(APPEND FREEDV_LINK_LIBS sioclient) + +add_dependencies(sioclient build_sioclient) + +set_target_properties(sioclient PROPERTIES + IMPORTED_LOCATION "${BINARY_DIR}/libsioclient${CMAKE_STATIC_LIBRARY_SUFFIX}" + IMPORTED_IMPLIB "${BINARY_DIR}/libsioclient${CMAKE_IMPORT_LIBRARY_SUFFIX}" +) diff --git a/src/reporting/CMakeLists.txt b/src/reporting/CMakeLists.txt index 3f99e905..48b3465a 100644 --- a/src/reporting/CMakeLists.txt +++ b/src/reporting/CMakeLists.txt @@ -1,38 +1,3 @@ -set(SIO_CMAKE_ARGS -DBUILD_SHARED_LIBS=OFF) -if(CMAKE_CROSSCOMPILING) - set(SIO_CMAKE_ARGS ${SIO_CMAKE_ARGS} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}) -endif() - -include(ExternalProject) -if(APPLE) - ExternalProject_Add(build_sioclient - SOURCE_DIR sioclient_src - BINARY_DIR sioclient_build - GIT_REPOSITORY https://github.com/socketio/socket.io-client-cpp.git - GIT_TAG master - CMAKE_ARGS ${SIO_CMAKE_ARGS} - CMAKE_CACHE_ARGS -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${CMAKE_OSX_DEPLOYMENT_TARGET} -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} - INSTALL_COMMAND "" - ) -else(APPLE) - ExternalProject_Add(build_sioclient - SOURCE_DIR sioclient_src - BINARY_DIR sioclient_build - GIT_REPOSITORY https://github.com/socketio/socket.io-client-cpp.git - GIT_TAG master - CMAKE_ARGS ${SIO_CMAKE_ARGS} - INSTALL_COMMAND "" - ) -endif(APPLE) - -ExternalProject_Get_Property(build_sioclient BINARY_DIR) -ExternalProject_Get_Property(build_sioclient SOURCE_DIR) -add_library(sioclient STATIC IMPORTED) - -set_target_properties(sioclient PROPERTIES - IMPORTED_LOCATION "${BINARY_DIR}/libsioclient${CMAKE_STATIC_LIBRARY_SUFFIX}" - IMPORTED_IMPLIB "${BINARY_DIR}/libsioclient${CMAKE_IMPORT_LIBRARY_SUFFIX}" -) add_library(fdv_reporting STATIC pskreporter.cpp @@ -41,6 +6,4 @@ add_library(fdv_reporting STATIC FreeDVReporter.h ) -add_dependencies(fdv_reporting build_sioclient) -target_link_libraries(fdv_reporting PUBLIC sioclient) -target_include_directories(fdv_reporting PUBLIC ${SOURCE_DIR}/src) +add_dependencies(fdv_reporting sioclient)