diff --git a/var/spack/repos/builtin/packages/mdspan/package.py b/var/spack/repos/builtin/packages/mdspan/package.py index 709110ec3bc..d515a1f1fb4 100644 --- a/var/spack/repos/builtin/packages/mdspan/package.py +++ b/var/spack/repos/builtin/packages/mdspan/package.py @@ -21,25 +21,21 @@ class Mdspan(CMakePackage): variant("examples", default=True, description="Enable examples") variant("tests", default=False, description="Enable tests") variant("benchmarks", default=False, description="Enable benchmarks") + variant( + "cxxstd", default="17", values=["14", "17", "20"], multi=False, description="C++ standard" + ) depends_on("benchmark", when="+benchmarks") - depends_on("googletest@main", when="+tests") + depends_on("googletest@1.14:1", when="+tests") def cmake_args(self): - args = [] - - if self.spec.satisfies("+tests"): - args.append("-DMDSPAN_ENABLE_TESTS=ON") - args.append("-DMDSPAN_USE_SYSTEM_GTEST=ON") - if self.spec.satisfies("+benchmarks"): - args.append("-DMDSPAN_ENABLE_BENCHMARKS=ON") - if self.spec.satisfies("+examples"): - args.append("-DMDSPAN_ENABLE_EXAMPLES=ON") - - args.append("-DCMAKE_CXX_FLAGS='-Wall -Wextra -pedantic'") - args.append("-DCMAKE_CXX_STANDARD=17") - args.append("-DMDSPAN_CXX_STANDARD=17") - args.append("-DCMAKE_CXX_COMPILER=g++") - args.append("-DCMAKE_CXX_EXTENSIONS=OFF") + args = [ + self.define_from_variant("MDSPAN_ENABLE_TESTS", "tests"), + self.define_from_variant("MDSPAN_USE_SYSTEM_GTEST", "tests"), + self.define_from_variant("MDSPAN_ENABLE_BENCHMARKS", "benchmarks"), + self.define_from_variant("MDSPAN_ENABLE_EXAMPLES", "examples"), + self.define_from_variant("MDSPAN_CXX_STANDARD", "cxxstd"), + self.define_from_variant("CMAKE_CXX_STANDARD", "cxxstd"), + ] return args