From 240cba14917d9f02dc6a4efa9c27b6949dfb3e7c Mon Sep 17 00:00:00 2001 From: Greg Hewett Date: Fri, 25 Aug 2023 16:34:35 -0500 Subject: [PATCH] adding some CMake help --- CMakeLists.txt | 43 ++++++++++++++++++++++++++++-------------- include/namespace.h.in | 2 +- 2 files changed, 30 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b655e56b..d55d18e4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.12) project(mlspp - VERSION 3 + VERSION 3.0.1 LANGUAGES CXX ) @@ -14,11 +14,26 @@ option(SANITIZERS "Enable sanitizers" OFF) ### set_property(GLOBAL PROPERTY USE_FOLDERS ON) -set(MLS_NAMESPACE mls_v${PROJECT_VERSION}) +### +### Determine Namespacing +### Using the version number of the project to create the namespace. +### 3.0.0 -> v3 +### 3.1.0 -> v3_1 +### 3.1.1 -> v3_1_1 +### +set(MLS_NAMESPACE_VERSION "v${PROJECT_VERSION}") +string(REPLACE "." "_" MLS_NAMESPACE_VERSION ${MLS_NAMESPACE_VERSION}) +string(REGEX REPLACE "_0$" "" MLS_NAMESPACE_VERSION ${MLS_NAMESPACE_VERSION}) +string(REGEX REPLACE "_0$" "" MLS_NAMESPACE_VERSION ${MLS_NAMESPACE_VERSION}) +set(MLS_CPP_NAMESPACE "mls${MLS_NAMESPACE_VERSION}") +set(MLS_CMAKE_NAMESPACE "MLSPP${MLS_NAMESPACE_VERSION}") +set(MLS_CMAKE_CONFIG_NAMESPACE "mlspp${MLS_NAMESPACE_VERSION}") configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/namespace.h.in" "${CMAKE_BINARY_DIR}/include/namespace.h" @ONLY) include_directories("${CMAKE_BINARY_DIR}/include") -message(STATUS "Using namespace: ${MLS_NAMESPACE}") +message(STATUS "MLS_CPP_NAMESPACE: ${MLS_CPP_NAMESPACE}") +message(STATUS "MLS_CMAKE_NAMESPACE: ${MLS_CMAKE_NAMESPACE}") +message(STATUS "MLS_CMAKE_CONFIG_NAMESPACE: ${MLS_CMAKE_CONFIG_NAMESPACE}") include(CheckCXXCompilerFlag) include(CMakePackageConfigHelpers) @@ -115,7 +130,7 @@ target_link_libraries(${LIB_NAME} bytes tls_syntax hpke) target_include_directories(${LIB_NAME} PUBLIC $ - $ + $ PRIVATE ${OPENSSL_INCLUDE_DIR} ) @@ -132,17 +147,17 @@ endif() ### set(CMAKE_EXPORT_PACKAGE_REGISTRY ON) export(EXPORT mlspp-targets - NAMESPACE MLSPP:: - FILE ${CMAKE_CURRENT_BINARY_DIR}/mlspp-targets.cmake) -export(PACKAGE MLSPP) + NAMESPACE ${MLS_CMAKE_NAMESPACE}:: + FILE ${CMAKE_CURRENT_BINARY_DIR}/${MLS_CMAKE_CONFIG_NAMESPACE}-targets.cmake) +export(PACKAGE ${MLS_CMAKE_NAMESPACE}) configure_package_config_file(cmake/config.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/mlspp-config.cmake + ${CMAKE_CURRENT_BINARY_DIR}/${MLS_CMAKE_CONFIG_NAMESPACE}-config.cmake INSTALL_DESTINATION ${CMAKE_INSTALL_DATADIR}/mlspp NO_SET_AND_CHECK_MACRO) write_basic_package_version_file( - ${CMAKE_CURRENT_BINARY_DIR}/mlspp-config-version.cmake + ${CMAKE_CURRENT_BINARY_DIR}/${MLS_CMAKE_CONFIG_NAMESPACE}-config-version.cmake VERSION ${PROJECT_VERSION} COMPATIBILITY SameMajorVersion) @@ -156,13 +171,13 @@ install( DIRECTORY include/ DESTINATION - ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}) + ${CMAKE_INSTALL_INCLUDEDIR}/${MLS_CPP_NAMESPACE}) install( FILES - ${CMAKE_CURRENT_BINARY_DIR}/mlspp-config.cmake - ${CMAKE_CURRENT_BINARY_DIR}/mlspp-config-version.cmake - ${CMAKE_CURRENT_BINARY_DIR}/mlspp-targets.cmake + ${CMAKE_CURRENT_BINARY_DIR}/${MLS_CMAKE_CONFIG_NAMESPACE}-config.cmake + ${CMAKE_CURRENT_BINARY_DIR}/${MLS_CMAKE_CONFIG_NAMESPACE}-config-version.cmake + ${CMAKE_CURRENT_BINARY_DIR}/${MLS_CMAKE_CONFIG_NAMESPACE}-targets.cmake DESTINATION - ${CMAKE_INSTALL_DATADIR}/mlspp) + ${CMAKE_INSTALL_DATADIR}/${MLS_CPP_NAMESPACE}) diff --git a/include/namespace.h.in b/include/namespace.h.in index fbd89dcf..e848c94e 100644 --- a/include/namespace.h.in +++ b/include/namespace.h.in @@ -1,4 +1,4 @@ #pragma once // Configurable top-level MLS namespace -#define MLS_NAMESPACE @MLS_NAMESPACE@ +#define MLS_NAMESPACE @MLS_CPP_NAMESPACE@