From c2dccd2f13c094045f0062f8856d509bb207bc9b Mon Sep 17 00:00:00 2001 From: Mario Fetka Date: Wed, 3 Jun 2026 11:05:06 +0000 Subject: [PATCH] Export prefixed MatrixSSL build include tree --- CMakeLists.txt | 84 ++++++++++++++++++++++--------------- matrixssl/matrixsslApiPre.h | 2 +- 2 files changed, 52 insertions(+), 34 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 439b1e3..8cf42ce 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,7 +32,17 @@ option(MATRIXSSL_BUILD_TOOLS "Build auxiliary tools available from the legacy ma 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_PROGRAM_PREFIX "${MATRIXSSL_LIBRARY_PREFIX}" CACHE STRING "Prefix added to test, app, and tool executable/module output names. Defaults to MATRIXSSL_LIBRARY_PREFIX") -set(MATRIXSSL_INSTALL_INCLUDE_SUBDIR "matrixssl" CACHE STRING "Header install subdirectory below CMAKE_INSTALL_INCLUDEDIR") +set(MATRIXSSL_INSTALL_INCLUDE_SUBDIR "" CACHE STRING "Header install subdirectory below CMAKE_INSTALL_INCLUDEDIR. Empty derives from MATRIXSSL_LIBRARY_PREFIX: matrixssl or matrixssl") +if(MATRIXSSL_INSTALL_INCLUDE_SUBDIR STREQUAL "") + if(MATRIXSSL_LIBRARY_PREFIX STREQUAL "") + set(MATRIXSSL_INSTALL_INCLUDE_SUBDIR "matrixssl") + else() + set(MATRIXSSL_INSTALL_INCLUDE_SUBDIR "${MATRIXSSL_LIBRARY_PREFIX}matrixssl") + endif() +endif() +set(MATRIXSSL_BUILD_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/include") +set(MATRIXSSL_BUILD_PUBLIC_INCLUDE_DIR "${MATRIXSSL_BUILD_INCLUDE_DIR}/${MATRIXSSL_INSTALL_INCLUDE_SUBDIR}") +set(MATRIXSSL_BUILD_OPENSSL_INCLUDE_DIR "${MATRIXSSL_BUILD_INCLUDE_DIR}/openssl") set(MATRIXSSL_CONFIG_DIR "${CMAKE_CURRENT_SOURCE_DIR}/configs/${MATRIXSSL_CONFIG}") if(NOT EXISTS "${MATRIXSSL_CONFIG_DIR}/cryptoConfig.h" OR @@ -56,6 +66,28 @@ if(MATRIXSSL_DISABLE_TLS13) endif() file(WRITE "${MATRIXSSL_GENERATED_DIR}/matrixssl/matrixsslConfig.h" "${MATRIXSSL_CONFIG_TEXT}") +file(MAKE_DIRECTORY + "${MATRIXSSL_BUILD_PUBLIC_INCLUDE_DIR}" + "${MATRIXSSL_BUILD_PUBLIC_INCLUDE_DIR}/crypto" + "${MATRIXSSL_BUILD_OPENSSL_INCLUDE_DIR}") +configure_file("${MATRIXSSL_GENERATED_DIR}/core/config/coreConfig.h" + "${MATRIXSSL_BUILD_PUBLIC_INCLUDE_DIR}/coreConfig.h" COPYONLY) +configure_file("${MATRIXSSL_GENERATED_DIR}/crypto/cryptoConfig.h" + "${MATRIXSSL_BUILD_PUBLIC_INCLUDE_DIR}/cryptoConfig.h" COPYONLY) +configure_file("${MATRIXSSL_GENERATED_DIR}/matrixssl/matrixsslConfig.h" + "${MATRIXSSL_BUILD_PUBLIC_INCLUDE_DIR}/matrixsslConfig.h" COPYONLY) +file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/core/include/" + DESTINATION "${MATRIXSSL_BUILD_PUBLIC_INCLUDE_DIR}" + FILES_MATCHING PATTERN "*.h") +file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/core/osdep/include/" + DESTINATION "${MATRIXSSL_BUILD_PUBLIC_INCLUDE_DIR}" + FILES_MATCHING PATTERN "*.h") +file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/crypto/" + DESTINATION "${MATRIXSSL_BUILD_PUBLIC_INCLUDE_DIR}/crypto" + FILES_MATCHING PATTERN "*.h") +file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/matrixssl/" + DESTINATION "${MATRIXSSL_BUILD_PUBLIC_INCLUDE_DIR}" + FILES_MATCHING PATTERN "*.h") set(MATRIXSSL_COMMON_INCLUDE_DIRS "${MATRIXSSL_GENERATED_DIR}/core/config" "${MATRIXSSL_GENERATED_DIR}/crypto" @@ -233,6 +265,12 @@ else() message(STATUS "Building native MatrixSSL API only") endif() +if(MATRIXSSL_BUILD_OPENSSL_COMPAT AND MATRIXSSL_HAVE_OPENSSL_COMPAT) + file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/openssl/" + DESTINATION "${MATRIXSSL_BUILD_OPENSSL_INCLUDE_DIR}" + FILES_MATCHING PATTERN "*.h") +endif() + set(MATRIXSSL_TLS_SOURCES matrixssl/matrixsslGetSet.c matrixssl/cipherSuite.c @@ -295,21 +333,13 @@ endif() function(matrixssl_configure_target target_name) target_sources(${target_name} PRIVATE ${MATRIXSSL_ALL_SOURCES}) target_include_directories(${target_name} - PUBLIC - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ - $ PRIVATE - ${MATRIXSSL_COMMON_INCLUDE_DIRS}) + ${MATRIXSSL_COMMON_INCLUDE_DIRS} + INTERFACE + $ + $ + $ + $) target_compile_features(${target_name} PRIVATE c_std_99) target_compile_definitions(${target_name} PUBLIC MATRIX_CONFIGURATION_INCDIR_FIRST) target_compile_options(${target_name} PRIVATE -ffunction-sections -fdata-sections -fno-math-errno) @@ -515,26 +545,14 @@ if(MATRIXSSL_BUILD_STATIC) ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() -install(FILES - "${MATRIXSSL_GENERATED_DIR}/core/config/coreConfig.h" - "${MATRIXSSL_GENERATED_DIR}/crypto/cryptoConfig.h" - "${MATRIXSSL_GENERATED_DIR}/matrixssl/matrixsslConfig.h" - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${MATRIXSSL_INSTALL_INCLUDE_SUBDIR}) -install(DIRECTORY core/include/ +install(DIRECTORY "${MATRIXSSL_BUILD_PUBLIC_INCLUDE_DIR}/" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${MATRIXSSL_INSTALL_INCLUDE_SUBDIR} FILES_MATCHING PATTERN "*.h") -install(DIRECTORY core/osdep/include/ - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${MATRIXSSL_INSTALL_INCLUDE_SUBDIR} - FILES_MATCHING PATTERN "*.h") -install(DIRECTORY crypto/ - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${MATRIXSSL_INSTALL_INCLUDE_SUBDIR}/crypto - FILES_MATCHING PATTERN "*.h") -install(DIRECTORY matrixssl/ - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${MATRIXSSL_INSTALL_INCLUDE_SUBDIR}/matrixssl - FILES_MATCHING PATTERN "*.h") -install(DIRECTORY openssl/ - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${MATRIXSSL_INSTALL_INCLUDE_SUBDIR}/openssl - FILES_MATCHING PATTERN "*.h") +if(MATRIXSSL_BUILD_OPENSSL_COMPAT AND MATRIXSSL_HAVE_OPENSSL_COMPAT) + install(DIRECTORY "${MATRIXSSL_BUILD_OPENSSL_INCLUDE_DIR}/" + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/openssl + FILES_MATCHING PATTERN "*.h") +endif() install(EXPORT matrixsslTargets NAMESPACE MATRIXSSL:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/matrixssl) diff --git a/matrixssl/matrixsslApiPre.h b/matrixssl/matrixsslApiPre.h index d1e3204..2f769aa 100644 --- a/matrixssl/matrixsslApiPre.h +++ b/matrixssl/matrixsslApiPre.h @@ -37,7 +37,7 @@ # define _h_MATRIXSSL_API_PRE # include "coreApi.h" /* cryptoApi.h and matrixsslApi.h depend on this */ -# include "../crypto/cryptoApi.h" /* matrixsslApi.h depend on cryptoApi.h. */ +# include "crypto/cryptoApi.h" /* matrixsslApi.h depend on cryptoApi.h. */ # ifdef MATRIX_CONFIGURATION_INCDIR_FIRST # include /* Get matrixssl configuration from -I dir. */