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 <ajstewart426@gmail.com>
This commit is contained in:
parent
397c066464
commit
ec9d08e71e
@ -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 @@ def cmake_args(self):
|
||||
|
||||
# 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),
|
||||
|
@ -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);
|
Loading…
Reference in New Issue
Block a user