@@ -9,6 +9,17 @@ option(TESTING "Build tests" OFF)
99option (CLANG_TIDY "Perform linting with clang-tidy" OFF )
1010option (SANITIZERS "Enable sanitizers" OFF )
1111option (NO_ALLOC "Build without needing an allocator" OFF )
12+ option (NAMESPACE_SUFFIX "Namespace Suffix for CXX and CMake Export" )
13+
14+ if (NAMESPACE_SUFFIX)
15+ set (SFRAME_CXX_NAMESPACE "sframe_${NAMESPACE_SUFFIX} " CACHE STRING "Top-level Namespace for CXX" )
16+ set (SFRAME_EXPORT_NAMESPACE "SFrame${NAMESPACE_SUFFIX} " CACHE STRING "Namespace for CMake Export" )
17+ else ()
18+ set (SFRAME_CXX_NAMESPACE "sframe" CACHE STRING "Top-level Namespace for CXX" )
19+ set (SFRAME_EXPORT_NAMESPACE "SFrame" CACHE STRING "Namespace for CMake Export" )
20+ endif ()
21+ message (STATUS "CXX Namespace: ${SFRAME_CXX_NAMESPACE} " )
22+ message (STATUS "CMake Export Namespace: ${SFRAME_EXPORT_NAMESPACE} " )
1223
1324# Use -DCRYPTO=(OPENSSL_1_1 | OPENSSL_3 | BORINGSSL) to configure crypto
1425if (NOT DEFINED CRYPTO)
@@ -20,6 +31,12 @@ endif()
2031###
2132set_property (GLOBAL PROPERTY USE_FOLDERS ON )
2233
34+ configure_file (
35+ "${CMAKE_CURRENT_SOURCE_DIR} /cmake/namespace.h.in"
36+ "${CMAKE_CURRENT_BINARY_DIR} /include/namespace.h"
37+ @ONLY
38+ )
39+
2340set (CMAKE_CXX_STANDARD 17)
2441set (CMAKE_CXX_STANDARD_REQUIRED ON )
2542if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU" )
@@ -87,13 +104,15 @@ endif()
87104set (LIB_NAME "${PROJECT_NAME} " )
88105
89106file (GLOB_RECURSE LIB_HEADERS CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR} /include/*.h" )
107+ file (GLOB_RECURSE LIB_GENERATED_HEADERS CONFIGURE_DEPENDS "${CMAKE_CURRENT_BINARY_DIR} /include/*.h" )
90108file (GLOB_RECURSE LIB_SOURCES CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR} /src/*.cpp" )
91109
92- add_library (${LIB_NAME} ${LIB_HEADERS} ${LIB_SOURCES} )
110+ add_library (${LIB_NAME} ${LIB_HEADERS} ${LIB_GENERATED_HEADERS} ${ LIB_SOURCES} )
93111target_link_libraries (${LIB_NAME} PRIVATE ${CRYPTO_LIB} )
94112target_include_directories (${LIB_NAME}
95113 PUBLIC
96- $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR} /include >
114+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include >
115+ $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR} /include >
97116 $<INSTALL_INTERFACE:include /${PROJECT_NAME} -${PROJECT_VERSION} >
98117)
99118
0 commit comments