From ec9d08e71ec2ef0b50d834f2ee7ad25658689e01 Mon Sep 17 00:00:00 2001 From: Laurent Aphecetche Date: Fri, 22 Dec 2023 13:03:23 +0100 Subject: llvm: fix llvm@14 build with apple-clang-15 (#40191) * llvm: fix llvm@14 build with apple-clang-15 * fix formatting --------- Co-authored-by: Adam J. Stewart --- var/spack/repos/builtin/packages/llvm/package.py | 22 ++++++++++++++++++++++ ...sanitizer-platform-limits-posix-xdr-macos.patch | 11 +++++++++++ 2 files changed, 33 insertions(+) create mode 100644 var/spack/repos/builtin/packages/llvm/sanitizer-platform-limits-posix-xdr-macos.patch diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index b85e5be19d..d2195fca49 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -572,6 +572,8 @@ class Llvm(CMakePackage, CudaPackage): patch("add-include-for-libelf-llvm-12-14.patch", when="@12:14") patch("add-include-for-libelf-llvm-15.patch", when="@15") + patch("sanitizer-platform-limits-posix-xdr-macos.patch", when="@10:14 platform=darwin") + @when("@14:17") def patch(self): # https://github.com/llvm/llvm-project/pull/69458 @@ -940,6 +942,26 @@ class Llvm(CMakePackage, CudaPackage): # Semicolon seperated list of runtimes to enable if runtimes: + # The older versions are not careful enough with the order of the runtimes. + # Instead of applying + # https://github.com/llvm/llvm-project/commit/06400a0142af8297b5d39b8f34a7c59db6f9910c, + # which might be incompatible with the version that we install, + # we sort the runtimes here according to the same order as + # in the aforementioned commit: + if self.spec.satisfies("@:14"): + runtimes_order = [ + "libc", + "libunwind", + "libcxxabi", + "libcxx", + "compiler-rt", + "openmp", + ] + runtimes.sort( + key=lambda x: runtimes_order.index(x) + if x in runtimes_order + else len(runtimes_order) + ) cmake_args.extend( [ define("LLVM_ENABLE_RUNTIMES", runtimes), diff --git a/var/spack/repos/builtin/packages/llvm/sanitizer-platform-limits-posix-xdr-macos.patch b/var/spack/repos/builtin/packages/llvm/sanitizer-platform-limits-posix-xdr-macos.patch new file mode 100644 index 0000000000..d4477390f5 --- /dev/null +++ b/var/spack/repos/builtin/packages/llvm/sanitizer-platform-limits-posix-xdr-macos.patch @@ -0,0 +1,11 @@ +--- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp ++++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp +@@ -1250,7 +1250,7 @@ CHECK_SIZE_AND_OFFSET(group, gr_passwd); + CHECK_SIZE_AND_OFFSET(group, gr_gid); + CHECK_SIZE_AND_OFFSET(group, gr_mem); + +-#if HAVE_RPC_XDR_H ++#if HAVE_RPC_XDR_H && !SANITIZER_MAC + CHECK_TYPE_SIZE(XDR); + CHECK_SIZE_AND_OFFSET(XDR, x_op); + CHECK_SIZE_AND_OFFSET(XDR, x_ops); -- cgit v1.2.3-60-g2f50