Updated required libsodium to 1.0.18, add download option
We require 1.0.18 now, apparently, so bump the required version and add a -DDOWNLOAD_LIBSODIUM (copied from lokinet) that can download and build it when required (without needing to do a full static build of everything).
This commit is contained in:
parent
587ce89780
commit
8ecb53e369
|
@ -113,12 +113,13 @@ local static_build_deps='autoconf automake make file libtool pkg-config patch op
|
|||
debian_pipeline("Debian Debug (amd64)", "debian:sid", build_type='Debug'),
|
||||
debian_pipeline("Debian clang-11 (amd64)", "debian:sid", deps='clang-11 '+default_deps_base,
|
||||
cmake_extra='-DCMAKE_C_COMPILER=clang-11 -DCMAKE_CXX_COMPILER=clang++-11 ', lto=true),
|
||||
debian_pipeline("Debian buster (i386)", "i386/debian:buster"),
|
||||
debian_pipeline("Debian buster (i386)", "i386/debian:buster", cmake_extra='-DDOWNLOAD_SODIUM=ON'),
|
||||
debian_pipeline("Ubuntu focal (amd64)", "ubuntu:focal"),
|
||||
|
||||
// ARM builds (ARM64 and armhf)
|
||||
debian_pipeline("Debian (ARM64)", "debian:sid", arch="arm64", build_tests=false),
|
||||
debian_pipeline("Debian buster (armhf)", "arm32v7/debian:buster", arch="arm64", build_tests=false),
|
||||
debian_pipeline("Debian buster (armhf)", "arm32v7/debian:buster", arch="arm64", build_tests=false,
|
||||
cmake_extra='-DDOWNLOAD_SODIUM=ON'),
|
||||
|
||||
// Static build (on bionic) which gets uploaded to oxen.rocks:
|
||||
debian_pipeline("Static (bionic amd64)", "ubuntu:bionic", deps='g++-8 '+static_build_deps,
|
||||
|
|
|
@ -59,12 +59,29 @@ if(BUILD_STATIC_DEPS)
|
|||
include(StaticBuild)
|
||||
else()
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(SODIUM REQUIRED IMPORTED_TARGET libsodium>=1.0.17)
|
||||
add_library(sodium INTERFACE)
|
||||
target_link_libraries(sodium INTERFACE PkgConfig::SODIUM)
|
||||
|
||||
# Need this target export so that loki-mq properly picks up sodium
|
||||
export(TARGETS sodium NAMESPACE sodium:: FILE sodium-exports.cmake)
|
||||
if(NOT TARGET sodium)
|
||||
# Allow -D DOWNLOAD_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 DOWNLOAD_SODIUM STREQUAL "FORCE" AND NOT BUILD_STATIC_DEPS)
|
||||
pkg_check_modules(SODIUM libsodium>=1.0.18 IMPORTED_TARGET)
|
||||
endif()
|
||||
|
||||
add_library(sodium INTERFACE)
|
||||
if(SODIUM_FOUND AND NOT DOWNLOAD_SODIUM STREQUAL "FORCE" AND NOT BUILD_STATIC_DEPS)
|
||||
target_link_libraries(sodium INTERFACE PkgConfig::SODIUM)
|
||||
else()
|
||||
if(NOT DOWNLOAD_SODIUM AND NOT BUILD_STATIC_DEPS)
|
||||
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()
|
||||
message(STATUS "Sodium >= 1.0.18 not found, but DOWNLOAD_SODIUM specified, so downloading it")
|
||||
include(DownloadLibSodium)
|
||||
target_link_libraries(sodium INTERFACE sodium_vendor)
|
||||
endif()
|
||||
|
||||
# Need this target export so that loki-mq properly picks up sodium
|
||||
export(TARGETS sodium NAMESPACE sodium:: FILE sodium-exports.cmake)
|
||||
endif()
|
||||
|
||||
find_package(Boost REQUIRED system program_options)
|
||||
|
||||
|
|
|
@ -0,0 +1,51 @@
|
|||
|
||||
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)
|
||||
ProcessorCount(PROCESSOR_COUNT)
|
||||
if(PROCESSOR_COUNT EQUAL 0)
|
||||
set(PROCESSOR_COUNT 1)
|
||||
endif()
|
||||
|
||||
set(sodium_cc ${CMAKE_C_COMPILER})
|
||||
if(CCACHE_PROGRAM)
|
||||
set(sodium_cc "${CCACHE_PROGRAM} ${sodium_cc}")
|
||||
endif()
|
||||
set(SODIUM_CONFIGURE ./configure --prefix=${LIBSODIUM_PREFIX} --enable-static --disable-shared --with-pic --quiet CC=${sodium_cc})
|
||||
if (CMAKE_C_COMPILER_ARG1)
|
||||
set(SODIUM_CONFIGURE ${SODIUM_CONFIGURE} CPPFLAGS=${CMAKE_C_COMPILER_ARG1})
|
||||
endif()
|
||||
|
||||
if (CROSS_TARGET)
|
||||
set(SODIUM_CONFIGURE ${SODIUM_CONFIGURE} --target=${CROSS_TARGET} --host=${CROSS_TARGET})
|
||||
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}/include
|
||||
)
|
||||
|
||||
add_library(sodium_vendor STATIC IMPORTED GLOBAL)
|
||||
add_dependencies(sodium_vendor libsodium_external)
|
||||
set_target_properties(sodium_vendor PROPERTIES
|
||||
IMPORTED_LOCATION ${LIBSODIUM_PREFIX}/lib/libsodium.a
|
||||
INTERFACE_INCLUDE_DIRECTORIES ${LIBSODIUM_PREFIX}/include
|
||||
)
|
Loading…
Reference in New Issue