diff --git a/tests/ipdemo/CMakeLists.txt b/tests/ipdemo/CMakeLists.txt index f0d8966..2a8db47 100644 --- a/tests/ipdemo/CMakeLists.txt +++ b/tests/ipdemo/CMakeLists.txt @@ -14,57 +14,55 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_EXE_LINKER_FLAGS "-static") set(CMAKE_FIND_LIBRARY_SUFFIXES ".a") set(BUILD_SHARED_LIBS OFF) +set(CMAKE_PREFIX_PATH /usr/local) -# Configure version.hpp and create executable +# Create executable +file(GLOB_RECURSE SOURCES "src/*.cpp") +add_executable(${PROJECT_NAME} ${SOURCES}) + +# Configure version.hpp configure_file("src/version.hpp.in" "src/autogen/version.hpp" @ONLY) + +# Pre-build script add_custom_target(run_prebuild_script ALL COMMAND bash ${CMAKE_CURRENT_SOURCE_DIR}/cmake_prebuild.sh WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) - -file(GLOB_RECURSE SOURCES "src/*.cpp") -add_executable(${PROJECT_NAME} ${SOURCES}) add_dependencies(${PROJECT_NAME} run_prebuild_script) + +# Include directories target_include_directories(${PROJECT_NAME} PRIVATE - ${CMAKE_CURRENT_BINARY_DIR}/src/autogen src) + ${CMAKE_CURRENT_BINARY_DIR}/src/autogen + src) + +# Helper function to create OpenSSL targets for cross-compilation +function(ensure_openssl_targets) + if(NOT TARGET OpenSSL::SSL) + find_library(OPENSSL_SSL_LIB NAMES ssl + PATHS /usr/local/lib /usr/local/lib64 + NO_DEFAULT_PATH) + find_library(OPENSSL_CRYPTO_LIB NAMES crypto + PATHS /usr/local/lib /usr/local/lib64 + NO_DEFAULT_PATH) + + if(NOT OPENSSL_SSL_LIB OR NOT OPENSSL_CRYPTO_LIB) + message(FATAL_ERROR "OpenSSL libraries not found") + endif() + + add_library(OpenSSL::Crypto STATIC IMPORTED) + set_target_properties(OpenSSL::Crypto PROPERTIES + IMPORTED_LOCATION ${OPENSSL_CRYPTO_LIB} + INTERFACE_INCLUDE_DIRECTORIES /usr/local/include) + + add_library(OpenSSL::SSL STATIC IMPORTED) + set_target_properties(OpenSSL::SSL PROPERTIES + IMPORTED_LOCATION ${OPENSSL_SSL_LIB} + INTERFACE_INCLUDE_DIRECTORIES /usr/local/include + INTERFACE_LINK_LIBRARIES OpenSSL::Crypto) + endif() +endfunction() # Find packages -set(CMAKE_PREFIX_PATH /usr/local) - -# Find OpenSSL libraries in multiple possible locations -find_library(OPENSSL_SSL_LIB - NAMES ssl libssl libssl.a - PATHS /usr/local/lib /usr/local/lib64 /usr/lib /usr/lib64 - NO_DEFAULT_PATH -) - -find_library(OPENSSL_CRYPTO_LIB - NAMES crypto libcrypto libcrypto.a - PATHS /usr/local/lib /usr/local/lib64 /usr/lib /usr/lib64 - NO_DEFAULT_PATH -) - -if(NOT OPENSSL_SSL_LIB OR NOT OPENSSL_CRYPTO_LIB) - message(FATAL_ERROR "Could not find OpenSSL libraries. SSL: ${OPENSSL_SSL_LIB}, Crypto: ${OPENSSL_CRYPTO_LIB}") -endif() - -# Manually create OpenSSL targets for cross-compilation -if(NOT TARGET OpenSSL::Crypto) - add_library(OpenSSL::Crypto STATIC IMPORTED) - set_target_properties(OpenSSL::Crypto PROPERTIES - IMPORTED_LOCATION ${OPENSSL_CRYPTO_LIB} - INTERFACE_INCLUDE_DIRECTORIES /usr/local/include - ) -endif() - -if(NOT TARGET OpenSSL::SSL) - add_library(OpenSSL::SSL STATIC IMPORTED) - set_target_properties(OpenSSL::SSL PROPERTIES - IMPORTED_LOCATION ${OPENSSL_SSL_LIB} - INTERFACE_INCLUDE_DIRECTORIES /usr/local/include - INTERFACE_LINK_LIBRARIES OpenSSL::Crypto - ) -endif() - +ensure_openssl_targets() find_package(Drogon CONFIG REQUIRED) find_package(nlohmann_json REQUIRED)