[libsodium] Rework CMake build to match autoconf (#16730)

* !wip Use targets to organize build

* !wip Add separate file list for MSVC builds

* Restructure to match autoconf

I re-ordered everything so it is easier to compare directly with the
project's autoconf build files.

* Move config files to expected location

* Convert CONTROL file to manifest file

Use vcpkg helper ports.

* Use sqlite3's approach to creating config file

* Fix MSVC source list

I was originally using libsodium:master as a reference, not the release.

* Turn off tests

* Fix definition scope

* Fix JSON formatting

Co-authored-by: Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com>

* Update libsodium version metadata

* [libsodium] Fix x64-windows-static[-md] builds

* [libsodium] Update port version metadata

Co-authored-by: Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com>

* Glob headers and sources on Windows

* [libsodium] Fix GLOB on Windows

* [libsodium] Update verson hash

Co-authored-by: Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com>
This commit is contained in:
Thomas Gwynne-Timothy 2021-03-29 10:45:43 -06:00 committed by GitHub
parent 38c073dc7a
commit 2980294114
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 598 additions and 260 deletions

View File

@ -38,6 +38,7 @@ option(ENABLE_BLOCKING_RANDOM "Enable blocking random" OFF)
option(ENABLE_MINIMAL "Only compile the minimum set of functions required for the high-level API" OFF)
option(ENABLE_PTHREADS "Use pthreads library" ON)
option(ENABLE_RETPOLINE "Use return trampolines for indirect calls" OFF)
option(ENABLE_NATIVE_OPTIMIZATIONS "Optimize for the native CPU - The resulting library will be faster but not portable" OFF)
if (ENABLE_MINIMAL)
set(SODIUM_LIBRARY_MINIMAL_DEF "#define SODIUM_LIBRARY_MINIMAL 1")
@ -48,35 +49,7 @@ configure_file(
${CMAKE_BINARY_DIR}/sodium/version.h
)
file(GLOB sodium_headers
${PROJECT_SOURCE_DIR}/src/libsodium/include/sodium/*.h
${PROJECT_SOURCE_DIR}/src/libsodium/include/sodium.h
${CMAKE_BINARY_DIR}/sodium/version.h
)
if (UNIX)
file(GLOB_RECURSE sodium_sources
${PROJECT_SOURCE_DIR}/src/libsodium/*.c
${PROJECT_SOURCE_DIR}/src/libsodium/*.S # HAVE_AVX_ASM
)
else ()
file(GLOB_RECURSE sodium_sources
${PROJECT_SOURCE_DIR}/src/libsodium/*.c
)
endif ()
if (MSVC)
enable_language(RC)
list(APPEND sodium_sources
builds/msvc/resource.rc
)
endif ()
add_library(${PROJECT_NAME}
${sodium_headers}
${sodium_sources}
)
add_library(${PROJECT_NAME})
set_target_properties(${PROJECT_NAME}
PROPERTIES
@ -84,22 +57,35 @@ set_target_properties(${PROJECT_NAME}
OUTPUT_NAME "lib${PROJECT_NAME}"
)
test_big_endian(IS_BIG_ENDIAN)
if (IS_BIG_ENDIAN)
target_compile_definitions(${PROJECT_NAME} PRIVATE NATIVE_BIG_ENDIAN)
else ()
target_compile_definitions(${PROJECT_NAME} PRIVATE NATIVE_LITTLE_ENDIAN)
endif ()
macro (sodium_check_func func var)
check_function_exists(${func} ${var})
if (${var})
target_compile_definitions(${PROJECT_NAME} PRIVATE ${var}=1)
endif ()
endmacro ()
if (MSVC)
target_include_directories(${PROJECT_NAME}
PRIVATE
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src/libsodium/include/sodium>
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/sodium>
)
enable_language(RC)
# see libsodium.vcxproj for reference
# - omitted "<ClInclude Include="src\libsodium\include\sodium\version.h" />" in favour of "${CMAKE_BINARY_DIR}/sodium/version.h"
file(GLOB_RECURSE sodium_headers
${CMAKE_BINARY_DIR}/sodium/version.h
${PROJECT_SOURCE_DIR}/builds/msvc/resource.h
${PROJECT_SOURCE_DIR}/src/libsodium/*.h
)
file(GLOB_RECURSE sodium_sources
${PROJECT_SOURCE_DIR}/builds/msvc/resource.rc
${PROJECT_SOURCE_DIR}/src/libsodium/*.c
)
target_sources(${PROJECT_NAME}
PRIVATE
${sodium_headers}
${sodium_sources}
)
target_compile_options(${PROJECT_NAME}
PRIVATE
/D_CONSOLE
@ -116,35 +102,34 @@ if (MSVC)
PUBLIC
advapi32
)
else ()
if (ENABLE_BLOCKING_RANDOM)
target_compile_definitions(${PROJECT_NAME} PRIVATE USE_BLOCKING_RANDOM)
endif ()
if (ENABLE_PTHREADS)
target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_PTHREAD)
target_compile_options(${PROJECT_NAME} PRIVATE -ftls-model=local-dynamic)
target_compile_options(${PROJECT_NAME} PUBLIC -pthread)
endif ()
# use interface libs to track common flags and definitions across all targets
add_library(${PROJECT_NAME}_config_private INTERFACE)
add_library(${PROJECT_NAME}_config_public INTERFACE)
if (ENABLE_SSP)
target_compile_options(${PROJECT_NAME} PRIVATE -fstack-protector-all)
endif ()
# use interface libs to track special flags only required for certain objects
add_library(${PROJECT_NAME}_aesni_config INTERFACE)
add_library(${PROJECT_NAME}_avx_config INTERFACE)
add_library(${PROJECT_NAME}_avx2_config INTERFACE)
add_library(${PROJECT_NAME}_avx512f_config INTERFACE)
add_library(${PROJECT_NAME}_mmx_config INTERFACE)
add_library(${PROJECT_NAME}_pclmul_config INTERFACE)
add_library(${PROJECT_NAME}_rdrand_config INTERFACE)
add_library(${PROJECT_NAME}_sse2_config INTERFACE)
add_library(${PROJECT_NAME}_sse3_config INTERFACE)
add_library(${PROJECT_NAME}_sse41_config INTERFACE)
add_library(${PROJECT_NAME}_ssse3_config INTERFACE)
if (ENABLE_PIE)
target_compile_options(${PROJECT_NAME} PRIVATE -fPIE)
endif ()
if (ENABLE_RETPOLINE)
target_compile_options(${PROJECT_NAME}
PRIVATE
-mindirect-branch=thunk-inline
-mindirect-branch-register
target_include_directories(${PROJECT_NAME}_config_private
INTERFACE
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src/libsodium/include/sodium>
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/sodium>
)
endif ()
target_compile_options(${PROJECT_NAME}
PRIVATE
target_compile_options(${PROJECT_NAME}_config_private
INTERFACE
-flax-vector-conversions
-fvisibility=hidden
-fPIC
@ -184,18 +169,62 @@ else ()
if (CMAKE_C_COMPILER_ID STREQUAL "Clang" OR
CMAKE_C_COMPILER_ID STREQUAL "AppleClang")
target_compile_options(${PROJECT_NAME}
PRIVATE
target_compile_options(${PROJECT_NAME}_config_private
INTERFACE
-Wno-unknown-warning-option
-Wshorten-64-to-32
)
endif ()
# see configure.ac for reference
if (ENABLE_BLOCKING_RANDOM)
target_compile_definitions(${PROJECT_NAME}_config_private INTERFACE USE_BLOCKING_RANDOM)
endif ()
if (ENABLE_PTHREADS)
target_compile_definitions(${PROJECT_NAME}_config_private INTERFACE HAVE_PTHREAD)
target_compile_options(${PROJECT_NAME}_config_private INTERFACE -ftls-model=local-dynamic)
target_compile_options(${PROJECT_NAME}_config_public INTERFACE -pthread)
endif ()
if (ENABLE_SSP)
target_compile_options(${PROJECT_NAME}_config_private INTERFACE -fstack-protector-all)
endif ()
if (ENABLE_PIE)
target_compile_options(${PROJECT_NAME}_config_private INTERFACE -fPIE)
endif ()
if (ENABLE_RETPOLINE)
target_compile_options(${PROJECT_NAME}_config_private
INTERFACE
-mindirect-branch=thunk-inline
-mindirect-branch-register
)
endif ()
if (ENABLE_NATIVE_OPTIMIZATIONS)
target_compile_options(${PROJECT_NAME}_config_private
INTERFACE
-ftree-vectorize
-ftree-slp-vectorize
-fomit-frame-pointer
-march=native
)
endif ()
check_include_file(sys/mman.h HAVE_SYS_MMAN_H)
if (HAVE_SYS_MMAN_H)
target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_SYS_MMAN_H)
target_compile_definitions(${PROJECT_NAME}_config_private INTERFACE HAVE_SYS_MMAN_H)
endif ()
macro (sodium_check_func func var)
check_function_exists(${func} ${var})
if (${var})
target_compile_definitions(${PROJECT_NAME}_config_private INTERFACE ${var}=1)
endif ()
endmacro ()
sodium_check_func(arc4random HAVE_SAFE_ARC4RANDOM)
sodium_check_func(mmap HAVE_MMAP)
sodium_check_func(mlock HAVE_MLOCK)
@ -222,8 +251,8 @@ else ()
)
if (HAVE_MMINTRIN_H)
target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_MMINTRIN_H=1)
target_compile_options(${PROJECT_NAME} PRIVATE -mmmx)
target_compile_definitions(${PROJECT_NAME}_config_private INTERFACE HAVE_MMINTRIN_H=1)
target_compile_options(${PROJECT_NAME}_mmx_config INTERFACE -mmmx)
endif ()
check_c_source_runs(
@ -243,8 +272,8 @@ else ()
)
if (HAVE_EMMINTRIN_H)
target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_EMMINTRIN_H=1)
target_compile_options(${PROJECT_NAME} PRIVATE -msse2)
target_compile_definitions(${PROJECT_NAME}_config_private INTERFACE HAVE_EMMINTRIN_H=1)
target_compile_options(${PROJECT_NAME}_sse2_config INTERFACE -msse2)
endif ()
check_c_source_runs(
@ -259,8 +288,8 @@ else ()
)
if (HAVE_PMMINTRIN_H)
target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_PMMINTRIN_H=1)
target_compile_options(${PROJECT_NAME} PRIVATE -msse3)
target_compile_definitions(${PROJECT_NAME}_config_private INTERFACE HAVE_PMMINTRIN_H=1)
target_compile_options(${PROJECT_NAME}_sse3_config INTERFACE -msse3)
endif ()
check_c_source_runs(
@ -275,8 +304,8 @@ else ()
)
if (HAVE_TMMINTRIN_H)
target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_TMMINTRIN_H=1)
target_compile_options(${PROJECT_NAME} PRIVATE -mssse3)
target_compile_definitions(${PROJECT_NAME}_config_private INTERFACE HAVE_TMMINTRIN_H=1)
target_compile_options(${PROJECT_NAME}_ssse3_config INTERFACE -mssse3)
endif ()
check_c_source_runs(
@ -291,8 +320,8 @@ else ()
)
if (HAVE_SMMINTRIN_H)
target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_SMMINTRIN_H=1)
target_compile_options(${PROJECT_NAME} PRIVATE -msse4.1)
target_compile_definitions(${PROJECT_NAME}_config_private INTERFACE HAVE_SMMINTRIN_H=1)
target_compile_options(${PROJECT_NAME}_sse41_config INTERFACE -msse4.1)
endif ()
check_c_source_runs(
@ -310,8 +339,8 @@ else ()
)
if (HAVE_AVXINTRIN_H)
target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_AVXINTRIN_H=1)
target_compile_options(${PROJECT_NAME} PRIVATE -mavx)
target_compile_definitions(${PROJECT_NAME}_config_private INTERFACE HAVE_AVXINTRIN_H=1)
target_compile_options(${PROJECT_NAME}_avx_config INTERFACE -mavx)
endif ()
check_c_source_runs(
@ -331,8 +360,8 @@ else ()
)
if (HAVE_AVX2INTRIN_H)
target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_AVX2INTRIN_H=1)
target_compile_options(${PROJECT_NAME} PRIVATE -mavx2)
target_compile_definitions(${PROJECT_NAME}_config_private INTERFACE HAVE_AVX2INTRIN_H=1)
target_compile_options(${PROJECT_NAME}_avx2_config INTERFACE -mavx2)
check_c_source_runs(
"
@ -349,8 +378,8 @@ else ()
)
if (NOT _mm256_broadcastsi128_si256_DEFINED)
target_compile_definitions(${PROJECT_NAME}
PRIVATE
target_compile_definitions(${PROJECT_NAME}_config_private
INTERFACE
_mm256_broadcastsi128_si256=_mm_broadcastsi128_si256
)
endif ()
@ -385,10 +414,8 @@ else ()
)
if (HAVE_AVX512FINTRIN_H)
target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_AVX512FINTRIN_H=1)
target_compile_options(${PROJECT_NAME} PRIVATE -mavx512f)
else ()
target_compile_options(${PROJECT_NAME} PRIVATE -mno-avx512f)
target_compile_definitions(${PROJECT_NAME}_config_private INTERFACE HAVE_AVX512FINTRIN_H=1)
target_compile_options(${PROJECT_NAME}_avx512f_config INTERFACE -mavx512f)
endif ()
check_c_source_runs(
@ -409,8 +436,9 @@ else ()
)
if (HAVE_WMMINTRIN_H)
target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_WMMINTRIN_H=1)
target_compile_options(${PROJECT_NAME} PRIVATE -maes -mpclmul)
target_compile_definitions(${PROJECT_NAME}_config_private INTERFACE HAVE_WMMINTRIN_H=1)
target_compile_options(${PROJECT_NAME}_aesni_config INTERFACE -maes)
target_compile_options(${PROJECT_NAME}_pclmul_config INTERFACE -mpclmul)
endif ()
check_c_source_runs(
@ -430,8 +458,8 @@ else ()
)
if (HAVE_RDRAND)
target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_RDRAND=1)
target_compile_options(${PROJECT_NAME} PRIVATE -mrdrnd)
target_compile_definitions(${PROJECT_NAME}_config_private INTERFACE HAVE_RDRAND=1)
target_compile_options(${PROJECT_NAME}_rdrand_config INTERFACE -mrdrnd)
endif ()
check_c_source_runs(
@ -446,7 +474,7 @@ else ()
)
if (HAVE__XGETBV)
target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE__XGETBV=1)
target_compile_definitions(${PROJECT_NAME}_config_private INTERFACE HAVE__XGETBV=1)
endif ()
check_c_source_runs(
@ -461,7 +489,7 @@ else ()
)
if (HAVE_INLINE_ASM)
target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_INLINE_ASM=1)
target_compile_definitions(${PROJECT_NAME}_config_private INTERFACE HAVE_INLINE_ASM=1)
endif ()
check_c_source_runs(
@ -488,7 +516,7 @@ else ()
)
if (HAVE_AMD64_ASM)
target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_AMD64_ASM=1)
target_compile_definitions(${PROJECT_NAME}_config_private INTERFACE HAVE_AMD64_ASM=1)
endif ()
check_c_source_runs(
@ -509,7 +537,7 @@ else ()
)
if (HAVE_AVX_ASM)
target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_AVX_ASM=1)
target_compile_definitions(${PROJECT_NAME}_config_private INTERFACE HAVE_AVX_ASM=1)
endif ()
check_c_source_runs(
@ -547,7 +575,7 @@ else ()
)
if (HAVE_TI_MODE)
target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_TI_MODE=1)
target_compile_definitions(${PROJECT_NAME}_config_private INTERFACE HAVE_TI_MODE=1)
endif ()
check_c_source_runs(
@ -564,7 +592,7 @@ else ()
)
if (HAVE_CPUID)
target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_CPUID=1)
target_compile_definitions(${PROJECT_NAME}_config_private INTERFACE HAVE_CPUID=1)
endif ()
endif ()
@ -581,7 +609,7 @@ else ()
)
if (HAVE_WEAK_SYMBOLS)
target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_WEAK_SYMBOLS=1)
target_compile_definitions(${PROJECT_NAME}_config_private INTERFACE HAVE_WEAK_SYMBOLS=1)
endif ()
check_c_source_runs(
@ -596,7 +624,7 @@ else ()
)
if (HAVE_ATOMIC_OPS)
target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_ATOMIC_OPS=1)
target_compile_definitions(${PROJECT_NAME}_config_private INTERFACE HAVE_ATOMIC_OPS=1)
endif ()
check_c_source_runs(
@ -612,15 +640,368 @@ else ()
)
if (STDC_LIMIT_MACROS_REQUIRED)
target_compile_definitions(${PROJECT_NAME}
PRIVATE
target_compile_definitions(${PROJECT_NAME}_config_private
INTERFACE
__STDC_LIMIT_MACROS
__STDC_CONSTANT_MACROS
)
endif ()
# include/sodium/private/common.h
target_compile_definitions(${PROJECT_NAME} PRIVATE CONFIGURED=1)
target_compile_definitions(${PROJECT_NAME}_config_private INTERFACE CONFIGURED=1)
test_big_endian(IS_BIG_ENDIAN)
if (IS_BIG_ENDIAN)
target_compile_definitions(${PROJECT_NAME}_config_private INTERFACE NATIVE_BIG_ENDIAN)
else ()
target_compile_definitions(${PROJECT_NAME}_config_private INTERFACE NATIVE_LITTLE_ENDIAN)
endif ()
# see src/libsodium/Makefile.am for reference
target_sources(${PROJECT_NAME}
PRIVATE
${CMAKE_BINARY_DIR}/sodium/version.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_aead/chacha20poly1305/sodium/aead_chacha20poly1305.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_aead/xchacha20poly1305/sodium/aead_xchacha20poly1305.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_auth/crypto_auth.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_auth/hmacsha256/auth_hmacsha256.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_auth/hmacsha512/auth_hmacsha512.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_auth/hmacsha512256/auth_hmacsha512256.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_box/crypto_box.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_box/crypto_box_easy.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_box/crypto_box_seal.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_box/curve25519xsalsa20poly1305/box_curve25519xsalsa20poly1305.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_core/ed25519/ref10/ed25519_ref10.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_core/hchacha20/core_hchacha20.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_core/hsalsa20/ref2/core_hsalsa20_ref2.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_core/hsalsa20/core_hsalsa20.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_core/salsa/ref/core_salsa_ref.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_generichash/crypto_generichash.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_generichash/blake2b/generichash_blake2.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_generichash/blake2b/ref/blake2.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-ref.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_generichash/blake2b/ref/blake2b-load-sse2.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_generichash/blake2b/ref/blake2b-load-sse41.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_generichash/blake2b/ref/blake2b-load-avx2.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_generichash/blake2b/ref/blake2b-ref.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_generichash/blake2b/ref/generichash_blake2b.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_hash/crypto_hash.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_hash/sha256/hash_sha256.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_hash/sha256/cp/hash_sha256_cp.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_hash/sha512/hash_sha512.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_hash/sha512/cp/hash_sha512_cp.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_kdf/blake2b/kdf_blake2b.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_kdf/crypto_kdf.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_kx/crypto_kx.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_onetimeauth/crypto_onetimeauth.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna32.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna64.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_pwhash/argon2/argon2-core.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_pwhash/argon2/argon2-core.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_pwhash/argon2/argon2-encoding.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_pwhash/argon2/argon2-encoding.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_pwhash/argon2/argon2-fill-block-ref.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_pwhash/argon2/argon2.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_pwhash/argon2/argon2.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_pwhash/argon2/blake2b-long.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_pwhash/argon2/blake2b-long.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_pwhash/argon2/blamka-round-ref.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_pwhash/argon2/pwhash_argon2i.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_pwhash/argon2/pwhash_argon2id.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_pwhash/crypto_pwhash.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_scalarmult/crypto_scalarmult.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_scalarmult/curve25519/ref10/x25519_ref10.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_scalarmult/curve25519/ref10/x25519_ref10.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_scalarmult/curve25519/scalarmult_curve25519.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_scalarmult/curve25519/scalarmult_curve25519.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_secretbox/crypto_secretbox.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_secretbox/crypto_secretbox_easy.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_secretstream/xchacha20poly1305/secretstream_xchacha20poly1305.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_shorthash/crypto_shorthash.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_shorthash/siphash24/shorthash_siphash24.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphash24_ref.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphash_ref.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_sign/crypto_sign.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_sign/ed25519/sign_ed25519.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_sign/ed25519/ref10/keypair.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_sign/ed25519/ref10/open.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_sign/ed25519/ref10/sign.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_sign/ed25519/ref10/sign_ed25519_ref10.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/chacha20/stream_chacha20.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/chacha20/stream_chacha20.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/chacha20/ref/chacha20_ref.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/chacha20/ref/chacha20_ref.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/crypto_stream.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/salsa20/stream_salsa20.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/salsa20/stream_salsa20.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/xsalsa20/stream_xsalsa20.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_verify/sodium/verify.c
${PROJECT_SOURCE_DIR}/src/libsodium/include/sodium/private/chacha20_ietf_ext.h
${PROJECT_SOURCE_DIR}/src/libsodium/include/sodium/private/common.h
${PROJECT_SOURCE_DIR}/src/libsodium/include/sodium/private/ed25519_ref10.h
${PROJECT_SOURCE_DIR}/src/libsodium/include/sodium/private/implementations.h
${PROJECT_SOURCE_DIR}/src/libsodium/include/sodium/private/mutex.h
${PROJECT_SOURCE_DIR}/src/libsodium/include/sodium/private/sse2_64_32.h
${PROJECT_SOURCE_DIR}/src/libsodium/randombytes/randombytes.c
${PROJECT_SOURCE_DIR}/src/libsodium/sodium/codecs.c
${PROJECT_SOURCE_DIR}/src/libsodium/sodium/core.c
${PROJECT_SOURCE_DIR}/src/libsodium/sodium/runtime.c
${PROJECT_SOURCE_DIR}/src/libsodium/sodium/utils.c
${PROJECT_SOURCE_DIR}/src/libsodium/sodium/version.c
)
if (HAVE_TI_MODE)
target_sources(${PROJECT_NAME}
PRIVATE
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_core/ed25519/ref10/fe_51/base.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_core/ed25519/ref10/fe_51/base2.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_core/ed25519/ref10/fe_51/constants.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_core/ed25519/ref10/fe_51/fe.h
${PROJECT_SOURCE_DIR}/src/libsodium/include/sodium/private/ed25519_ref10_fe_51.h
)
else ()
target_sources(${PROJECT_NAME}
PRIVATE
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_core/ed25519/ref10/fe_25_5/base.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_core/ed25519/ref10/fe_25_5/base2.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_core/ed25519/ref10/fe_25_5/constants.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_core/ed25519/ref10/fe_25_5/fe.h
${PROJECT_SOURCE_DIR}/src/libsodium/include/sodium/private/ed25519_ref10_fe_25_5.h
)
endif ()
if (HAVE_AMD64_ASM)
target_sources(${PROJECT_NAME}
PRIVATE
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/salsa20/xmm6/salsa20_xmm6-asm.S
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/salsa20/xmm6/salsa20_xmm6.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/salsa20/xmm6/salsa20_xmm6.h
)
else ()
target_sources(${PROJECT_NAME}
PRIVATE
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/salsa20/ref/salsa20_ref.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/salsa20/ref/salsa20_ref.h
)
endif ()
target_sources(${PROJECT_NAME}
PRIVATE
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_scalarmult/curve25519/sandy2x/consts.S
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_mul.S
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_nsquare.S
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_pack.S
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder.S
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder_base.S
)
if (HAVE_AVX_ASM)
target_sources(${PROJECT_NAME}
PRIVATE
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_scalarmult/curve25519/sandy2x/consts_namespace.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_scalarmult/curve25519/sandy2x/curve25519_sandy2x.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_scalarmult/curve25519/sandy2x/curve25519_sandy2x.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_invert.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_namespace.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe_frombytes_sandy2x.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder_namespace.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_scalarmult/curve25519/sandy2x/sandy2x.S
)
endif ()
if (NOT ENABLE_MINIMAL)
target_sources(${PROJECT_NAME}
PRIVATE
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_box/curve25519xchacha20poly1305/box_curve25519xchacha20poly1305.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_box/curve25519xchacha20poly1305/box_seal_curve25519xchacha20poly1305.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_core/ed25519/core_ed25519.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_core/ed25519/core_ristretto255.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_pwhash/scryptsalsa208sha256/crypto_scrypt-common.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_pwhash/scryptsalsa208sha256/crypto_scrypt.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_pwhash/scryptsalsa208sha256/scrypt_platform.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_pwhash/scryptsalsa208sha256/pbkdf2-sha256.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_pwhash/scryptsalsa208sha256/pbkdf2-sha256.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_pwhash/scryptsalsa208sha256/pwhash_scryptsalsa208sha256.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_pwhash/scryptsalsa208sha256/nosse/pwhash_scryptsalsa208sha256_nosse.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_scalarmult/ed25519/ref10/scalarmult_ed25519_ref10.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_scalarmult/ristretto255/ref10/scalarmult_ristretto255_ref10.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_secretbox/xchacha20poly1305/secretbox_xchacha20poly1305.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_shorthash/siphash24/shorthash_siphashx24.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphashx24_ref.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_sign/ed25519/ref10/obsolete.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/salsa2012/ref/stream_salsa2012_ref.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/salsa2012/stream_salsa2012.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/salsa208/ref/stream_salsa208_ref.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/salsa208/stream_salsa208.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/xchacha20/stream_xchacha20.c
)
endif ()
add_library(${PROJECT_NAME}_rdrand
OBJECT
${PROJECT_SOURCE_DIR}/src/libsodium/randombytes/internal/randombytes_internal_random.c
${PROJECT_SOURCE_DIR}/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c
)
target_link_libraries(${PROJECT_NAME}_rdrand
PRIVATE
${PROJECT_NAME}_rdrand_config
${PROJECT_NAME}_config_public
${PROJECT_NAME}_config_private
)
add_library(${PROJECT_NAME}_aesni
OBJECT
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c
)
target_link_libraries(${PROJECT_NAME}_aesni
PRIVATE
${PROJECT_NAME}_config_public
${PROJECT_NAME}_config_private
${PROJECT_NAME}_sse2_config
${PROJECT_NAME}_ssse3_config
${PROJECT_NAME}_aesni_config
${PROJECT_NAME}_pclmul_config
)
add_library(${PROJECT_NAME}_sse2
OBJECT
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_onetimeauth/poly1305/sse2/poly1305_sse2.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_onetimeauth/poly1305/sse2/poly1305_sse2.h
)
if (NOT ENABLE_MINIMAL)
target_sources(${PROJECT_NAME}_sse2
PRIVATE
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_pwhash/scryptsalsa208sha256/sse/pwhash_scryptsalsa208sha256_sse.c
)
endif ()
if (NOT HAVE_AMD64_ASM)
target_sources(${PROJECT_NAME}_sse2
PRIVATE
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-sse2.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-sse2.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/salsa20/xmm6int/u0.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/salsa20/xmm6int/u1.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/salsa20/xmm6int/u4.h
)
endif ()
target_link_libraries(${PROJECT_NAME}_sse2
PRIVATE
${PROJECT_NAME}_config_public
${PROJECT_NAME}_config_private
${PROJECT_NAME}_sse2_config
)
add_library(${PROJECT_NAME}_ssse3
OBJECT
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-ssse3.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-ssse3.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_pwhash/argon2/argon2-fill-block-ssse3.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_pwhash/argon2/blamka-round-ssse3.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-ssse3.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-ssse3.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/chacha20/dolbeau/u0.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/chacha20/dolbeau/u1.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/chacha20/dolbeau/u4.h
)
target_link_libraries(${PROJECT_NAME}_ssse3
PRIVATE
${PROJECT_NAME}_config_public
${PROJECT_NAME}_config_private
${PROJECT_NAME}_sse2_config
${PROJECT_NAME}_ssse3_config
)
add_library(${PROJECT_NAME}_sse41
OBJECT
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-sse41.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-sse41.h
)
target_link_libraries(${PROJECT_NAME}_sse41
PRIVATE
${PROJECT_NAME}_config_public
${PROJECT_NAME}_config_private
${PROJECT_NAME}_sse2_config
${PROJECT_NAME}_ssse3_config
${PROJECT_NAME}_sse41_config
)
add_library(${PROJECT_NAME}_avx2
OBJECT
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-avx2.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-avx2.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_pwhash/argon2/argon2-fill-block-avx2.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_pwhash/argon2/blamka-round-avx2.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-avx2.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-avx2.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/chacha20/dolbeau/u8.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-avx2.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-avx2.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/salsa20/xmm6int/u0.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/salsa20/xmm6int/u1.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/salsa20/xmm6int/u4.h
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_stream/salsa20/xmm6int/u8.h
)
target_link_libraries(${PROJECT_NAME}_avx2
PRIVATE
${PROJECT_NAME}_config_public
${PROJECT_NAME}_config_private
${PROJECT_NAME}_sse2_config
${PROJECT_NAME}_ssse3_config
${PROJECT_NAME}_sse41_config
${PROJECT_NAME}_avx_config
${PROJECT_NAME}_avx2_config
)
add_library(${PROJECT_NAME}_avx512f
OBJECT
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_pwhash/argon2/argon2-fill-block-avx512f.c
${PROJECT_SOURCE_DIR}/src/libsodium/crypto_pwhash/argon2/blamka-round-avx512f.h
)
target_link_libraries(${PROJECT_NAME}_avx512f
PRIVATE
${PROJECT_NAME}_config_public
${PROJECT_NAME}_config_private
${PROJECT_NAME}_sse2_config
${PROJECT_NAME}_ssse3_config
${PROJECT_NAME}_sse41_config
${PROJECT_NAME}_avx_config
${PROJECT_NAME}_avx2_config
${PROJECT_NAME}_avx512f_config
)
target_link_libraries(${PROJECT_NAME}
PRIVATE
"$<BUILD_INTERFACE:${PROJECT_NAME}_rdrand>"
"$<BUILD_INTERFACE:${PROJECT_NAME}_aesni>"
"$<BUILD_INTERFACE:${PROJECT_NAME}_sse2>"
"$<BUILD_INTERFACE:${PROJECT_NAME}_ssse3>"
"$<BUILD_INTERFACE:${PROJECT_NAME}_sse41>"
"$<BUILD_INTERFACE:${PROJECT_NAME}_avx2>"
"$<BUILD_INTERFACE:${PROJECT_NAME}_avx512f>"
"$<BUILD_INTERFACE:${PROJECT_NAME}_config_private>"
PUBLIC
${PROJECT_NAME}_config_public
)
endif ()
if (BUILD_SHARED_LIBS)
@ -631,19 +1012,22 @@ if (BUILD_SHARED_LIBS)
)
endif ()
else ()
if (MSVC)
target_compile_definitions(${PROJECT_NAME}
PUBLIC
SODIUM_STATIC
)
else ()
target_compile_definitions(${PROJECT_NAME}_config_public
INTERFACE
SODIUM_STATIC
)
endif( )
endif ()
target_include_directories(${PROJECT_NAME}
PRIVATE
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src/libsodium/include/sodium>
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/sodium>
)
if (BUILD_TESTING)
enable_testing()
file(GLOB sodium_test_sources ${PROJECT_SOURCE_DIR}/test/default/*.c)
foreach (test_src ${sodium_test_sources})
@ -690,26 +1074,31 @@ install(FILES ${CMAKE_BINARY_DIR}/sodium/version.h
DESTINATION include/sodium
)
install(TARGETS ${PROJECT_NAME}
if (MSVC)
install(TARGETS ${PROJECT_NAME}
EXPORT ${PROJECT_NAME}-targets
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
)
else ()
install(
TARGETS
${PROJECT_NAME}
${PROJECT_NAME}_config_public
EXPORT ${PROJECT_NAME}-targets
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
endif ()
install(EXPORT ${PROJECT_NAME}-targets
FILE unofficial-${PROJECT_NAME}Targets.cmake
NAMESPACE unofficial-${PROJECT_NAME}::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/unofficial-${PROJECT_NAME}
)
set(TARGET_NAME unofficial-${PROJECT_NAME}::${PROJECT_NAME})
configure_package_config_file(
${PROJECT_NAME}Config.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/unofficial-${PROJECT_NAME}Config.cmake
INSTALL_DESTINATION ${PROJECT_BINARY_DIR}
DESTINATION share/unofficial-${PROJECT_NAME}
)
write_basic_package_version_file(
@ -718,13 +1107,10 @@ write_basic_package_version_file(
COMPATIBILITY AnyNewerVersion
)
unset(TARGET_NAME)
install(
FILES
${CMAKE_CURRENT_BINARY_DIR}/unofficial-${PROJECT_NAME}Config.cmake
${CMAKE_CURRENT_BINARY_DIR}/unofficial-${PROJECT_NAME}ConfigVersion.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/unofficial-${PROJECT_NAME}
DESTINATION share/unofficial-${PROJECT_NAME}
)
# References:
@ -744,3 +1130,4 @@ install(
# https://stackoverflow.com/questions/15132185/mixing-c-and-assembly-sources-and-build-with-cmake
# https://stackoverflow.com/questions/647892/how-to-check-header-files-and-library-functions-in-cmake-like-it-is-done-in-auto
# https://stackoverflow.com/questions/31038963/how-do-you-rename-a-library-filename-in-cmake
# https://gitlab.kitware.com/cmake/cmake/-/issues/15415

View File

@ -1,5 +0,0 @@
Source: libsodium
Version: 1.0.18
Port-Version: 3
Description: A modern and easy-to-use crypto library
Homepage: https://github.com/jedisct1/libsodium

View File

@ -6,50 +6,38 @@ vcpkg_from_github(
HEAD_REF master
)
configure_file(
${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt
${SOURCE_PATH}/CMakeLists.txt
COPYONLY
)
file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
configure_file(
${CMAKE_CURRENT_LIST_DIR}/sodiumConfig.cmake.in
${SOURCE_PATH}/sodiumConfig.cmake.in
COPYONLY
)
vcpkg_configure_cmake(
vcpkg_cmake_configure(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
OPTIONS
-DBUILD_TESTING=OFF
)
vcpkg_install_cmake()
vcpkg_cmake_install()
vcpkg_copy_pdbs()
vcpkg_fixup_cmake_targets(
CONFIG_PATH lib/cmake/unofficial-sodium
TARGET_PATH share/unofficial-sodium
vcpkg_cmake_config_fixup(
PACKAGE_NAME unofficial-sodium
)
file(REMOVE_RECURSE
${CURRENT_PACKAGES_DIR}/debug/include
${CURRENT_PACKAGES_DIR}/debug/share
)
file(REMOVE ${CURRENT_PACKAGES_DIR}/include/Makefile.am)
if (VCPKG_LIBRARY_LINKAGE STREQUAL "static")
vcpkg_replace_string(
${CURRENT_PACKAGES_DIR}/include/sodium/export.h
"#ifdef SODIUM_STATIC"
"#if 1 //#ifdef SODIUM_STATIC"
)
endif ()
configure_file(
${SOURCE_PATH}/LICENSE
${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright
COPYONLY
)
configure_file(
${CMAKE_CURRENT_LIST_DIR}/sodiumConfig.cmake.in
${CURRENT_PACKAGES_DIR}/share/unofficial-sodium/unofficial-sodiumConfig.cmake
@ONLY
)

View File

@ -1,61 +1,7 @@
# sodium cmake module
# This module sets the following variables in your project:
#
# sodium_FOUND - true if sodium found on the system
# sodium_INCLUDE_DIR - the directory containing sodium headers
# sodium_LIBRARY_DEBUG
# sodium_LIBRARY_RELEASE
# sodium_LIBRARIES
# sodium_VERSION
#
include(FindPackageHandleStandardArgs)
include(SelectLibraryConfigurations)
@PACKAGE_INIT@
if (NOT TARGET @TARGET_NAME@)
include("${CMAKE_CURRENT_LIST_DIR}/unofficial-@PROJECT_NAME@Targets.cmake")
set(@PROJECT_NAME@_VERSION @VERSION@)
get_target_property(@PROJECT_NAME@_INCLUDE_DIR @TARGET_NAME@ INTERFACE_INCLUDE_DIRECTORIES)
get_target_property(@PROJECT_NAME@_LIBRARY_DEBUG @TARGET_NAME@ IMPORTED_IMPLIB_DEBUG)
if (@PROJECT_NAME@_LIBRARY_DEBUG MATCHES ".*-NOTFOUND")
get_target_property(@PROJECT_NAME@_LIBRARY_DEBUG @TARGET_NAME@ IMPORTED_LOCATION_DEBUG)
else ()
get_target_property(@PROJECT_NAME@_DLL_DEBUG @TARGET_NAME@ IMPORTED_LOCATION_DEBUG)
endif ()
get_target_property(@PROJECT_NAME@_LIBRARY_RELEASE @TARGET_NAME@ IMPORTED_IMPLIB_RELEASE)
if (@PROJECT_NAME@_LIBRARY_RELEASE MATCHES ".*-NOTFOUND")
get_target_property(@PROJECT_NAME@_LIBRARY_RELEASE @TARGET_NAME@ IMPORTED_LOCATION_RELEASE)
else ()
get_target_property(@PROJECT_NAME@_DLL_RELEASE @TARGET_NAME@ IMPORTED_LOCATION_RELEASE)
endif ()
select_library_configurations(@PROJECT_NAME@)
endif ()
find_package_handle_standard_args(
@PROJECT_NAME@
REQUIRED_VARS
@PROJECT_NAME@_INCLUDE_DIR
@PROJECT_NAME@_LIBRARIES
VERSION_VAR
@PROJECT_NAME@_VERSION
)
mark_as_advanced(@PROJECT_NAME@_INCLUDE_DIR)
if (WIN32)
mark_as_advanced(@PROJECT_NAME@_DLL_DEBUG)
mark_as_advanced(@PROJECT_NAME@_DLL_RELEASE)
if("@VCPKG_LIBRARY_LINKAGE@" STREQUAL "static" AND NOT WIN32)
include(CMakeFindDependencyMacro)
find_dependency(Threads)
endif()
# References:
# https://github.com/jedisct1/libsodium/blob/master/contrib/Findsodium.cmake
# https://github.com/QuantStack/xeus/blob/master/xeusConfig.cmake.in
# https://github.com/zeromq/libzmq/blob/master/builds/cmake/ZeroMQConfig.cmake.in
include(${CMAKE_CURRENT_LIST_DIR}/unofficial-sodiumTargets.cmake)

View File

@ -0,0 +1,17 @@
{
"name": "libsodium",
"version-string": "1.0.18",
"port-version": 4,
"description": "A modern and easy-to-use crypto library",
"homepage": "https://github.com/jedisct1/libsodium",
"dependencies": [
{
"name": "vcpkg-cmake",
"host": true
},
{
"name": "vcpkg-cmake-config",
"host": true
}
]
}

View File

@ -3434,7 +3434,7 @@
},
"libsodium": {
"baseline": "1.0.18",
"port-version": 3
"port-version": 4
},
"libsoundio": {
"baseline": "2.0.0-3",

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "6ec1ee39e69052d50e773857064d2d06968ee8c3",
"version-string": "1.0.18",
"port-version": 4
},
{
"git-tree": "fc00e8b0dba7ee227aa5d53860c1b5cfe92b8819",
"version-string": "1.0.18",