mirror of https://github.com/oxen-io/lokinet
Clean up system-or-submodule handling
Fixes a bug on older cmake linking against oxenmq (older cmake hates the direct oxenmq::oxenmq -> PkgConfig::OXENMQ alias), and also makes it easier to handle things like nlohmann::json (which we can use from the system *or* submodule). Borrowed from oxen-ss/oxen-core.
This commit is contained in:
parent
4a10868f85
commit
523a8a74ca
|
@ -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")
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
Loading…
Reference in New Issue