diff --git a/CMakeLists.txt b/CMakeLists.txt index bf5e6cabd..c2a903f79 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -175,39 +175,6 @@ if(NOT TARGET sodium) export(TARGETS sodium NAMESPACE sodium:: FILE sodium-exports.cmake) endif() -option(FORCE_OXENC_SUBMODULE "force using oxen-encoding submodule" OFF) -if(NOT FORCE_OXENC_SUBMODULE) - pkg_check_modules(OXENC liboxenc>=1.0.3 IMPORTED_TARGET) -endif() - -if(OXENC_FOUND) - if(NOT TARGET PkgConfig::OXENC AND CMAKE_VERSION VERSION_LESS "3.21") - # Work around cmake bug 22180 (PkgConfig::OXENC not set if no flags needed): - add_library(_empty_oxenc INTERFACE) - add_library(oxenc::oxenc ALIAS _empty_oxenc) - else() - add_library(oxenc::oxenc ALIAS PkgConfig::OXENC) - endif() - message(STATUS "Found system liboxenc ${OXENC_VERSION}") -else() - message(STATUS "using oxen-encoding submodule") - add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/external/oxen-encoding) - add_library(oxenc::oxenc ALIAS oxenc) -endif() - -option(FORCE_OXENMQ_SUBMODULE "force using oxenmq submodule" OFF) -if(NOT FORCE_OXENMQ_SUBMODULE) - pkg_check_modules(OXENMQ liboxenmq>=1.2.12 IMPORTED_TARGET) -endif() -if(OXENMQ_FOUND) - add_library(oxenmq::oxenmq ALIAS PkgConfig::OXENMQ) - message(STATUS "Found system liboxenmq ${OXENMQ_VERSION}") -else() - message(STATUS "using oxenmq submodule") - add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/external/oxen-mq) -endif() - - if(NOT APPLE) add_compile_options(-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0 -Wall -Wextra -Wno-unknown-pragmas -Wno-unused-function -Wno-deprecated-declarations -Werror=vla) if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index 0f935161b..b851ff986 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -29,12 +29,38 @@ if(SUBMODULE_CHECK) endif() endif() +macro(system_or_submodule BIGNAME smallname pkgconf subdir) + option(FORCE_${BIGNAME}_SUBMODULE "force using ${smallname} submodule" OFF) + if(NOT STATIC AND NOT FORCE_${BIGNAME}_SUBMODULE) + pkg_check_modules(${BIGNAME} ${pkgconf} IMPORTED_TARGET) + endif() + if(${BIGNAME}_FOUND) + add_library(${smallname} INTERFACE) + if(NOT TARGET PkgConfig::${BIGNAME} AND CMAKE_VERSION VERSION_LESS "3.21") + # Work around cmake bug 22180 (PkgConfig::THING not set if no flags needed) + else() + target_link_libraries(${smallname} INTERFACE PkgConfig::${BIGNAME}) + endif() + message(STATUS "Found system ${smallname} ${${BIGNAME}_VERSION}") + else() + message(STATUS "using ${smallname} submodule") + add_subdirectory(${subdir}) + endif() + if(NOT TARGET ${smallname}::${smallname}) + add_library(${smallname}::${smallname} ALIAS ${smallname}) + endif() +endmacro() + +system_or_submodule(OXENC oxenc liboxenc>=1.0.3 oxen-encoding) +system_or_submodule(OXENMQ oxenmq liboxenmq>=1.2.12 oxen-mq) +set(JSON_BuildTests OFF CACHE INTERNAL "") +system_or_submodule(NLOHMANN nlohmann_json nlohmann_json>=3.7.0 nlohmann) + + if(WITH_HIVE) add_subdirectory(pybind11 EXCLUDE_FROM_ALL) endif() -set(JSON_BuildTests OFF CACHE INTERNAL "") -add_subdirectory(nlohmann EXCLUDE_FROM_ALL) add_subdirectory(cxxopts EXCLUDE_FROM_ALL) add_subdirectory(date EXCLUDE_FROM_ALL)