mirror of
https://github.com/shadowsocks/shadowsocks-libev.git
synced 2026-10-13 15:44:07 +00:00
Bundle pinned offline dependencies, remove libcork/libipset and submodule requirements, and add portable runtime helpers with relocatable static/shared library installations.
Add Clang static build validation for Linux/musl, macOS and Windows, real TCP/UDP and SIP003 interoperability coverage, and recorded performance tradeoffs. All 21 hosted checks pass at the reviewed PR head 8d504e6218.
54 lines
2.7 KiB
CMake
54 lines
2.7 KiB
CMake
# Portable C backend: no assembler or platform build scripts needed. SIMD
|
|
# implementations compile to empty translation units unless enabled by probes.
|
|
file(READ "${sodium_SOURCE}/src/libsodium/Makefile.am" sodium_makefile)
|
|
string(REGEX MATCHALL "[a-zA-Z0-9_/-]+\\.c([ \n\r]|$)" sodium_relative_sources "${sodium_makefile}")
|
|
set(sodium_sources)
|
|
foreach(source IN LISTS sodium_relative_sources)
|
|
string(STRIP "${source}" source)
|
|
list(APPEND sodium_sources "${sodium_SOURCE}/src/libsodium/${source}")
|
|
endforeach()
|
|
list(REMOVE_DUPLICATES sodium_sources)
|
|
set(VERSION 1.0.22)
|
|
set(SODIUM_LIBRARY_VERSION_MAJOR 26)
|
|
set(SODIUM_LIBRARY_VERSION_MINOR 4)
|
|
set(SODIUM_LIBRARY_MINIMAL_DEF "")
|
|
configure_file("${sodium_SOURCE}/src/libsodium/include/sodium/version.h.in"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/sodium-include/sodium/version.h" @ONLY)
|
|
configure_file("${sodium_SOURCE}/src/libsodium/include/sodium/export.h"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/sodium-include/sodium/export.h" COPYONLY)
|
|
add_library(ss_sodium STATIC ${sodium_sources})
|
|
target_include_directories(ss_sodium PUBLIC
|
|
"${CMAKE_CURRENT_BINARY_DIR}/sodium-include"
|
|
"${sodium_SOURCE}/src/libsodium/include"
|
|
PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/sodium-include/sodium" "${sodium_SOURCE}/src/libsodium/include/sodium")
|
|
target_compile_definitions(ss_sodium PUBLIC SODIUM_STATIC PRIVATE DEV_MODE=1)
|
|
if(NOT MSVC)
|
|
target_compile_options(ss_sodium PRIVATE -fno-strict-aliasing -fwrapv)
|
|
endif()
|
|
if(WIN32)
|
|
target_link_libraries(ss_sodium PUBLIC bcrypt)
|
|
endif()
|
|
set(SODIUM_INCLUDE_DIRS "${CMAKE_CURRENT_BINARY_DIR}/sodium-include;${sodium_SOURCE}/src/libsodium/include" PARENT_SCOPE)
|
|
|
|
if(CMAKE_USE_PTHREADS_INIT)
|
|
target_compile_definitions(ss_sodium PRIVATE HAVE_PTHREAD=1)
|
|
target_link_libraries(ss_sodium PUBLIC Threads::Threads)
|
|
endif()
|
|
|
|
# Upstream known-answer tests validate this project's portable CMake adapter.
|
|
if(BUILD_TESTING)
|
|
foreach(name aead_chacha20poly1305 aead_xchacha20poly1305 auth auth2
|
|
chacha20 stream stream2 stream3 stream4 randombytes
|
|
sodium_core sodium_utils sodium_utils2 sodium_utils3)
|
|
if(EXISTS "${sodium_SOURCE}/test/default/${name}.c")
|
|
add_executable(sodium_test_${name} "${sodium_SOURCE}/test/default/${name}.c")
|
|
target_link_libraries(sodium_test_${name} PRIVATE ss_sodium)
|
|
target_include_directories(sodium_test_${name} PRIVATE "${sodium_SOURCE}/test/quirks")
|
|
target_compile_definitions(sodium_test_${name} PRIVATE
|
|
TEST_SRCDIR="${sodium_SOURCE}/test/default")
|
|
add_test(NAME sodium_${name} COMMAND sodium_test_${name})
|
|
set_tests_properties(sodium_${name} PROPERTIES LABELS "vendor" TIMEOUT 120)
|
|
endif()
|
|
endforeach()
|
|
endif()
|