mirror of
https://github.com/oxen-io/oxen-core.git
synced 2023-12-14 02:22:56 +01:00
Ability to vendor libsodium 1.0.18 -D DOWNLOAD_SODIUM=[ON|OFF|FORCE]
DownloadLibsodium taken from loki-network and mostly adapted from libzmq's cmake file in lokimq.
This commit is contained in:
parent
3948e5bf14
commit
86d77912ae
|
@ -864,15 +864,29 @@ if (LOKI_DEBUG_SHORT_PROOFS)
|
|||
add_definitions(-DUPTIME_PROOF_BASE_MINUTE=3) # 20x faster uptime proofs
|
||||
endif()
|
||||
|
||||
|
||||
add_library(sodium INTERFACE)
|
||||
if(NOT SODIUM_LIBRARIES)
|
||||
|
||||
# Allow -DDOWNLOAD_SODIUM=FORCE to download without even checking for a local libsodium
|
||||
option(DOWNLOAD_SODIUM "Allow libsodium to be downloaded and built locally if not found on the system" OFF)
|
||||
if(NOT SODIUM_LIBRARIES AND NOT DOWNLOAD_SODIUM STREQUAL "FORCE")
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(SODIUM REQUIRED libsodium)
|
||||
pkg_check_modules(SODIUM REQUIRED libsodium>=1.0.18)
|
||||
|
||||
find_library(sodium_link_libs NAMES ${SODIUM_LIBRARIES} PATHS ${SODIUM_LIBRARY_DIRS})
|
||||
target_link_libraries(sodium INTERFACE ${sodium_link_libs})
|
||||
target_include_directories(sodium INTERFACE ${SODIUM_INCLUDE_DIRS})
|
||||
endif()
|
||||
|
||||
if (NOT sodium_FOUND)
|
||||
if (DOWNLOAD_SODIUM)
|
||||
message(STATUS "Sodium >= 1.0.18 not found, but DOWNLOAD_SODIUM specified, so downloading it")
|
||||
include(DownloadLibSodium)
|
||||
target_link_libraries(sodium INTERFACE sodium_vendor)
|
||||
target_include_directories(sodium INTERFACE sodium_vendor)
|
||||
else()
|
||||
message(FATAL_ERROR "Could not find libsodium >= 1.0.18; either install it on your system or use -DDOWNLOAD_SODIUM=ON to download and build an internal copy")
|
||||
endif()
|
||||
endif()
|
||||
find_library(sodium_link_libs NAMES ${SODIUM_LIBRARIES} PATHS ${SODIUM_LIBRARY_DIRS})
|
||||
target_link_libraries(sodium INTERFACE ${sodium_link_libs})
|
||||
target_include_directories(sodium INTERFACE ${SODIUM_INCLUDE_DIRS})
|
||||
|
||||
|
||||
add_library(sqlite3 INTERFACE)
|
||||
|
|
48
cmake/DownloadLibSodium.cmake
Normal file
48
cmake/DownloadLibSodium.cmake
Normal file
|
@ -0,0 +1,48 @@
|
|||
set(LIBSODIUM_PREFIX ${CMAKE_BINARY_DIR}/libsodium)
|
||||
set(LIBSODIUM_URL https://github.com/jedisct1/libsodium/releases/download/1.0.18-RELEASE/libsodium-1.0.18.tar.gz https://download.libsodium.org/libsodium/releases/libsodium-1.0.18.tar.gz)
|
||||
set(LIBSODIUM_HASH SHA512=17e8638e46d8f6f7d024fe5559eccf2b8baf23e143fadd472a7d29d228b186d86686a5e6920385fe2020729119a5f12f989c3a782afbd05a8db4819bb18666ef)
|
||||
|
||||
if(SODIUM_TARBALL_URL)
|
||||
# make a build time override of the tarball url so we can fetch it if the original link goes away
|
||||
set(LIBSODIUM_URL ${SODIUM_TARBALL_URL})
|
||||
endif()
|
||||
|
||||
|
||||
file(MAKE_DIRECTORY ${LIBSODIUM_PREFIX}/include)
|
||||
|
||||
include(ExternalProject)
|
||||
include(ProcessorCount)
|
||||
|
||||
set(SODIUM_CONFIGURE ./configure --prefix=${LIBSODIUM_PREFIX} CC=${CMAKE_C_COMPILER})
|
||||
if (LIBSODIUM_CROSS_TARGET)
|
||||
set(SODIUM_CONFIGURE ${SODIUM_CONFIGURE} --target=${LIBSODIUM_CROSS_TARGET} --host=${LIBSODIUM_CROSS_TARGET})
|
||||
endif()
|
||||
|
||||
if (BUILD_SHARED_LIBS)
|
||||
set(SODIUM_CONFIGURE ${SODIUM_CONFIGURE} --disable-static --enable-shared)
|
||||
else()
|
||||
set(SODIUM_CONFIGURE ${SODIUM_CONFIGURE} --enable-static --disable-shared)
|
||||
endif()
|
||||
|
||||
|
||||
ExternalProject_Add(libsodium_external
|
||||
BUILD_IN_SOURCE ON
|
||||
PREFIX ${LIBSODIUM_PREFIX}
|
||||
URL ${LIBSODIUM_URL}
|
||||
URL_HASH ${LIBSODIUM_HASH}
|
||||
CONFIGURE_COMMAND ${SODIUM_CONFIGURE}
|
||||
BUILD_COMMAND make -j${PROCESSOR_COUNT}
|
||||
INSTALL_COMMAND ${MAKE}
|
||||
BUILD_BYPRODUCTS ${LIBSODIUM_PREFIX}/lib/libsodium.a ${LIBSODIUM_PREFIX}/lib/libsodium.so ${LIBSODIUM_PREFIX}/include
|
||||
)
|
||||
|
||||
add_library(sodium_vendor STATIC IMPORTED GLOBAL)
|
||||
add_dependencies(sodium_vendor libsodium_external)
|
||||
set_target_properties(sodium_vendor PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${LIBSODIUM_PREFIX}/include)
|
||||
|
||||
if(BUILD_SHARED_LIBS)
|
||||
set_property(TARGET sodium_vendor PROPERTY IMPORTED_LOCATION ${LIBSODIUM_PREFIX}/lib/libsodium.so)
|
||||
else()
|
||||
set_property(TARGET sodium_vendor PROPERTY IMPORTED_LOCATION ${LIBSODIUM_PREFIX}/lib/libsodium.a)
|
||||
endif()
|
||||
|
Loading…
Reference in a new issue