build: add soname and optional OpenSSL compat detection

This commit is contained in:
Test
2026-06-03 07:12:02 +00:00
committed by Mario Fetka
parent d8c15d2272
commit 96178c28d0

View File

@@ -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)