Skip to content

Commit e6aa0ca

Browse files
committed
Make it more usable
1 parent 67a338f commit e6aa0ca

File tree

3 files changed

+33
-12
lines changed

3 files changed

+33
-12
lines changed

CMakeLists.txt

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
22

33
if(CMAKE_CXX_STANDARD STREQUAL 26)
4-
set(CMAKE_CXX_SCAN_FOR_MODULES 1)
5-
set(CMAKE_CXX_MODULE_STD 1)
64
if(CMAKE_CXX_MODULE_STD)
5+
set(CMAKE_CXX_SCAN_FOR_MODULES 1)
76
set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD
87
"d0edc3af-4c50-42ea-a356-e2862fe7a444"
98
)
109
endif()
1110
set(CMAKE_CXX_STANDARD_REQUIRED OFF)
11+
add_definitions(-DHAS_STDLIB_MODULES)
1212
endif()
1313

1414
cmake_minimum_required(VERSION 3.28...4.0)
@@ -20,7 +20,28 @@ project(
2020
VERSION 0.0.1
2121
)
2222

23+
# module will only compile with gcc15 or clang20 and above
24+
if(
25+
CMAKE_CXX_COMPILER_ID STREQUAL "Clang"
26+
AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 20
27+
)
28+
set(CMAKE_CXX_SCAN_FOR_MODULES 1)
29+
elseif(
30+
CMAKE_CXX_COMPILER_ID STREQUAL "GNU"
31+
AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 15
32+
)
33+
set(CMAKE_CXX_SCAN_FOR_MODULES 1)
34+
else(NOT CMAKE_CXX_MODULE_STD)
35+
set(CMAKE_CXX_SCAN_FOR_MODULES 0)
36+
endif()
37+
2338
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
39+
message(STATUS "CMAKE_CXX_SCAN_FOR_MODULES: ${CMAKE_CXX_SCAN_FOR_MODULES}")
40+
message(STATUS "CMAKE_CXX_MODULE_STD: ${CMAKE_CXX_MODULE_STD}")
41+
message(
42+
STATUS
43+
"CMAKE_CXX_COMPILER_IMPORT_STD: ${CMAKE_CXX_COMPILER_IMPORT_STD}"
44+
)
2445

2546
# [CMAKE.SKIP_TESTS]
2647
option(
@@ -87,6 +108,7 @@ install(
87108
EXPORT beman.scope-targets
88109

89110
FILE_SET CXX_MODULES
111+
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
90112
FILE_SET HEADERS
91113
)
92114

tests/CMakeLists.txt

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,17 @@ FetchContent_Declare(
1111
)
1212
FetchContent_MakeAvailable(Catch2)
1313

14-
message(STATUS
14+
message(
15+
DEBUG
1516
"Compiler is: ${CMAKE_CXX_COMPILER_ID} version: ${CMAKE_CXX_COMPILER_VERSION}"
1617
)
1718

18-
# module tests will only compile with gcc15 or clang20 and above
19-
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 20)
20-
set(ALL_TESTNAMES scope_success scope_exit scope_fail unique_resource module)
21-
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 15)
22-
set(ALL_TESTNAMES scope_success scope_exit scope_fail unique_resource module)
23-
else()
24-
set(ALL_TESTNAMES scope_success scope_exit scope_fail unique_resource)
19+
set(ALL_TESTNAMES scope_success scope_exit scope_fail unique_resource)
20+
if(CMAKE_CXX_SCAN_FOR_MODULES)
21+
list(APPEND ALL_TESTNAMES module)
2522
endif()
2623

27-
message(STATUS "Tests to be built: ${ALL_TESTNAMES}")
24+
message(DEBUG "Tests to be built: ${ALL_TESTNAMES}")
2825

2926
include(Catch)
3027

tests/module.test.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
#include <catch2/catch_all.hpp>
55

66
// for g++-15 the order is important -- import after includes
7+
#ifdef HAS_STDLIB_MODULES
8+
import std;
9+
#endif
710
import beman.scope;
811

912
struct DummyResource {
@@ -33,5 +36,4 @@ TEST_CASE("module-test", "[scope_module_test]") {
3336
REQUIRE(success_ran == true);
3437
REQUIRE(fail_ran == false);
3538
REQUIRE(cleaned == true);
36-
3739
}

0 commit comments

Comments
 (0)