Skip to content

Commit 10f099e

Browse files
committed
Cleanup cmake files
1 parent cc80348 commit 10f099e

10 files changed

Lines changed: 94 additions & 81 deletions

File tree

.clang-format-ignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
test/catch2/

.github/workflows/format.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
with:
2626
clang-format-version: "22"
2727
check-path: "."
28-
exclude-regex: 'test/catch\.hpp'
28+
exclude-regex: 'test/catch2/'
2929

3030
# gersemi
3131
- name: Set up Python

CMakeLists.txt

Lines changed: 41 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -5,73 +5,87 @@
55
# Distributed under the Boost Software License, Version 1.0. (See accompanying
66
# file LICENSE.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
77

8-
cmake_minimum_required(VERSION 3.23...3.31)
8+
cmake_minimum_required(VERSION 3.25...4.2.3)
99

1010
project(Eggs.FlatMap CXX)
1111

12-
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
12+
include(GNUInstallDirs)
1313

1414
if(PROJECT_IS_TOP_LEVEL)
15-
include(CTest)
15+
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
16+
set(CMAKE_CXX_SCAN_FOR_MODULES OFF)
17+
18+
include(CTest) # option(BUILD_TESTING ...)
1619
option(BUILD_EXAMPLE "Build the examples" ON)
1720
option(ENABLE_INSTALL "Enable installing the library" ON)
21+
set(SYSTEM OFF)
1822
else()
19-
option(EGGS_FLAT_MAP_BUILD_EXAMPLE "Build the examples" OFF)
2023
option(EGGS_FLAT_MAP_BUILD_TESTING "Build the testing tree" OFF)
24+
option(EGGS_FLAT_MAP_BUILD_EXAMPLE "Build the examples" OFF)
2125
option(EGGS_FLAT_MAP_ENABLE_INSTALL "Enable installing the library" OFF)
2226

2327
set(BUILD_EXAMPLE ${EGGS_FLAT_MAP_BUILD_EXAMPLE})
2428
set(BUILD_TESTING ${EGGS_FLAT_MAP_BUILD_TESTING})
2529
set(ENABLE_INSTALL ${EGGS_FLAT_MAP_ENABLE_INSTALL})
30+
set(SYSTEM ON)
2631
endif()
2732

28-
include(GNUInstallDirs)
29-
30-
# ============================================================================
31-
# Library target
32-
# ============================================================================
33-
33+
# Library target (header-only INTERFACE library)
3434
add_library(_eggs_flat_map INTERFACE)
3535
target_sources(
3636
_eggs_flat_map
3737
INTERFACE FILE_SET HEADERS BASE_DIRS include FILES include/eggs/flat_map.hpp
3838
)
39+
set_target_properties(
40+
_eggs_flat_map
41+
PROPERTIES
42+
EXPORT_NAME FlatMap
43+
SYSTEM ${SYSTEM}
44+
VERIFY_INTERFACE_HEADER_SETS ${BUILD_TESTING}
45+
)
3946
target_compile_features(_eggs_flat_map INTERFACE cxx_std_23)
40-
set_target_properties(_eggs_flat_map PROPERTIES EXPORT_NAME FlatMap)
4147

4248
add_library(Eggs::FlatMap ALIAS _eggs_flat_map)
4349

44-
# ============================================================================
4550
# Example
46-
# ============================================================================
47-
4851
if(BUILD_EXAMPLE)
4952
add_subdirectory(example)
5053
endif()
5154

52-
# ============================================================================
5355
# Test
54-
# ============================================================================
55-
5656
if(BUILD_TESTING)
5757
add_subdirectory(test)
5858
endif()
5959

60-
# ============================================================================
6160
# Install
62-
# ============================================================================
63-
6461
if(ENABLE_INSTALL)
62+
include(CMakePackageConfigHelpers)
63+
64+
install(TARGETS _eggs_flat_map EXPORT Eggs::FlatMap FILE_SET HEADERS)
65+
6566
install(
66-
TARGETS _eggs_flat_map
67-
EXPORT _targets
68-
FILE_SET HEADERS DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
67+
EXPORT Eggs::FlatMap
68+
NAMESPACE Eggs::
69+
FILE Eggs.FlatMapTargets.cmake
70+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Eggs.FlatMap
71+
)
72+
73+
file(
74+
GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/Eggs.FlatMapConfig.cmake"
75+
CONTENT
76+
[[include("${CMAKE_CURRENT_LIST_DIR}/Eggs.FlatMapTargets.cmake")]]
77+
)
78+
79+
write_basic_package_version_file(
80+
${CMAKE_CURRENT_BINARY_DIR}/Eggs.FlatMapConfigVersion.cmake
81+
VERSION 1.0.0
82+
COMPATIBILITY SameMajorVersion
6983
)
7084

