Skip to content

Commit e884671

Browse files
committed
wip modules
1 parent b212ae0 commit e884671

6 files changed

Lines changed: 63 additions & 2 deletions

File tree

CMakeLists.txt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,13 @@
22

33
cmake_minimum_required(VERSION 3.28...4.2)
44

5+
# TODO: Set BEMAN_USE_MODULES if one of a particular set of compiler versions is being used
6+
7+
if (BEMAN_USE_MODULES)
8+
set(CMAKE_CXX_SCAN_FOR_MODULES ON)
9+
set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD "d0edc3af-4c50-42ea-a356-e2862fe7a444")
10+
endif()
11+
512
project(
613
beman.transform_view # CMake Project Name, which is also the name of the top-level
714
# targets (e.g., library, executable, etc.).
@@ -41,10 +48,13 @@ set_target_properties(
4148
)
4249

4350
add_subdirectory(include/beman/transform_view)
51+
if (BEMAN_USE_MODULES)
52+
add_subdirectory(src/beman/transform_view)
53+
endif()
4454

4555
include(CTest)
4656

47-
beman_install_library(beman.transform_view TARGETS beman.transform_view)
57+
beman_install_library(beman.transform_view TARGETS beman.transform_view beman.transform_view.module)
4858

4959
if(BEMAN_TRANSFORM_VIEW_BUILD_TESTS)
5060
enable_testing()

include/beman/transform_view/transform_view.hpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33
#ifndef BEMAN_TRANSFORM_VIEW_HPP
44
#define BEMAN_TRANSFORM_VIEW_HPP
55

6+
#ifndef BEMAN_HAS_MODULES
67
#include <functional>
78
#include <iterator>
89
#include <optional>
910
#include <ranges>
11+
#endif
1012

1113
namespace beman::transform_view {
1214

@@ -504,7 +506,7 @@ struct bind_back_t {
504506
private:
505507
using indices = std::index_sequence_for<CapturedArgs...>;
506508

507-
template <typename T, size_t... I, typename... Args>
509+
template <typename T, std::size_t... I, typename... Args>
508510
static constexpr decltype(auto)
509511
call_impl(T&& this_, std::index_sequence<I...>, Args&&... args) {
510512
return ((T&&)this_)
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
2+
3+
add_library(beman.transform_view.module STATIC)
4+
add_library(beman::transform_view.module ALIAS beman.transform_view.module)
5+
6+
target_sources(
7+
beman.transform_view.module
8+
PUBLIC FILE_SET CXX_MODULES FILES transform_view.cppm
9+
)
10+
11+
target_include_directories(
12+
beman.transform_view.module
13+
PUBLIC
14+
${PROJECT_SOURCE_DIR}/include
15+
)
16+
17+
target_compile_definitions(
18+
beman.transform_view.module
19+
PUBLIC BEMAN_HAS_MODULES)
20+
21+
set_target_properties(
22+
beman.transform_view.module
23+
PROPERTIES CXX_MODULE_STD ON
24+
)
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
module;
2+
3+
export module beman.transform_view;
4+
5+
import std;
6+
7+
extern "C++" {
8+
export {
9+
#include <beman/transform_view/transform_view.hpp>
10+
}
11+
}

tests/beman/transform_view/CMakeLists.txt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,15 @@ target_link_libraries(
1212
PRIVATE beman::transform_view GTest::gtest GTest::gtest_main
1313
)
1414

15+
add_executable(beman.transform_view.tests.module_smoke_test)
16+
target_sources(
17+
beman.transform_view.tests.module_smoke_test
18+
PRIVATE module_smoke_test.test.cpp
19+
)
20+
target_link_libraries(
21+
beman.transform_view.tests.module_smoke_test
22+
PRIVATE beman::transform_view.module
23+
)
24+
1525
include(GoogleTest)
1626
gtest_discover_tests(beman.transform_view.tests.transform_view)
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import beman.transform_view;
2+
3+
int main() {
4+
}

0 commit comments

Comments
 (0)