Skip to content

Commit caec233

Browse files
refactor: migrate to modules and support module-based document generation
1 parent 85a223a commit caec233

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+1130
-739
lines changed

pixi.lock

Lines changed: 197 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pixi.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ cmake = ">=3.30"
2323
ninja = "*"
2424
clang = "==20.1.8"
2525
clangxx = "==20.1.8"
26+
clang-tools = "==20.1.8"
2627
lld = "==20.1.8"
2728
llvm-tools = "==20.1.8"
2829
compiler-rt = "==20.1.8"

src/CMakeLists.txt

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,34 @@
1-
file(GLOB_RECURSE CLORE_CORE_SOURCES CONFIGURE_DEPENDS
2-
"${CMAKE_CURRENT_SOURCE_DIR}/config/*.cpp"
3-
"${CMAKE_CURRENT_SOURCE_DIR}/extract/*.cpp"
4-
"${CMAKE_CURRENT_SOURCE_DIR}/generate/*.cpp"
5-
"${CMAKE_CURRENT_SOURCE_DIR}/support/*.cpp"
1+
file(GLOB_RECURSE CLORE_MODULE_SOURCES CONFIGURE_DEPENDS
2+
"${CMAKE_CURRENT_SOURCE_DIR}/config/*.cppm"
3+
"${CMAKE_CURRENT_SOURCE_DIR}/extract/*.cppm"
4+
"${CMAKE_CURRENT_SOURCE_DIR}/generate/*.cppm"
5+
"${CMAKE_CURRENT_SOURCE_DIR}/support/*.cppm"
66
)
77

8-
add_library(clore-core STATIC ${CLORE_CORE_SOURCES})
8+
# ── locate clang-scan-deps (required for C++20 module compilation) ───
9+
find_program(CLANG_SCAN_DEPS_EXE
10+
NAMES clang-scan-deps
11+
HINTS
12+
"${CMAKE_CXX_COMPILER}/../"
13+
"$ENV{CONDA_PREFIX}/Library/bin"
14+
"$ENV{CONDA_PREFIX}/bin"
15+
)
16+
if(CLANG_SCAN_DEPS_EXE)
17+
set(CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS "${CLANG_SCAN_DEPS_EXE}" CACHE FILEPATH "" FORCE)
18+
message(STATUS "Found clang-scan-deps: ${CLANG_SCAN_DEPS_EXE}")
19+
else()
20+
message(STATUS "clang-scan-deps not found; will rely on CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS cache")
21+
endif()
22+
23+
add_library(clore-core STATIC)
924
add_library(clore::core ALIAS clore-core)
25+
set_property(TARGET clore-core PROPERTY CXX_SCAN_FOR_MODULES ON)
26+
27+
target_sources(clore-core
28+
PUBLIC
29+
FILE_SET CXX_MODULES FILES
30+
${CLORE_MODULE_SOURCES}
31+
)
1032

1133
target_include_directories(clore-core PUBLIC
1234
"${CMAKE_CURRENT_SOURCE_DIR}"
@@ -22,6 +44,7 @@ target_link_libraries(clore-core PUBLIC
2244
)
2345

2446
add_executable(clore "${CMAKE_CURRENT_SOURCE_DIR}/main.cpp")
47+
set_property(TARGET clore PROPERTY CXX_SCAN_FOR_MODULES ON)
2548
target_link_libraries(clore PRIVATE clore::core eventide::deco)
2649
install(TARGETS clore RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
2750

@@ -50,6 +73,7 @@ if(CLORE_ENABLE_TEST)
5073
"${PROJECT_SOURCE_DIR}/tests/unit"
5174
)
5275
target_link_libraries(unit_tests PRIVATE clore::core eventide::zest eventide::deco)
76+
set_property(TARGET unit_tests PROPERTY CXX_SCAN_FOR_MODULES ON)
5377
endif()
5478

5579
if(CLORE_ENABLE_IPO)

src/config/config.cppm

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
export module clore.config;
2+
3+
export import :schema;
4+
export import :load;
5+
export import :normalize;
6+
export import :validate;

src/config/config.h

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

0 commit comments

Comments
 (0)