From 0144d1883c9874b28c73d9ee844da7cb8e277f67 Mon Sep 17 00:00:00 2001 From: Nicolas Morales Date: Wed, 18 Jun 2025 09:11:26 +0300 Subject: [PATCH 1/3] use per-target required C++ standard --- CMakeLists.txt | 60 +------------------ tests/CMakeLists.txt | 13 +++- .../default_accessor/CMakeLists.txt | 10 ++-- tests/libcxx-backports/extents/CMakeLists.txt | 20 +++---- .../layout_left/CMakeLists.txt | 22 +++---- .../layout_right/CMakeLists.txt | 22 +++---- .../layout_stride/CMakeLists.txt | 24 ++++---- tests/libcxx-backports/mdspan/CMakeLists.txt | 34 +++++------ 8 files changed, 79 insertions(+), 126 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3d9431a6..327cb19c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,63 +26,6 @@ option(MDSPAN_USE_SYSTEM_BENCHMARK "Use system-installed Google Benchmark librar option(MDSPAN_INSTALL_STDMODE_HEADERS "Whether to install headers to emulate standard library headers and namespaces" Off) option(MDSPAN_GENERATE_STD_NAMESPACE_TARGETS "Whether to generate and install targets with the std:: namespace instead of the mdspan:: namespace" Off) -# Option to override which C++ standard to use -set(MDSPAN_CXX_STANDARD DETECT CACHE STRING "Override the default CXX_STANDARD to compile with.") -set_property(CACHE MDSPAN_CXX_STANDARD PROPERTY STRINGS DETECT 14 17 20 23) - -option(MDSPAN_ENABLE_CONCEPTS "Try to enable concepts support by giving extra flags." On) - -################################################################################ - -# Decide on the standard to use -if(MDSPAN_CXX_STANDARD STREQUAL "17") - if("cxx_std_17" IN_LIST CMAKE_CXX_COMPILE_FEATURES) - message(STATUS "Using C++17 standard") - set(CMAKE_CXX_STANDARD 17) - else() - message(FATAL_ERROR "Requested MDSPAN_CXX_STANDARD \"17\" not supported by provided C++ compiler") - endif() -elseif(MDSPAN_CXX_STANDARD STREQUAL "14") - if("cxx_std_14" IN_LIST CMAKE_CXX_COMPILE_FEATURES) - message(STATUS "Using C++14 standard") - set(CMAKE_CXX_STANDARD 14) - else() - message(FATAL_ERROR "Requested MDSPAN_CXX_STANDARD \"14\" not supported by provided C++ compiler") - endif() -elseif(MDSPAN_CXX_STANDARD STREQUAL "20") - if("cxx_std_20" IN_LIST CMAKE_CXX_COMPILE_FEATURES) - message(STATUS "Using C++20 standard") - set(CMAKE_CXX_STANDARD 20) - else() - message(FATAL_ERROR "Requested MDSPAN_CXX_STANDARD \"20\" not supported by provided C++ compiler") - endif() -elseif(MDSPAN_CXX_STANDARD STREQUAL "23") - if("cxx_std_23" IN_LIST CMAKE_CXX_COMPILE_FEATURES) - message(STATUS "Using C++23 standard") - set(CMAKE_CXX_STANDARD 23) - else() - message(FATAL_ERROR "Requested MDSPAN_CXX_STANDARD \"23\" not supported by provided C++ compiler") - endif() -else() - if("cxx_std_23" IN_LIST CMAKE_CXX_COMPILE_FEATURES) - set(CMAKE_CXX_STANDARD 23) - message(STATUS "Detected support for C++23 standard") - elseif("cxx_std_20" IN_LIST CMAKE_CXX_COMPILE_FEATURES) - set(CMAKE_CXX_STANDARD 20) - message(STATUS "Detected support for C++20 standard") - elseif("cxx_std_17" IN_LIST CMAKE_CXX_COMPILE_FEATURES) - set(CMAKE_CXX_STANDARD 17) - message(STATUS "Detected support for C++17 standard") - elseif("cxx_std_14" IN_LIST CMAKE_CXX_COMPILE_FEATURES) - set(CMAKE_CXX_STANDARD 14) - message(STATUS "Detected support for C++14 standard") - else() - message(FATAL_ERROR "Cannot detect CXX_STANDARD of C++14 or newer.") - endif() -endif() - -################################################################################ - if(MDSPAN_ENABLE_CUDA) include(CheckLanguage) check_language(CUDA) @@ -123,6 +66,9 @@ if (MDSPAN_GENERATE_STD_NAMESPACE_TARGETS) add_library(std::mdspan ALIAS mdspan) endif() +# Require a minimum of C++14 +target_compile_features(mdspan INTERFACE cxx_std_14) + if(MDSPAN_ENABLE_SYCL) target_compile_options(mdspan INTERFACE "-fsycl") target_link_options(mdspan INTERFACE "-fsycl") diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index b038ebcc..30e5b6f1 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -8,7 +8,7 @@ endif() function(mdspan_add_test name) set(options ENABLE_PRECONDITIONS) - set(one_value SOURCE) + set(one_value SOURCE COMPILE_FEATURES) set(multi_value) cmake_parse_arguments(ARGUMENT "${options}" "${one_value}" "${multi_value}" ${ARGN}) @@ -27,6 +27,9 @@ function(mdspan_add_test name) PUBLIC MDSPAN_IMPL_CHECK_PRECONDITION=$ ) + if(DEFINED ARGUMENT_COMPILE_FEATURES) + target_compile_features(${name} PUBLIC ${ARGUMENT_COMPILE_FEATURES}) + endif() endfunction() if(MDSPAN_USE_SYSTEM_GTEST) @@ -88,11 +91,15 @@ mdspan_add_test(test_element_access) mdspan_add_test(test_exhaustive_layouts) mdspan_add_test(test_layout_ctors) mdspan_add_test(test_layout_stride) -if(NOT CMAKE_CXX_STANDARD STREQUAL "14") +if("cxx_std_17" IN_LIST CMAKE_CXX_COMPILE_FEATURES) mdspan_add_test(test_submdspan) + target_compile_features(test_submdspan PRIVATE cxx_std_17) mdspan_add_test(test_submdspan_static_slice) + target_compile_features(test_submdspan_static_slice PRIVATE cxx_std_17) mdspan_add_test(test_layout_padded_left ENABLE_PRECONDITIONS) + target_compile_features(test_layout_padded_left PRIVATE cxx_std_17) mdspan_add_test(test_layout_padded_right ENABLE_PRECONDITIONS) + target_compile_features(test_layout_padded_right PRIVATE cxx_std_17) endif() # both of those don't work yet since its using vector if(NOT MDSPAN_ENABLE_CUDA AND NOT MDSPAN_ENABLE_HIP) @@ -100,7 +107,7 @@ mdspan_add_test(test_mdarray_ctors) mdspan_add_test(test_mdarray_to_mdspan) endif() -if(CMAKE_CXX_STANDARD GREATER_EQUAL 20) +if("cxx_std_20" IN_LIST CMAKE_CXX_COMPILE_FEATURES) if((CMAKE_CXX_COMPILER_ID STREQUAL Clang) OR ((CMAKE_CXX_COMPILER_ID STREQUAL GNU) AND (CMAKE_CXX_COMPILER_VERSION GREATER_EQUAL 12.0.0))) add_subdirectory(libcxx-backports) endif() diff --git a/tests/libcxx-backports/default_accessor/CMakeLists.txt b/tests/libcxx-backports/default_accessor/CMakeLists.txt index 44a40f07..6877c6b0 100644 --- a/tests/libcxx-backports/default_accessor/CMakeLists.txt +++ b/tests/libcxx-backports/default_accessor/CMakeLists.txt @@ -1,6 +1,6 @@ -mdspan_add_test(default_accessor.access.pass) -mdspan_add_test(default_accessor.ctor.conversion.pass) -mdspan_add_test(default_accessor.ctor.default.pass) +mdspan_add_test(default_accessor.access.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(default_accessor.ctor.conversion.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(default_accessor.ctor.default.pass COMPILE_FEATURES cxx_std_20) #mdspan_add_test(default_accessor.element_type.verify) -mdspan_add_test(default_accessor.offset.pass) -mdspan_add_test(default_accessor.types.pass) +mdspan_add_test(default_accessor.offset.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(default_accessor.types.pass COMPILE_FEATURES cxx_std_20) diff --git a/tests/libcxx-backports/extents/CMakeLists.txt b/tests/libcxx-backports/extents/CMakeLists.txt index d414c85f..7aab114b 100644 --- a/tests/libcxx-backports/extents/CMakeLists.txt +++ b/tests/libcxx-backports/extents/CMakeLists.txt @@ -1,10 +1,10 @@ -mdspan_add_test(comparison.pass) -mdspan_add_test(conversion.pass) -mdspan_add_test(ctad.pass) -mdspan_add_test(ctor_default.pass) -mdspan_add_test(ctor_from_array.pass) -mdspan_add_test(ctor_from_integral.pass) -mdspan_add_test(ctor_from_span.pass) -mdspan_add_test(dextents.pass) -mdspan_add_test(obs_static.pass) -mdspan_add_test(types.pass) +mdspan_add_test(comparison.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(conversion.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(ctad.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(ctor_default.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(ctor_from_array.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(ctor_from_integral.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(ctor_from_span.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(dextents.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(obs_static.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(types.pass COMPILE_FEATURES cxx_std_20) diff --git a/tests/libcxx-backports/layout_left/CMakeLists.txt b/tests/libcxx-backports/layout_left/CMakeLists.txt index d663ac96..bca1a048 100644 --- a/tests/libcxx-backports/layout_left/CMakeLists.txt +++ b/tests/libcxx-backports/layout_left/CMakeLists.txt @@ -1,12 +1,12 @@ -mdspan_add_test(layout_left.comparison.pass) -mdspan_add_test(layout_left.ctor.default.pass) -mdspan_add_test(layout_left.ctor.extents.pass) -mdspan_add_test(layout_left.ctor.layout_right.pass) -mdspan_add_test(layout_left.ctor.layout_stride.pass) -mdspan_add_test(layout_left.ctor.mapping.pass) +mdspan_add_test(layout_left.comparison.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(layout_left.ctor.default.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(layout_left.ctor.extents.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(layout_left.ctor.layout_right.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(layout_left.ctor.layout_stride.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(layout_left.ctor.mapping.pass COMPILE_FEATURES cxx_std_20) #mdspan_add_test(layout_left.extents.verify) -mdspan_add_test(layout_left.index_operator.pass) -mdspan_add_test(layout_left.properties.pass) -mdspan_add_test(layout_left.required_span_size.pass) -mdspan_add_test(layout_left.static_requirements.pass) -mdspan_add_test(layout_left.stride.pass) +mdspan_add_test(layout_left.index_operator.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(layout_left.properties.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(layout_left.required_span_size.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(layout_left.static_requirements.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(layout_left.stride.pass COMPILE_FEATURES cxx_std_20) diff --git a/tests/libcxx-backports/layout_right/CMakeLists.txt b/tests/libcxx-backports/layout_right/CMakeLists.txt index 7a37c6a4..c75e5eba 100644 --- a/tests/libcxx-backports/layout_right/CMakeLists.txt +++ b/tests/libcxx-backports/layout_right/CMakeLists.txt @@ -1,12 +1,12 @@ -mdspan_add_test(layout_right.comparison.pass) -mdspan_add_test(layout_right.ctor.default.pass) -mdspan_add_test(layout_right.ctor.extents.pass) -mdspan_add_test(layout_right.ctor.layout_left.pass) -mdspan_add_test(layout_right.ctor.layout_stride.pass) -mdspan_add_test(layout_right.ctor.mapping.pass) +mdspan_add_test(layout_right.comparison.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(layout_right.ctor.default.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(layout_right.ctor.extents.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(layout_right.ctor.layout_left.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(layout_right.ctor.layout_stride.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(layout_right.ctor.mapping.pass COMPILE_FEATURES cxx_std_20) #mdspan_add_test(layout_right.extents.verify) -mdspan_add_test(layout_right.index_operator.pass) -mdspan_add_test(layout_right.properties.pass) -mdspan_add_test(layout_right.required_span_size.pass) -mdspan_add_test(layout_right.static_requirements.pass) -mdspan_add_test(layout_right.stride.pass) +mdspan_add_test(layout_right.index_operator.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(layout_right.properties.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(layout_right.required_span_size.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(layout_right.static_requirements.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(layout_right.stride.pass COMPILE_FEATURES cxx_std_20) diff --git a/tests/libcxx-backports/layout_stride/CMakeLists.txt b/tests/libcxx-backports/layout_stride/CMakeLists.txt index 80b52a18..03f25712 100644 --- a/tests/libcxx-backports/layout_stride/CMakeLists.txt +++ b/tests/libcxx-backports/layout_stride/CMakeLists.txt @@ -1,13 +1,13 @@ -mdspan_add_test(layout_stride.comparison.pass) -mdspan_add_test(layout_stride.ctor.default.pass) -mdspan_add_test(layout_stride.ctor.extents_array.pass) -mdspan_add_test(layout_stride.ctor.extents_span.pass) -mdspan_add_test(layout_stride.ctor.strided_mapping.pass) -mdspan_add_test(layout_stride.deduction.pass) +mdspan_add_test(layout_stride.comparison.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(layout_stride.ctor.default.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(layout_stride.ctor.extents_array.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(layout_stride.ctor.extents_span.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(layout_stride.ctor.strided_mapping.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(layout_stride.deduction.pass COMPILE_FEATURES cxx_std_20) #mdspan_add_test(layout_stride.extents.verify) //FIXME -mdspan_add_test(layout_stride.index_operator.pass) -mdspan_add_test(layout_stride.is_exhaustive_corner_case.pass) -mdspan_add_test(layout_stride.properties.pass) -mdspan_add_test(layout_stride.required_span_size.pass) -mdspan_add_test(layout_stride.static_requirements.pass) -mdspan_add_test(layout_stride.stride.pass) +mdspan_add_test(layout_stride.index_operator.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(layout_stride.is_exhaustive_corner_case.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(layout_stride.properties.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(layout_stride.required_span_size.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(layout_stride.static_requirements.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(layout_stride.stride.pass COMPILE_FEATURES cxx_std_20) diff --git a/tests/libcxx-backports/mdspan/CMakeLists.txt b/tests/libcxx-backports/mdspan/CMakeLists.txt index 04ba79f6..c493ab86 100644 --- a/tests/libcxx-backports/mdspan/CMakeLists.txt +++ b/tests/libcxx-backports/mdspan/CMakeLists.txt @@ -1,21 +1,21 @@ -mdspan_add_test(mdspan.assign.pass) -mdspan_add_test(mdspan.conversion.pass) +mdspan_add_test(mdspan.assign.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(mdspan.conversion.pass COMPILE_FEATURES cxx_std_20) #mdspan_add_test(mdspan.conversion.verify) -mdspan_add_test(mdspan.ctor.copy.pass) -mdspan_add_test(mdspan.ctor.default.pass) -mdspan_add_test(mdspan.ctor.dh_array.pass) -mdspan_add_test(mdspan.ctor.dh_extents.pass) -mdspan_add_test(mdspan.ctor.dh_integers.pass) -mdspan_add_test(mdspan.ctor.dh_map.pass) -mdspan_add_test(mdspan.ctor.dh_map_acc.pass) -mdspan_add_test(mdspan.ctor.dh_span.pass) -mdspan_add_test(mdspan.ctor.move.pass) -mdspan_add_test(mdspan.deduction.pass) +mdspan_add_test(mdspan.ctor.copy.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(mdspan.ctor.default.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(mdspan.ctor.dh_array.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(mdspan.ctor.dh_extents.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(mdspan.ctor.dh_integers.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(mdspan.ctor.dh_map.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(mdspan.ctor.dh_map_acc.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(mdspan.ctor.dh_span.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(mdspan.ctor.move.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(mdspan.deduction.pass COMPILE_FEATURES cxx_std_20) #mdspan_add_test(mdspan.element_type.verify) #mdspan_add_test(mdspan.extents.verify) -mdspan_add_test(mdspan.index_operator.pass) +mdspan_add_test(mdspan.index_operator.pass COMPILE_FEATURES cxx_std_20) #mdspan_add_test(mdspan.mapping.verify) -mdspan_add_test(mdspan.move.pass) -mdspan_add_test(mdspan.properties.pass) -mdspan_add_test(mdspan.swap.pass) -mdspan_add_test(mdspan.types.pass) +mdspan_add_test(mdspan.move.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(mdspan.properties.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(mdspan.swap.pass COMPILE_FEATURES cxx_std_20) +mdspan_add_test(mdspan.types.pass COMPILE_FEATURES cxx_std_20) From 92525c23663b9dcf76b84676b21bfa733de2fee4 Mon Sep 17 00:00:00 2001 From: Nicolas Morales Date: Wed, 18 Jun 2025 10:16:40 +0300 Subject: [PATCH 2/3] gate some tests behind C++17 --- CMakeLists.txt | 2 +- benchmarks/CMakeLists.txt | 2 ++ compilation_tests/CMakeLists.txt | 5 +++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 327cb19c..527f6df3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -148,7 +148,7 @@ if(MDSPAN_ENABLE_EXAMPLES) endif() if(MDSPAN_ENABLE_BENCHMARKS) - if(NOT MDSPAN_CXX_STANDARD STREQUAL "14" AND NOT MDSPAN_CXX_STANDARD STREQUAL "23") + if("cxx_std_17" IN_LIST CMAKE_CXX_COMPILE_FEATURES) add_subdirectory(benchmarks) else() MESSAGE(FATAL_ERROR "Benchmarks are not available in C++14 or C++23 mode. Turn MDSPAN_ENABLE_BENCHMARKS OFF or use C++17 or C++20.") diff --git a/benchmarks/CMakeLists.txt b/benchmarks/CMakeLists.txt index e2c477c1..53a484ac 100644 --- a/benchmarks/CMakeLists.txt +++ b/benchmarks/CMakeLists.txt @@ -7,6 +7,7 @@ function(mdspan_add_benchmark EXENAME) ) # Set flag to build with parenthesis enabled target_compile_definitions(${EXENAME} PRIVATE MDSPAN_USE_PAREN_OPERATOR=1) + target_compile_features(${EXENAME} PRIVATE cxx_std_17) endfunction() if(MDSPAN_USE_SYSTEM_BENCHMARK) @@ -81,6 +82,7 @@ function(mdspan_add_openmp_benchmark EXENAME) $ ) target_compile_definitions(${EXENAME} PRIVATE MDSPAN_USE_PAREN_OPERATOR=1) + target_compile_features(${EXENAME} PRIVATE cxx_std_17) else() message(WARNING "Not adding target ${EXENAME} because OpenMP was not found") endif() diff --git a/compilation_tests/CMakeLists.txt b/compilation_tests/CMakeLists.txt index c50e15e3..ad4041bf 100644 --- a/compilation_tests/CMakeLists.txt +++ b/compilation_tests/CMakeLists.txt @@ -21,8 +21,9 @@ if(NOT MDSPAN_ENABLE_CUDA) add_compilation_test(ctest_compressed_pair_layout) endif() add_compilation_test(ctest_constexpr_dereference) -if(NOT CMAKE_CXX_STANDARD STREQUAL "14") -add_compilation_test(ctest_constexpr_submdspan) +if("cxx_std_17" IN_LIST CMAKE_CXX_COMPILE_FEATURES) + add_compilation_test(ctest_constexpr_submdspan) + target_compile_features(ctest_constexpr_submdspan PRIVATE cxx_std_17) endif() add_compilation_test(ctest_constexpr_layouts) add_compilation_test(ctest_namespace_std) From baf0459d95699b5b601448a8e199009ffad9ce9d Mon Sep 17 00:00:00 2001 From: Nicolas Morales Date: Thu, 12 Feb 2026 17:02:38 -0800 Subject: [PATCH 3/3] try fixing compilation tests for MSVC --- .github/workflows/cmake-windows.yml | 2 +- .github/workflows/cmake.yml | 2 +- scripts/snl/config-one | 4 ++-- scripts/snl/config-one-cuda | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/cmake-windows.yml b/.github/workflows/cmake-windows.yml index 89b94f1a..d9358052 100644 --- a/.github/workflows/cmake-windows.yml +++ b/.github/workflows/cmake-windows.yml @@ -29,7 +29,7 @@ jobs: - name: Configure CMake shell: bash working-directory: ${{github.workspace}}/mdspan-build - run: cmake -DCMAKE_CXX_FLAGS=-EHsc $GITHUB_WORKSPACE/mdspan-src -DMDSPAN_CXX_STANDARD=17 -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/mdspan-install -DMDSPAN_ENABLE_TESTS=ON -DMDSPAN_ENABLE_EXAMPLES=ON + run: cmake -DCMAKE_CXX_FLAGS=-EHsc $GITHUB_WORKSPACE/mdspan-src -DCMAKE_CXX_STANDARD=17 -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/mdspan-install -DMDSPAN_ENABLE_TESTS=ON -DMDSPAN_ENABLE_EXAMPLES=ON - name: Build shell: bash diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 6b9e60b8..09a5a709 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -73,7 +73,7 @@ jobs: - name: Configure CMake shell: bash working-directory: ${{github.workspace}}/mdspan-build - run: CXX=${{ matrix.compiler_prefix}}/${{ matrix.compiler_driver }} cmake $GITHUB_WORKSPACE/mdspan-src -DMDSPAN_CXX_STANDARD=${{ matrix.stdcxx }} -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/mdspan-install -DMDSPAN_ENABLE_TESTS=ON -DMDSPAN_ENABLE_EXAMPLES=ON -DMDSPAN_ENABLE_BENCHMARKS=${{matrix.enable_benchmark}} -DMDSPAN_ENABLE_COMP_BENCH=ON -DCMAKE_CXX_FLAGS="-Werror -Wall -Wextra -pedantic ${{matrix.cxx_flags_extra}}" + run: CXX=${{ matrix.compiler_prefix}}/${{ matrix.compiler_driver }} cmake $GITHUB_WORKSPACE/mdspan-src -DCMAKE_CXX_STANDARD=${{ matrix.stdcxx }} -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/mdspan-install -DMDSPAN_ENABLE_TESTS=ON -DMDSPAN_ENABLE_EXAMPLES=ON -DMDSPAN_ENABLE_BENCHMARKS=${{matrix.enable_benchmark}} -DMDSPAN_ENABLE_COMP_BENCH=ON -DCMAKE_CXX_FLAGS="-Werror -Wall -Wextra -pedantic ${{matrix.cxx_flags_extra}}" - name: Build shell: bash diff --git a/scripts/snl/config-one b/scripts/snl/config-one index 36196488..51e82596 100755 --- a/scripts/snl/config-one +++ b/scripts/snl/config-one @@ -3,6 +3,6 @@ COMPILER=$2 STANDARD=$3 CXXFLAGS=$4 cd ${COMP_DIR}/cpp${STANDARD} -echo cmake -DMDSPAN_ENABLE_TESTS=ON -DMDSPAN_ENABLE_BENCHMARKS=ON -DCMAKE_CXX_FLAGS="'${CXXFLAGS}'" -DCMAKE_CXX_STANDARD=${STANDARD} -DMDSPAN_CXX_STANDARD=${STANDARD} -DCMAKE_CXX_COMPILER=${COMPILER} -DCMAKE_CXX_EXTENSIONS=OFF ${MDSPAN_SOURCE} -cmake -DMDSPAN_ENABLE_TESTS=ON -DMDSPAN_ENABLE_BENCHMARKS=ON -DCMAKE_CXX_FLAGS="'${CXXFLAGS}'" -DCMAKE_CXX_STANDARD=${STANDARD} -DMDSPAN_CXX_STANDARD=${STANDARD} -DCMAKE_CXX_COMPILER=${COMPILER} -DCMAKE_CXX_EXTENSIONS=OFF ${MDSPAN_SOURCE} +echo cmake -DMDSPAN_ENABLE_TESTS=ON -DMDSPAN_ENABLE_BENCHMARKS=ON -DCMAKE_CXX_FLAGS="'${CXXFLAGS}'" -DCMAKE_CXX_STANDARD=${STANDARD} -DCMAKE_CXX_COMPILER=${COMPILER} -DCMAKE_CXX_EXTENSIONS=OFF ${MDSPAN_SOURCE} +cmake -DMDSPAN_ENABLE_TESTS=ON -DMDSPAN_ENABLE_BENCHMARKS=ON -DCMAKE_CXX_FLAGS="'${CXXFLAGS}'" -DCMAKE_CXX_STANDARD=${STANDARD} -DCMAKE_CXX_COMPILER=${COMPILER} -DCMAKE_CXX_EXTENSIONS=OFF ${MDSPAN_SOURCE} diff --git a/scripts/snl/config-one-cuda b/scripts/snl/config-one-cuda index 38551cef..fb652665 100755 --- a/scripts/snl/config-one-cuda +++ b/scripts/snl/config-one-cuda @@ -3,5 +3,5 @@ COMPILER=$2 STANDARD=$3 CXXFLAGS=$4 cd ${COMP_DIR}/cpp${STANDARD} -cmake -DMDSPAN_ENABLE_TESTS=ON -DMDSPAN_ENABLE_BENCHMARKS=ON -DCMAKE_CUDA_FLAGS="'${CXXFLAGS}' --extended-lambda --expt-relaxed-constexpr" -DCMAKE_CXX_STANDARD=${STANDARD} -DMDSPAN_CXX_STANDARD=${STANDARD} -DCMAKE_CXX_COMPILER=${COMPILER} -DCMAKE_CXX_EXTENSIONS=OFF -DMDSPAN_ENABLE_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES=70 ${MDSPAN_SOURCE} +cmake -DMDSPAN_ENABLE_TESTS=ON -DMDSPAN_ENABLE_BENCHMARKS=ON -DCMAKE_CUDA_FLAGS="'${CXXFLAGS}' --extended-lambda --expt-relaxed-constexpr" -DCMAKE_CXX_STANDARD=${STANDARD} -DCMAKE_CXX_COMPILER=${COMPILER} -DCMAKE_CXX_EXTENSIONS=OFF -DMDSPAN_ENABLE_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES=70 ${MDSPAN_SOURCE}