acts: new variant cxxstd (#38682)
* acts: allow ^root cxxstd=20 * acts: new variant cxxstd, pass through to root * acts: always args.append CMAKE_CXX_STANDARD from variant * acts: remove unused import * acts: fix self.define_from_variant
This commit is contained in:
parent
45838cee0b
commit
ea1439dfa1
@ -4,6 +4,7 @@
|
|||||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|
||||||
from spack.package import *
|
from spack.package import *
|
||||||
|
from spack.variant import _ConditionalVariantValues
|
||||||
|
|
||||||
|
|
||||||
class Acts(CMakePackage, CudaPackage):
|
class Acts(CMakePackage, CudaPackage):
|
||||||
@ -145,6 +146,14 @@ class Acts(CMakePackage, CudaPackage):
|
|||||||
variant(
|
variant(
|
||||||
"benchmarks", default=False, description="Build the performance benchmarks", when="@0.16:"
|
"benchmarks", default=False, description="Build the performance benchmarks", when="@0.16:"
|
||||||
)
|
)
|
||||||
|
_cxxstd_values = (conditional("14", when="@:0.8.1"), "17", conditional("20", when="@24:"))
|
||||||
|
variant(
|
||||||
|
"cxxstd",
|
||||||
|
default="17",
|
||||||
|
values=_cxxstd_values,
|
||||||
|
multi=False,
|
||||||
|
description="Use the specified C++ standard when building.",
|
||||||
|
)
|
||||||
variant(
|
variant(
|
||||||
"examples",
|
"examples",
|
||||||
default=False,
|
default=False,
|
||||||
@ -279,11 +288,19 @@ class Acts(CMakePackage, CudaPackage):
|
|||||||
depends_on("py-onnxruntime", when="+onnx")
|
depends_on("py-onnxruntime", when="+onnx")
|
||||||
depends_on("py-pybind11 @2.6.2:", when="+python @18:")
|
depends_on("py-pybind11 @2.6.2:", when="+python @18:")
|
||||||
depends_on("py-pytest", when="+python +unit_tests")
|
depends_on("py-pytest", when="+python +unit_tests")
|
||||||
depends_on("root @6.10: cxxstd=14", when="+tgeo @:0.8.0")
|
depends_on("root @6.10:", when="+tgeo @:0.8.0")
|
||||||
depends_on("root @6.20: cxxstd=17", when="+tgeo @0.8.1:")
|
depends_on("root @6.20:", when="+tgeo @0.8.1:")
|
||||||
depends_on("sycl", when="+sycl")
|
depends_on("sycl", when="+sycl")
|
||||||
depends_on("vecmem@0.4: +sycl", when="+sycl")
|
depends_on("vecmem@0.4: +sycl", when="+sycl")
|
||||||
|
|
||||||
|
# ACTS imposes requirements on the C++ standard values used by ROOT
|
||||||
|
for _cxxstd in _cxxstd_values:
|
||||||
|
if isinstance(_cxxstd, _ConditionalVariantValues):
|
||||||
|
for _v in _cxxstd:
|
||||||
|
depends_on(f"root cxxstd={_v.value}", when=f"cxxstd={_v.value} {_v.when} ^root")
|
||||||
|
else:
|
||||||
|
depends_on(f"root cxxstd={_cxxstd}", when=f"cxxstd={_cxxstd} ^root")
|
||||||
|
|
||||||
# ACTS has been using C++17 for a while, which precludes use of old GCC
|
# ACTS has been using C++17 for a while, which precludes use of old GCC
|
||||||
conflicts("%gcc@:7", when="@0.23:")
|
conflicts("%gcc@:7", when="@0.23:")
|
||||||
|
|
||||||
@ -387,12 +404,10 @@ def plugin_cmake_variant(plugin_name, spack_variant):
|
|||||||
if cuda_arch != "none":
|
if cuda_arch != "none":
|
||||||
args.append("-DCUDA_FLAGS=-arch=sm_{0}".format(cuda_arch[0]))
|
args.append("-DCUDA_FLAGS=-arch=sm_{0}".format(cuda_arch[0]))
|
||||||
|
|
||||||
if "root" in spec:
|
|
||||||
cxxstd = spec["root"].variants["cxxstd"].value
|
|
||||||
args.append("-DCMAKE_CXX_STANDARD={0}".format(cxxstd))
|
|
||||||
|
|
||||||
if "+python" in spec:
|
if "+python" in spec:
|
||||||
python = spec["python"].command.path
|
python = spec["python"].command.path
|
||||||
args.append("-DPython_EXECUTABLE={0}".format(python))
|
args.append("-DPython_EXECUTABLE={0}".format(python))
|
||||||
|
|
||||||
|
args.append(self.define_from_variant("CMAKE_CXX_STANDARD", "cxxstd"))
|
||||||
|
|
||||||
return args
|
return args
|
||||||
|
Loading…
Reference in New Issue
Block a user