Skip to content

Commit

Permalink
adding some CMake help
Browse files Browse the repository at this point in the history
  • Loading branch information
Greg Hewett committed Aug 25, 2023
1 parent 730b0b2 commit 240cba1
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 15 deletions.
43 changes: 29 additions & 14 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.12)

project(mlspp
VERSION 3
VERSION 3.0.1
LANGUAGES CXX
)

Expand All @@ -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)
Expand Down Expand Up @@ -115,7 +130,7 @@ target_link_libraries(${LIB_NAME} bytes tls_syntax hpke)
target_include_directories(${LIB_NAME}
PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include/${PROJECT_NAME}>
$<INSTALL_INTERFACE:include/${MLS_CPP_NAMESPACE}>
PRIVATE
${OPENSSL_INCLUDE_DIR}
)
Expand All @@ -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)

Expand All @@ -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})

2 changes: 1 addition & 1 deletion include/namespace.h.in
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#pragma once

// Configurable top-level MLS namespace
#define MLS_NAMESPACE @MLS_NAMESPACE@
#define MLS_NAMESPACE @MLS_CPP_NAMESPACE@

0 comments on commit 240cba1

Please sign in to comment.