Update llvm recipe regarding libomptarget. (#36675)
This commit is contained in:
parent
c47b554fa1
commit
54003d4d72
@ -88,11 +88,6 @@ class Llvm(CMakePackage, CudaPackage):
|
|||||||
description="Build the LLVM Fortran compiler frontend "
|
description="Build the LLVM Fortran compiler frontend "
|
||||||
"(experimental - parser only, needs GCC)",
|
"(experimental - parser only, needs GCC)",
|
||||||
)
|
)
|
||||||
variant(
|
|
||||||
"omp_debug",
|
|
||||||
default=False,
|
|
||||||
description="Include debugging code in OpenMP runtime libraries",
|
|
||||||
)
|
|
||||||
variant("lldb", default=True, when="+clang", description="Build the LLVM debugger")
|
variant("lldb", default=True, when="+clang", description="Build the LLVM debugger")
|
||||||
variant("lld", default=True, description="Build the LLVM linker")
|
variant("lld", default=True, description="Build the LLVM linker")
|
||||||
variant("mlir", default=False, when="@10:", description="Build with MLIR support")
|
variant("mlir", default=False, when="@10:", description="Build with MLIR support")
|
||||||
@ -107,6 +102,18 @@ class Llvm(CMakePackage, CudaPackage):
|
|||||||
variant(
|
variant(
|
||||||
"libcxx", default=True, when="+clang", description="Build the LLVM C++ standard library"
|
"libcxx", default=True, when="+clang", description="Build the LLVM C++ standard library"
|
||||||
)
|
)
|
||||||
|
variant(
|
||||||
|
"libomptarget",
|
||||||
|
default=True,
|
||||||
|
when="+clang",
|
||||||
|
description="Build the OpenMP offloading library",
|
||||||
|
)
|
||||||
|
variant(
|
||||||
|
"omp_debug",
|
||||||
|
default=False,
|
||||||
|
when="+libomptarget",
|
||||||
|
description="Include debugging code in OpenMP runtime libraries",
|
||||||
|
)
|
||||||
variant(
|
variant(
|
||||||
"compiler-rt",
|
"compiler-rt",
|
||||||
when="+clang",
|
when="+clang",
|
||||||
@ -132,7 +139,7 @@ class Llvm(CMakePackage, CudaPackage):
|
|||||||
)
|
)
|
||||||
variant(
|
variant(
|
||||||
"targets",
|
"targets",
|
||||||
default="none",
|
default="all",
|
||||||
description=(
|
description=(
|
||||||
"What targets to build. Spack's target family is always added "
|
"What targets to build. Spack's target family is always added "
|
||||||
"(e.g. X86 is automatically enabled when targeting znver2)."
|
"(e.g. X86 is automatically enabled when targeting znver2)."
|
||||||
@ -230,7 +237,7 @@ class Llvm(CMakePackage, CudaPackage):
|
|||||||
depends_on("hwloc")
|
depends_on("hwloc")
|
||||||
depends_on("hwloc@2.0.1:", when="@9:")
|
depends_on("hwloc@2.0.1:", when="@9:")
|
||||||
depends_on("elf", when="+cuda") # libomptarget
|
depends_on("elf", when="+cuda") # libomptarget
|
||||||
depends_on("libffi", when="+cuda") # libomptarget
|
depends_on("libffi", when="+libomptarget") # libomptarget
|
||||||
|
|
||||||
# llvm-config --system-libs libraries.
|
# llvm-config --system-libs libraries.
|
||||||
depends_on("zlib")
|
depends_on("zlib")
|
||||||
@ -272,6 +279,15 @@ class Llvm(CMakePackage, CudaPackage):
|
|||||||
conflicts("%clang@:10", when="@13:+libcxx")
|
conflicts("%clang@:10", when="@13:+libcxx")
|
||||||
conflicts("%apple-clang@:11", when="@13:+libcxx")
|
conflicts("%apple-clang@:11", when="@13:+libcxx")
|
||||||
|
|
||||||
|
# libomptarget
|
||||||
|
conflicts("+cuda", when="@15:") # +cuda variant is obselete since LLVM 15
|
||||||
|
conflicts(
|
||||||
|
"targets=none",
|
||||||
|
when="+libomptarget",
|
||||||
|
msg="Non-host backends needed for offloading, set targets=all",
|
||||||
|
)
|
||||||
|
conflicts("~lld", when="+libomptarget")
|
||||||
|
|
||||||
# cuda_arch value must be specified
|
# cuda_arch value must be specified
|
||||||
conflicts("cuda_arch=none", when="+cuda", msg="A value for cuda_arch must be specified.")
|
conflicts("cuda_arch=none", when="+cuda", msg="A value for cuda_arch must be specified.")
|
||||||
|
|
||||||
@ -644,6 +660,11 @@ def cmake_args(self):
|
|||||||
else:
|
else:
|
||||||
projects.append("openmp")
|
projects.append("openmp")
|
||||||
|
|
||||||
|
if "+libomptarget" in spec:
|
||||||
|
cmake_args.append(define("OPENMP_ENABLE_LIBOMPTARGET", True))
|
||||||
|
else:
|
||||||
|
cmake_args.append(define("OPENMP_ENABLE_LIBOMPTARGET", False))
|
||||||
|
|
||||||
if "@8" in spec:
|
if "@8" in spec:
|
||||||
cmake_args.append(from_variant("CLANG_ANALYZER_ENABLE_Z3_SOLVER", "z3"))
|
cmake_args.append(from_variant("CLANG_ANALYZER_ENABLE_Z3_SOLVER", "z3"))
|
||||||
elif "@9:" in spec:
|
elif "@9:" in spec:
|
||||||
|
Loading…
Reference in New Issue
Block a user