From fbee4175945f05223068856d0467f1b9f5b42efd Mon Sep 17 00:00:00 2001 From: Kilian Hofmann Date: Fri, 2 Sep 2022 19:41:26 +0200 Subject: [PATCH] IX own module --- CMakeLists.txt | 5 +- ixwebsocket/CMakeLists.txt | 99 ++++++++++++++++++++++++++++++++++++++ xplugin/CMakeLists.txt | 13 ++--- 3 files changed, 110 insertions(+), 7 deletions(-) create mode 100644 ixwebsocket/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index ec3f054..6047254 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.8) cmake_policy(SET CMP0068 NEW) -project(GermanAirlinesVA_GAConnector) +project(GermanAirlinesVA_GAConnector C CXX) set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED ON) @@ -12,6 +12,9 @@ set(PLUGIN_NAME GAConnector) option(DEBUG "Debug symbols" OFF) +add_subdirectory( + ixwebsocket +) add_subdirectory( xplugin ) diff --git a/ixwebsocket/CMakeLists.txt b/ixwebsocket/CMakeLists.txt new file mode 100644 index 0000000..fd5bfb4 --- /dev/null +++ b/ixwebsocket/CMakeLists.txt @@ -0,0 +1,99 @@ + +file(GLOB ixwebsocket CONFIGURE_DEPENDS ${CMAKE_SOURCE_DIR}/ixwebsocket/*.cpp) + +add_library(ixwebsocket SHARED + ${ixwebsocket} +) + +target_include_directories(ixwebsocket PRIVATE + ${CMAKE_SOURCE_DIR}/ixwebsocket/include +) + +set_target_properties(ixwebsocket PROPERTIES + PUBLIC_HEADER ${CMAKE_SOURCE_DIR}/ixwebsocket/include +) +target_compile_options(ixwebsocket PRIVATE + -Wall + -Wextra + -pedantic + #-fvisibility=hidden +) +if(DEBUG) + target_compile_options(ixwebsocket PRIVATE + -g + ) + target_link_options(ixwebsocket PRIVATE + -g + ) +else() + target_compile_options(ixwebsocket PRIVATE + -O2 + ) +endif() + +if(APPLE) + message("Building ixwebsocket for MacOSX Universal into ${PROJECT_BINARY_DIR}/${PLUGIN_NAME}/${BIT}") + + set_target_properties(ixwebsocket PROPERTIES + LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/Plugin/${PLUGIN_NAME} + BUILD_WITH_INSTALL_NAME_DIR TRUE + ) + + target_compile_options(ixwebsocket PRIVATE + #"SHELL:-arch i386" + "SHELL:-arch x86_64" + ) + target_link_options(ixwebsocket PRIVATE + #"SHELL:-arch i386" + "SHELL:-arch x86_64" + ) + target_link_libraries(ixwebsocket PRIVATE + "-framework Security" + ) +elseif(UNIX) + message("Building ixwebsocket for Linux ${BIT} into ${PROJECT_BINARY_DIR}/Plugin/${PLUGIN_NAME}/${BIT}") + + set_target_properties(ixwebsocket PROPERTIES + LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/Plugin/${PLUGIN_NAME}/${BIT} + ) + + target_compile_options(ixwebsocket PRIVATE + -nodefaultlibs + ) + if(BIT STREQUAL "32") + target_compile_options(ixwebsocket PRIVATE + -m32 + ) + target_link_options(ixwebsocket PRIVATE + -m32 + ) + endif() + target_link_libraries(ixwebsocket PRIVATE + crypto + pthread + ) +elseif(WIN32) + message("Building ixwebsocket for Windows ${BIT} into ${PROJECT_BINARY_DIR}/Plugin/${PLUGIN_NAME}/${BIT}") + + set_target_properties(ixwebsocket PROPERTIES + RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/Plugin/${PLUGIN_NAME}/${BIT} + ) + + if(DEBUG) + target_compile_options(ixwebsocket PRIVATE + -gcodeview + ) + target_link_options(ixwebsocket PRIVATE + -Wl,-pdb= + ) + endif() + target_link_options(ixwebsocket PRIVATE + -static-libgcc + -static-libstdc++ + ) + target_link_libraries(ixwebsocket PRIVATE + ws2_32.lib + ) +endif() + +add_library(ixwebsocket::ixwebsocket ALIAS ixwebsocket) diff --git a/xplugin/CMakeLists.txt b/xplugin/CMakeLists.txt index b27e2d4..c085c82 100644 --- a/xplugin/CMakeLists.txt +++ b/xplugin/CMakeLists.txt @@ -5,12 +5,10 @@ #) #Link to ssl(requires OpenSLL for macOS and Windows) -file(GLOB ixwebsocket CONFIGURE_DEPENDS ${CMAKE_SOURCE_DIR}/ixwebsocket/*.cpp) file(GLOB websocket CONFIGURE_DEPENDS ${CMAKE_SOURCE_DIR}/websocket/*.cpp) file(GLOB file CONFIGURE_DEPENDS ${CMAKE_SOURCE_DIR}/file/*.cpp) add_library(germanairlinesva_xplugin SHARED - ${ixwebsocket} ${websocket} ${file} makeRwysXP.cpp @@ -58,6 +56,7 @@ if(APPLE) set_target_properties(germanairlinesva_xplugin PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/Plugin/${PLUGIN_NAME} + INSTALL_RPATH "@loader_path" OUTPUT_NAME mac ) @@ -65,23 +64,23 @@ if(APPLE) APL ) target_compile_options(germanairlinesva_xplugin PRIVATE - "SHELL:-arch i386" + #"SHELL:-arch i386" "SHELL:-arch x86_64" ) target_link_options(germanairlinesva_xplugin PRIVATE - "SHELL:-arch i386" + #"SHELL:-arch i386" "SHELL:-arch x86_64" ) target_link_libraries(germanairlinesva_xplugin PRIVATE ${CMAKE_SOURCE_DIR}/XPSDK/Libraries/Mac/XPLM.framework/XPLM - "-framework Security" + ixwebsocket ) elseif(UNIX) message("Building for Linux ${BIT} into ${PROJECT_BINARY_DIR}/Plugin/${PLUGIN_NAME}/${BIT}") set_target_properties(germanairlinesva_xplugin PROPERTIES - NO_SONAME 1 LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/Plugin/${PLUGIN_NAME}/${BIT} + INSTALL_RPATH "\$ORIGIN" OUTPUT_NAME lin ) @@ -102,6 +101,7 @@ elseif(UNIX) target_link_libraries(germanairlinesva_xplugin PRIVATE crypto pthread + ixwebsocket ) elseif(WIN32) message("Building for Windows ${BIT} into ${PROJECT_BINARY_DIR}/Plugin/${PLUGIN_NAME}/${BIT}") @@ -129,6 +129,7 @@ elseif(WIN32) ) target_link_libraries(germanairlinesva_xplugin PRIVATE ws2_32.lib + ixwebsocket ) if(BIT STREQUAL "32") target_link_libraries(germanairlinesva_xplugin PRIVATE