7185
install(
72-
EXPORT _targets
73-
NAMESPACE Eggs::
74-
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/eggs.flat_map
75-
FILE eggs.flat_map-config.cmake
86+
FILES
87+
${CMAKE_CURRENT_BINARY_DIR}/Eggs.FlatMapConfig.cmake
88+
${CMAKE_CURRENT_BINARY_DIR}/Eggs.FlatMapConfigVersion.cmake
89+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Eggs.FlatMap
7690
)
7791
endif()

CMakePresets.json

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,12 @@
1212
"generator": "Ninja Multi-Config",
1313
"binaryDir": "${sourceDir}/build/${presetName}",
1414
"cacheVariables": {
15+
"CMAKE_CONFIGURATION_TYPES": "Debug;Release",
16+
"CMAKE_CXX_STANDARD": "23",
17+
"CMAKE_CXX_STANDARD_REQUIRED": "ON",
18+
"CMAKE_CXX_EXTENSIONS": "OFF",
19+
"CMAKE_COMPILE_WARNING_AS_ERROR": "ON",
20+
"CMAKE_LINK_WARNING_AS_ERROR": "ON",
1521
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
1622
"BUILD_EXAMPLE": "ON",
1723
"BUILD_TESTING": "ON",
@@ -25,9 +31,6 @@
2531
"cacheVariables": {
2632
"CMAKE_C_COMPILER": "gcc",
2733
"CMAKE_CXX_COMPILER": "g++"
28-
},
29-
"environment": {
30-
"CXXFLAGS": "-std=c++23 -Wall -Wextra -Wpedantic -Werror"
3134
}
3235
},
3336
{
@@ -37,9 +40,6 @@
3740
"cacheVariables": {
3841
"CMAKE_C_COMPILER": "clang",
3942
"CMAKE_CXX_COMPILER": "clang++"
40-
},
41-
"environment": {
42-
"CXXFLAGS": "-std=c++23 -Wall -Wextra -Wpedantic -Werror"
4343
}
4444
},
4545
{
@@ -48,7 +48,7 @@
4848
"inherits": "dev-clang",
4949
"cacheVariables": {},
5050
"environment": {
51-
"CXXFLAGS": "-std=c++23 -stdlib=libc++ -Wall -Wextra -Wpedantic -Werror",
51+
"CXXFLAGS": "-stdlib=libc++",
5252
"LDFLAGS": "-stdlib=libc++"
5353
}
5454
},
@@ -59,9 +59,6 @@
5959
"cacheVariables": {
6060
"CMAKE_C_COMPILER": "cl",
6161
"CMAKE_CXX_COMPILER": "cl"
62-
},
63-
"environment": {
64-
"CXXFLAGS": "/std:c++23preview /permissive- /EHsc /W4"
6562
}
6663
},
6764
{
@@ -74,7 +71,7 @@
7471
"displayName": "TSan / Clang",
7572
"inherits": "dev-clang",
7673
"environment": {
77-
"CXXFLAGS": "-fsanitize=thread -fno-omit-frame-pointer -Wall -Wextra"
74+
"CXXFLAGS": "-fsanitize=thread -fno-omit-frame-pointer"
7875
}
7976
}
8077
],

example/CMakeLists.txt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,9 @@
55
# Distributed under the Boost Software License, Version 1.0. (See accompanying
66
# file LICENSE.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
77

8-
add_executable(example.entity_db entity_db.cpp)
9-
target_link_libraries(example.entity_db PRIVATE Eggs::FlatMap)
8+
add_executable(_eggs_flat_map_example.entity_db entity_db.cpp)
9+
target_link_libraries(_eggs_flat_map_example.entity_db PRIVATE Eggs::FlatMap)
10+
set_target_properties(
11+
_eggs_flat_map_example.entity_db
12+
PROPERTIES FOLDER "example"
13+
)

