Export prefixed MatrixSSL build include tree

This commit is contained in:
Mario Fetka
2026-06-03 11:05:06 +00:00
parent 42c376f81b
commit c2dccd2f13
2 changed files with 52 additions and 34 deletions

View File

@@ -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 <prefix>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
$<BUILD_INTERFACE:${MATRIXSSL_GENERATED_DIR}/core/config>
$<BUILD_INTERFACE:${MATRIXSSL_GENERATED_DIR}/crypto>
$<BUILD_INTERFACE:${MATRIXSSL_GENERATED_DIR}/matrixssl>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/crypto/aead/chacha20poly1305ietf>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/crypto/scalarmult/include/sodium>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/crypto/crypto_sign/include/sodium>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/core/include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/core/osdep/include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/crypto>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/matrixssl>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/${MATRIXSSL_INSTALL_INCLUDE_SUBDIR}>
PRIVATE
${MATRIXSSL_COMMON_INCLUDE_DIRS})
${MATRIXSSL_COMMON_INCLUDE_DIRS}
INTERFACE
$<BUILD_INTERFACE:${MATRIXSSL_BUILD_INCLUDE_DIR}>
$<BUILD_INTERFACE:${MATRIXSSL_BUILD_PUBLIC_INCLUDE_DIR}>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/${MATRIXSSL_INSTALL_INCLUDE_SUBDIR}>)
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)

View File

@@ -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 <matrixsslConfig.h> /* Get matrixssl configuration from -I dir. */