From 9ce4c5a494c9dfa2ff2ca1d2fca30552132c4a5a Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Sun, 4 Aug 2024 10:30:49 -0500 Subject: [PATCH] updated build system --- cmake/libraries/backward_cpp.cmake | 7 ++++--- cmake/libraries/boost.cmake | 7 +++---- cmake/libraries/curl.cmake | 15 +++++---------- cmake/libraries/json.cmake | 12 ++++-------- cmake/libraries/libsodium.cmake | 16 +++++++++++----- cmake/libraries/openssl.cmake | 7 +++---- cmake/libraries/pugixml.cmake | 16 +++++----------- cmake/libraries/spdlog.cmake | 12 ++++-------- cmake/libraries/sqlite.cmake | 1 + cmake/libraries/stduuid.cmake | 12 ++++-------- cmake/libraries/winfsp.cmake | 8 ++------ docker/x86_64/mingw64 | 4 ++-- scripts/run_tests.sh | 6 +++++- 13 files changed, 53 insertions(+), 70 deletions(-) diff --git a/cmake/libraries/backward_cpp.cmake b/cmake/libraries/backward_cpp.cmake index 5e2fe93c..0b22e8ce 100644 --- a/cmake/libraries/backward_cpp.cmake +++ b/cmake/libraries/backward_cpp.cmake @@ -1,10 +1,11 @@ if(PROJECT_ENABLE_BACKWARD_CPP AND PROJECT_BUILD) if(PROJECT_IS_MINGW) - link_libraries(msvcr90) - add_definitions(-DPROJECT_ENABLE_BACKWARD_CPP) + + link_libraries(msvcr90) else() - link_libraries(bfd) add_definitions(-DBACKWARD_HAS_BFD) + + link_libraries(bfd) endif() endif() diff --git a/cmake/libraries/boost.cmake b/cmake/libraries/boost.cmake index cf26ce91..d4b09720 100644 --- a/cmake/libraries/boost.cmake +++ b/cmake/libraries/boost.cmake @@ -1,5 +1,3 @@ -set(Boost_USE_STATIC_LIBS ${PROJECT_STATIC_LINK}) - if(PROJECT_ENABLE_BOOST) if(PROJECT_ENABLE_LIBBITCOIN_SYSTEM) set(BOOST_MAJOR_VERSION ${BOOST2_MAJOR_VERSION}) @@ -18,6 +16,9 @@ if(PROJECT_ENABLE_BOOST) ) if(PROJECT_BUILD) + add_definitions(-DPROJECT_ENABLE_BOOST) + + set(Boost_USE_STATIC_LIBS ${PROJECT_STATIC_LINK}) find_package(Boost ${BOOST_MAJOR_VERSION}.${BOOST_MINOR_VERSION}.${BOOST_PATCH_VERSION} EXACT REQUIRED COMPONENTS @@ -38,8 +39,6 @@ if(PROJECT_ENABLE_BOOST) wserialization ) - add_definitions(-DPROJECT_ENABLE_BOOST) - include_directories(BEFORE SYSTEM ${Boost_INCLUDE_DIRS} ) diff --git a/cmake/libraries/curl.cmake b/cmake/libraries/curl.cmake index c2909a83..275fffbe 100644 --- a/cmake/libraries/curl.cmake +++ b/cmake/libraries/curl.cmake @@ -1,18 +1,13 @@ -set(CURL_USE_STATIC_LIBS ${PROJECT_STATIC_LINK}) - if(PROJECT_ENABLE_CURL) if(PROJECT_BUILD) - find_package(CURL ${CURL_VERSION} REQUIRED) - add_definitions(-DPROJECT_ENABLE_CURL) - include_directories(BEFORE SYSTEM - ${CURL_INCLUDE_DIRS} - ) + set(CURL_USE_STATIC_LIBS ${PROJECT_STATIC_LINK}) + find_package(CURL ${CURL_VERSION} REQUIRED) - link_libraries( - CURL::libcurl - ) + include_directories(BEFORE SYSTEM ${CURL_INCLUDE_DIRS}) + + link_libraries(CURL::libcurl) if (EXISTS ${PROJECT_DIST_DIR}/cacert.pem) file(REMOVE ${PROJECT_DIST_DIR}/cacert.pem) diff --git a/cmake/libraries/json.cmake b/cmake/libraries/json.cmake index bacfdeed..1648375f 100644 --- a/cmake/libraries/json.cmake +++ b/cmake/libraries/json.cmake @@ -1,17 +1,13 @@ if(PROJECT_ENABLE_JSON) if(PROJECT_BUILD) - find_package(nlohmann_json ${JSON_VERSION} REQUIRED) - add_definitions(-DPROJECT_ENABLE_JSON) + find_package(nlohmann_json ${JSON_VERSION} REQUIRED) + if(PROJECT_IS_MINGW AND PROJECT_IS_MINGW_UNIX) - include_directories(BEFORE SYSTEM - /mingw64/include/nlohmann - ) + include_directories(BEFORE SYSTEM /mingw64/include/nlohmann) else() - include_directories(BEFORE SYSTEM - ${PROJECT_EXTERNAL_BUILD_ROOT}/include/nlohmann - ) + include_directories(BEFORE SYSTEM ${PROJECT_EXTERNAL_BUILD_ROOT}/include/nlohmann) endif() elseif(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32) ExternalProject_Add(json_project diff --git a/cmake/libraries/libsodium.cmake b/cmake/libraries/libsodium.cmake index 853ce345..56b759a8 100644 --- a/cmake/libraries/libsodium.cmake +++ b/cmake/libraries/libsodium.cmake @@ -1,16 +1,22 @@ if(PROJECT_ENABLE_LIBSODIUM) if(PROJECT_BUILD) - pkg_check_modules(SODIUM libsodium=${LIBSODIUM_VERSION} REQUIRED) - add_definitions(-DPROJECT_ENABLE_LIBSODIUM) + pkg_check_modules(SODIUM libsodium=${LIBSODIUM_VERSION} REQUIRED) + include_directories(BEFORE SYSTEM ${SODIUM_INCLUDE_DIRS} ) - link_libraries( - ${SODIUM_LINK_LIBRARIES} - ) + if(PROJECT_BUILD_SHARED_LIBS) + link_libraries( + ${SODIUM_LINK_LIBRARIES} + ) + else() + link_libraries( + ${SODIUM_STATIC_LINK_LIBRARIES} + ) + endif() elseif(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32) if(PROJECT_IS_MINGW) set(LIBSODIUM_TYPE mingw64) diff --git a/cmake/libraries/openssl.cmake b/cmake/libraries/openssl.cmake index b2031f93..90f125d5 100644 --- a/cmake/libraries/openssl.cmake +++ b/cmake/libraries/openssl.cmake @@ -1,12 +1,11 @@ set(OPENSSL_ROOT_DIR $ENV{OPENSSL_ROOT_DIR}) -set(OPENSSL_USE_STATIC_LIBS ${PROJECT_STATIC_LINK}) - if(PROJECT_ENABLE_OPENSSL) if(PROJECT_BUILD) - find_package(OpenSSL ${OPENSSL_VERSION} REQUIRED) - add_definitions(-DPROJECT_ENABLE_OPENSSL) + set(OPENSSL_USE_STATIC_LIBS ${PROJECT_STATIC_LINK}) + find_package(OpenSSL ${OPENSSL_VERSION} REQUIRED) + include_directories(BEFORE SYSTEM ${OPENSSL_INCLUDE_DIR} ) diff --git a/cmake/libraries/pugixml.cmake b/cmake/libraries/pugixml.cmake index cbb43dfc..f16f84e5 100644 --- a/cmake/libraries/pugixml.cmake +++ b/cmake/libraries/pugixml.cmake @@ -1,21 +1,15 @@ if(PROJECT_ENABLE_PUGIXML) if(PROJECT_BUILD) - find_package(pugixml ${PUGIXML_VERSION} REQUIRED) - add_definitions(-DPROJECT_ENABLE_PUGIXML) - include_directories(BEFORE SYSTEM - ${PUGIXML_INCLUDE_DIR} - ) + find_package(pugixml ${PUGIXML_VERSION} REQUIRED) + + include_directories(BEFORE SYSTEM ${PUGIXML_INCLUDE_DIR}) if(PROJECT_STATIC_LINK) - link_libraries( - pugixml::static - ) + link_libraries(pugixml::static) else() - link_libraries( - pugixml::pugixml - ) + link_libraries(pugixml::pugixml) endif() elseif(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32) ExternalProject_Add(pugixml_project diff --git a/cmake/libraries/spdlog.cmake b/cmake/libraries/spdlog.cmake index a6f1109e..430b0964 100644 --- a/cmake/libraries/spdlog.cmake +++ b/cmake/libraries/spdlog.cmake @@ -1,16 +1,12 @@ if(PROJECT_ENABLE_SPDLOG) if(PROJECT_BUILD) - find_package(spdlog ${SPDLOG_VERSION} REQUIRED) - add_definitions(-DPROJECT_ENABLE_SPDLOG) - include_directories(BEFORE SYSTEM - ${SPDLOG_INCLUDE_DIRS} - ) + find_package(spdlog ${SPDLOG_VERSION} REQUIRED) - link_libraries( - spdlog::spdlog - ) + include_directories(BEFORE SYSTEM ${SPDLOG_INCLUDE_DIRS}) + + link_libraries(spdlog::spdlog) elseif(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32) ExternalProject_Add(spdlog_project PREFIX external diff --git a/cmake/libraries/sqlite.cmake b/cmake/libraries/sqlite.cmake index 8f50f499..d46120be 100644 --- a/cmake/libraries/sqlite.cmake +++ b/cmake/libraries/sqlite.cmake @@ -1,6 +1,7 @@ if(PROJECT_ENABLE_SQLITE) if(PROJECT_BUILD) add_definitions(-DPROJECT_ENABLE_SQLITE) + set(SQLITE_SYSTEM_ROOT ${PROJECT_BUILD_DIR}/external/src/sqlite_project) include_directories(SYSTEM BEFORE ${SQLITE_SYSTEM_ROOT}) diff --git a/cmake/libraries/stduuid.cmake b/cmake/libraries/stduuid.cmake index 73e11d35..94e7d3db 100644 --- a/cmake/libraries/stduuid.cmake +++ b/cmake/libraries/stduuid.cmake @@ -1,16 +1,12 @@ if(PROJECT_ENABLE_STDUUID) if(PROJECT_BUILD) - find_package(stduuid REQUIRED) - add_definitions(-DPROJECT_ENABLE_STDUUID) - include_directories(BEFORE SYSTEM - ${stduuid_INCLUDE_DIRS} - ) + find_package(stduuid REQUIRED) - link_libraries( - ${stduuid_LIBRARIES} - ) + include_directories(BEFORE SYSTEM ${stduuid_INCLUDE_DIRS}) + + link_libraries(${stduuid_LIBRARIES}) elseif(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32) ExternalProject_Add(stduuid_project PREFIX external diff --git a/cmake/libraries/winfsp.cmake b/cmake/libraries/winfsp.cmake index 81b75411..5b7b4586 100644 --- a/cmake/libraries/winfsp.cmake +++ b/cmake/libraries/winfsp.cmake @@ -2,13 +2,9 @@ if(PROJECT_ENABLE_WINFSP AND PROJECT_IS_MINGW) if(PROJECT_BUILD) add_definitions(-DPROJECT_ENABLE_WINFSP) - include_directories(BEFORE SYSTEM - ${PROJECT_3RD_PARTY_DIR}/winfsp-2.0/inc - ) + include_directories(BEFORE SYSTEM ${PROJECT_3RD_PARTY_DIR}/winfsp-2.0/inc) - link_directories(BEFORE - ${PROJECT_3RD_PARTY_DIR}/winfsp-2.0/lib - ) + link_directories(BEFORE ${PROJECT_3RD_PARTY_DIR}/winfsp-2.0/lib) if(PROJECT_IS_ARM64) link_libraries(winfsp-a64) diff --git a/docker/x86_64/mingw64 b/docker/x86_64/mingw64 index 7f6bb41e..2984a933 100644 --- a/docker/x86_64/mingw64 +++ b/docker/x86_64/mingw64 @@ -732,8 +732,8 @@ RUN if [ -f "/3rd_party/libsodium-${MY_LIBSODIUM_VERSION}.tar.gz" ]; then \ tar xvzf /3rd_party/libsodium-${MY_LIBSODIUM_VERSION}.tar.gz \ && cd libsodium-${MY_LIBSODIUM_VERSION} \ && CFLAGS="-O3 -fomit-frame-pointer -m64 -mtune=generic" ./configure \ - --enable-shared \ - --enable-static \ + --enable-shared=yes \ + --enable-static=yes \ --host=${MY_MINGW_PREFIX} \ --prefix=${MY_MINGW_DIR} \ && make -j${MY_NUM_JOBS} \ diff --git a/scripts/run_tests.sh b/scripts/run_tests.sh index 80b7d3d1..03955362 100755 --- a/scripts/run_tests.sh +++ b/scripts/run_tests.sh @@ -8,7 +8,11 @@ pushd "${PROJECT_DIST_DIR}" if [ -e "./${PROJECT_NAME}_test${PROJECT_APP_BINARY_EXT}" ]; then for APP in ${PROJECT_APP_LIST[@]}; do if [[ "$APP" == *_test${PROJECT_APP_BINARY_EXT} ]]; then - "./${PROJECT_NAME}_test${PROJECT_APP_BINARY_EXT}" || exit 1 + if [ "${PROJECT_IS_MINGW_UNIX}" == "1" ]; then + wine64 "./${PROJECT_NAME}_test${PROJECT_APP_BINARY_EXT}" || exit 1 + else + "./${PROJECT_NAME}_test${PROJECT_APP_BINARY_EXT}" || exit 1 + fi fi done fi