build: add soname and optional OpenSSL compat detection
This commit is contained in:
@@ -7,6 +7,7 @@ include(GNUInstallDirs)
|
||||
option(MATRIXSSL_BUILD_SHARED "Build MatrixSSL as a shared library" ON)
|
||||
option(MATRIXSSL_BUILD_STATIC "Build MatrixSSL as a static library" OFF)
|
||||
option(MATRIXSSL_DISABLE_TLS13 "Disable TLS 1.3 in the generated CMake configuration" ON)
|
||||
option(MATRIXSSL_BUILD_OPENSSL_COMPAT "Build MatrixSSL OpenSSL compatibility sources when this source tree provides them" OFF)
|
||||
set(MATRIXSSL_CONFIG "default" CACHE STRING "MatrixSSL configuration directory under configs/")
|
||||
set(MATRIXSSL_LIBRARY_PREFIX "" CACHE STRING "Prefix added to installed library output names, e.g. 'nw' for libnwmatrixssl")
|
||||
set(MATRIXSSL_INSTALL_INCLUDE_SUBDIR "matrixssl" CACHE STRING "Header install subdirectory below CMAKE_INSTALL_INCLUDEDIR")
|
||||
@@ -192,6 +193,25 @@ set(MATRIXSSL_CRYPTO_SOURCES
|
||||
crypto/crypto_sign/ed25519/ref10/open.c
|
||||
crypto/crypto_sign/ps_ed25519.c)
|
||||
|
||||
set(MATRIXSSL_OPENSSL_COMPAT_SOURCES
|
||||
matrixssl/opensslApi.c
|
||||
matrixssl/opensslSocket.c)
|
||||
|
||||
set(MATRIXSSL_HAVE_OPENSSL_COMPAT TRUE)
|
||||
foreach(_matrixssl_compat_source IN LISTS MATRIXSSL_OPENSSL_COMPAT_SOURCES)
|
||||
if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${_matrixssl_compat_source}")
|
||||
set(MATRIXSSL_HAVE_OPENSSL_COMPAT FALSE)
|
||||
endif()
|
||||
endforeach()
|
||||
if(MATRIXSSL_BUILD_OPENSSL_COMPAT AND NOT MATRIXSSL_HAVE_OPENSSL_COMPAT)
|
||||
message(FATAL_ERROR "MATRIXSSL_BUILD_OPENSSL_COMPAT=ON was requested, but this MatrixSSL source tree does not contain opensslApi.c/opensslSocket.c")
|
||||
endif()
|
||||
if(MATRIXSSL_HAVE_OPENSSL_COMPAT)
|
||||
message(STATUS "MatrixSSL OpenSSL compatibility sources found")
|
||||
else()
|
||||
message(STATUS "MatrixSSL OpenSSL compatibility sources not found; building native MatrixSSL API only")
|
||||
endif()
|
||||
|
||||
set(MATRIXSSL_TLS_SOURCES
|
||||
matrixssl/matrixsslGetSet.c
|
||||
matrixssl/cipherSuite.c
|
||||
@@ -247,6 +267,9 @@ set(MATRIXSSL_ALL_SOURCES
|
||||
${MATRIXSSL_CORE_SOURCES}
|
||||
${MATRIXSSL_CRYPTO_SOURCES}
|
||||
${MATRIXSSL_TLS_SOURCES})
|
||||
if(MATRIXSSL_BUILD_OPENSSL_COMPAT AND MATRIXSSL_HAVE_OPENSSL_COMPAT)
|
||||
list(APPEND MATRIXSSL_ALL_SOURCES ${MATRIXSSL_OPENSSL_COMPAT_SOURCES})
|
||||
endif()
|
||||
|
||||
function(matrixssl_configure_target target_name)
|
||||
target_sources(${target_name} PRIVATE ${MATRIXSSL_ALL_SOURCES})
|
||||
@@ -276,7 +299,9 @@ function(matrixssl_configure_target target_name)
|
||||
target_link_libraries(${target_name} PUBLIC pthread m)
|
||||
endif()
|
||||
set_target_properties(${target_name} PROPERTIES
|
||||
OUTPUT_NAME "${MATRIXSSL_LIBRARY_PREFIX}matrixssl")
|
||||
OUTPUT_NAME "${MATRIXSSL_LIBRARY_PREFIX}matrixssl"
|
||||
VERSION "${PROJECT_VERSION}"
|
||||
SOVERSION "${PROJECT_VERSION_MAJOR}")
|
||||
endfunction()
|
||||
|
||||
if(MATRIXSSL_BUILD_SHARED)
|
||||
|
||||
Reference in New Issue
Block a user