diff --git a/CMakeLists.txt b/CMakeLists.txt index 287cd9b..17ba7b7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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)