test/CMakeLists.txt

Lines changed: 15 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,22 @@
1+
# Eggs.FlatMap
2+
#
13
# Copyright Agustin K-ballo Berge, Fusion Fenix 2026
24
#
35
# Distributed under the Boost Software License, Version 1.0. (See accompanying
46
# file LICENSE.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
57

6-
# ── Vendored Catch2 v2 single-header ────────────────────────────────────────
7-
8-
add_library(_catch2 INTERFACE)
9-
target_include_directories(
10-
_catch2
11-
SYSTEM
12-
INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}"
13-
)
14-
# cuts per-TU overhead in v2
15-
target_compile_definitions(_catch2 INTERFACE CATCH_CONFIG_FAST_COMPILE)
16-
17-
# ── Shared test main (compiled once, linked into every test executable) ──────
8+
# ── Verify interface header sets ────────────────────────────────────────────
189

19-
add_library(_eggs_flat_map_test_main OBJECT catch.cpp)
20-
target_link_libraries(_eggs_flat_map_test_main PUBLIC Eggs::FlatMap _catch2)
21-
set_target_properties(
22-
_eggs_flat_map_test_main
23-
PROPERTIES
24-
FOLDER "test"
25-
CXX_STANDARD 23
26-
CXX_STANDARD_REQUIRED ON
27-
CXX_EXTENSIONS OFF
28-
CXX_SCAN_FOR_MODULES OFF
10+
add_test(
11+
NAME eggs.flat_map.verify_headers
12+
COMMAND
13+
${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target
14+
_eggs_flat_map_verify_interface_header_sets
2915
)
16+
set_tests_properties(eggs.flat_map.verify_headers PROPERTIES LABEL "headers")
3017

3118
# ── One executable + one CTest per test source ───────────────────────────────
19+
add_subdirectory(catch2)
3220

3321
set(_test_sources
3422
access.cpp
@@ -58,16 +46,12 @@ foreach(_src IN LISTS _test_sources)
5846
set(_target "_eggs_flat_map_test.${_name}")
5947

6048
add_executable(${_target} "${_src}")
61-
target_link_libraries(${_target} PRIVATE _eggs_flat_map_test_main)
62-
set_target_properties(
49+
target_link_libraries(
6350
${_target}
64-
PROPERTIES
65-
FOLDER "test"
66-
CXX_STANDARD 23
67-
CXX_STANDARD_REQUIRED ON
68-
CXX_EXTENSIONS OFF
69-
CXX_SCAN_FOR_MODULES OFF
51+
PRIVATE Eggs::FlatMap _eggs_flat_map_catch2
7052
)
53+
set_target_properties(${_target} PROPERTIES FOLDER "test")
7154

72-
add_test(NAME "flat_map.${_name}" COMMAND ${_target})
55+
add_test(NAME "eggs.flat_map.${_name}" COMMAND ${_target})
56+
set_tests_properties("eggs.flat_map.${_name}" PROPERTIES LABEL "unit")
7357
endforeach()

test/catch.cpp

Lines changed: 0 additions & 9 deletions
This file was deleted.

test/catch2/CMakeLists.txt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Eggs.FlatMap
2+
#
3+
# Copyright Agustin K-ballo Berge, Fusion Fenix 2026
4+
#
5+
# Distributed under the Boost Software License, Version 1.0. (See accompanying
6+
# file LICENSE.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7+
8+
# ── Vendored Catch2 v2 single-header ────────────────────────────────────────
9+
10+
add_library(_eggs_flat_map_catch2 OBJECT catch.cpp)
11+
target_include_directories(
12+
_eggs_flat_map_catch2
13+
SYSTEM
14+
PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}"
15+
)
16+
target_compile_definitions(
17+
_eggs_flat_map_catch2
18+
INTERFACE CATCH_CONFIG_FAST_COMPILE
19+
)
20+
set_target_properties(_eggs_flat_map_catch2 PROPERTIES FOLDER "test/catch2")

test/catch2/catch.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#define CATCH_CONFIG_MAIN
2+
#include "catch.hpp"
File renamed without changes.

0 commit comments

Comments
 (0)