From c5c8de8372ae67b7e5e4fe192905497d2255cb7a Mon Sep 17 00:00:00 2001 From: Reinder Feenstra Date: Tue, 30 Aug 2022 00:09:26 +0200 Subject: [PATCH] linux: use system provided boost library --- .github/workflows/build.yml | 2 +- server/CMakeLists.txt | 75 +++++++++++++++++++++++-------------- 2 files changed, 48 insertions(+), 29 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index de8c3b1b..8f5b355b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -235,7 +235,7 @@ jobs: # Ubuntu only: - name: Install packages if: startswith(matrix.config.os, 'ubuntu') - run: sudo apt install liblua5.3-dev lcov libarchive-dev clang-tidy + run: sudo apt install libboost-program-options-dev liblua5.3-dev lcov libarchive-dev clang-tidy # MacOS only: - name: Install brew packages diff --git a/server/CMakeLists.txt b/server/CMakeLists.txt index 8145444c..51515c65 100644 --- a/server/CMakeLists.txt +++ b/server/CMakeLists.txt @@ -13,21 +13,6 @@ if(MSVC) add_compile_options(/W3) else() add_compile_options(-Wall -Wextra -Wpedantic -Wshadow -Werror) - - set_source_files_properties( - thirdparty/boost/libs/program_options/src/cmdline.cpp - thirdparty/boost/libs/program_options/src/config_file.cpp - thirdparty/boost/libs/program_options/src/convert.cpp - thirdparty/boost/libs/program_options/src/options_description.cpp - thirdparty/boost/libs/program_options/src/parsers.cpp - thirdparty/boost/libs/program_options/src/positional_options.cpp - thirdparty/boost/libs/program_options/src/split.cpp - thirdparty/boost/libs/program_options/src/utf8_codecvt_facet.cpp - thirdparty/boost/libs/program_options/src/value_semantic.cpp - thirdparty/boost/libs/program_options/src/variables_map.cpp - thirdparty/boost/libs/program_options/src/winmain.cpp - PROPERTIES - COMPILE_FLAGS -Wno-shadow) endif() if(NOT DISABLE_CLANG_TIDY) @@ -37,13 +22,6 @@ endif() add_executable(traintastic-server src/main.cpp src/options.hpp) add_executable(traintastic-server-test test/main.cpp) -add_definitions( - -DBOOST_ALL_NO_LIB - -DBOOST_ERROR_CODE_HEADER_ONLY - -DBOOST_CHRONO_HEADER_ONLY - -DBOOST_ASIO_HEADER_ONLY - -DBOOST_SYSTEM_NO_DEPRECATED) - set_target_properties(traintastic-server PROPERTIES CXX_STANDARD 17) set_target_properties(traintastic-server-test PROPERTIES CXX_STANDARD 17) @@ -53,8 +31,7 @@ target_include_directories(traintastic-server PRIVATE target_include_directories(traintastic-server SYSTEM PRIVATE ../shared/thirdparty - thirdparty - thirdparty/boost) + thirdparty) target_include_directories(traintastic-server-test PRIVATE ${CMAKE_CURRENT_BINARY_DIR} @@ -62,8 +39,7 @@ target_include_directories(traintastic-server-test PRIVATE target_include_directories(traintastic-server-test SYSTEM PRIVATE ../shared/thirdparty - thirdparty - thirdparty/boost) + thirdparty) file(GLOB SOURCES "src/board/*.hpp" @@ -154,8 +130,7 @@ file(GLOB SOURCES "src/world/*.hpp" "src/world/*.cpp" "../shared/src/traintastic/locale/locale.cpp" - "../shared/src/traintastic/utils/standardpaths.cpp" - "thirdparty/boost/libs/program_options/src/*.cpp") + "../shared/src/traintastic/utils/standardpaths.cpp") file(GLOB TEST_SOURCES "test/board/*.cpp" @@ -165,6 +140,10 @@ file(GLOB TEST_SOURCES ### PLATFORM ### +if(UNIX AND NOT APPLE) + set(LINUX TRUE) +endif() + if(UNIX) file(GLOB SOURCES_UNIX "src/os/unix/*.hpp" "src/os/unix/*.cpp") list(APPEND SOURCES ${SOURCES_UNIX}) @@ -197,6 +176,46 @@ endif() ### LIBRARIES ### +# boost +if(LINUX) + find_package(Boost 1.71 REQUIRED COMPONENTS program_options) + + target_include_directories(traintastic-server SYSTEM PRIVATE ${Boost_INCLUDE_DIRS}) + target_link_libraries(traintastic-server PRIVATE ${Boost_LIBRARIES}) + target_include_directories(traintastic-server-test SYSTEM PRIVATE ${Boost_INCLUDE_DIRS}) + target_link_libraries(traintastic-server-test PRIVATE ${Boost_LIBRARIES}) +else() + add_definitions( + -DBOOST_ALL_NO_LIB + -DBOOST_ERROR_CODE_HEADER_ONLY + -DBOOST_CHRONO_HEADER_ONLY + -DBOOST_ASIO_HEADER_ONLY + -DBOOST_SYSTEM_NO_DEPRECATED) + + if(NOT MSVC) + set_source_files_properties( + thirdparty/boost/libs/program_options/src/cmdline.cpp + thirdparty/boost/libs/program_options/src/config_file.cpp + thirdparty/boost/libs/program_options/src/convert.cpp + thirdparty/boost/libs/program_options/src/options_description.cpp + thirdparty/boost/libs/program_options/src/parsers.cpp + thirdparty/boost/libs/program_options/src/positional_options.cpp + thirdparty/boost/libs/program_options/src/split.cpp + thirdparty/boost/libs/program_options/src/utf8_codecvt_facet.cpp + thirdparty/boost/libs/program_options/src/value_semantic.cpp + thirdparty/boost/libs/program_options/src/variables_map.cpp + thirdparty/boost/libs/program_options/src/winmain.cpp + PROPERTIES + COMPILE_FLAGS -Wno-shadow) + endif() + + target_include_directories(traintastic-server SYSTEM PRIVATE thirdparty/boost) + target_include_directories(traintastic-server-test SYSTEM PRIVATE thirdparty/boost) + + file(GLOB SOURCES_BOOST "thirdparty/boost/libs/program_options/src/*.cpp") + list(APPEND SOURCES ${SOURCES_BOOST}) +endif() + # libarchive if(WIN32) set(LibArchive_INCLUDE_DIRS "thirdparty/libarchive/include")