julia: support clang, set llvm NDEBUG correctly (#30800)
This commit is contained in:
parent
3620204db6
commit
0c9370ce72
25
var/spack/repos/builtin/packages/julia/gcc-ifdef.patch
Normal file
25
var/spack/repos/builtin/packages/julia/gcc-ifdef.patch
Normal file
@ -0,0 +1,25 @@
|
||||
From 3193c8f2596711c1feb8e655ec391050e0e78ed0 Mon Sep 17 00:00:00 2001
|
||||
From: Harmen Stoppels <harmenstoppels@gmail.com>
|
||||
Date: Mon, 23 May 2022 16:58:23 +0200
|
||||
Subject: [PATCH] Guard GCC-specific macros with _COMPILER_GCC_
|
||||
|
||||
---
|
||||
src/julia_internal.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/julia_internal.h b/src/julia_internal.h
|
||||
index fbded19..32d038b 100644
|
||||
--- a/src/julia_internal.h
|
||||
+++ b/src/julia_internal.h
|
||||
@@ -392,7 +392,7 @@ jl_svec_t *jl_perm_symsvec(size_t n, ...);
|
||||
|
||||
// this sizeof(__VA_ARGS__) trick can't be computed until C11, but that only matters to Clang in some situations
|
||||
#if !defined(__clang_analyzer__) && !(defined(JL_ASAN_ENABLED) || defined(JL_TSAN_ENABLED))
|
||||
-#ifdef __GNUC__
|
||||
+#ifdef _COMPILER_GCC_
|
||||
#define jl_perm_symsvec(n, ...) \
|
||||
(jl_perm_symsvec)(__extension__({ \
|
||||
static_assert( \
|
||||
--
|
||||
2.25.1
|
||||
|
30
var/spack/repos/builtin/packages/julia/llvm-NDEBUG.patch
Normal file
30
var/spack/repos/builtin/packages/julia/llvm-NDEBUG.patch
Normal file
@ -0,0 +1,30 @@
|
||||
From 4ec1970178606127fd8bbffa763f135ca0f12ee3 Mon Sep 17 00:00:00 2001
|
||||
From: Harmen Stoppels <harmenstoppels@gmail.com>
|
||||
Date: Tue, 24 May 2022 14:03:48 +0200
|
||||
Subject: [PATCH] llvm: add NDEBUG when assertion mode is off
|
||||
|
||||
`llvm-config --cxxflags` unfortunately does not set `-DNDEBUG`, which
|
||||
Julia needs to set correctly when including LLVM header files.
|
||||
---
|
||||
src/Makefile | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/src/Makefile b/src/Makefile
|
||||
index 1a9af2fa7c..766fd2945f 100644
|
||||
--- a/src/Makefile
|
||||
+++ b/src/Makefile
|
||||
@@ -98,6 +98,11 @@ PUBLIC_HEADER_TARGETS := $(addprefix $(build_includedir)/julia/,$(notdir $(PUBLI
|
||||
LLVM_LDFLAGS := $(shell $(LLVM_CONFIG_HOST) --ldflags)
|
||||
LLVM_CXXFLAGS := $(shell $(LLVM_CONFIG_HOST) --cxxflags)
|
||||
|
||||
+# llvm-config --cxxflags does not return -DNDEBUG
|
||||
+ifeq ($(shell $(LLVM_CONFIG_HOST) --assertion-mode),OFF)
|
||||
+LLVM_CXXFLAGS += -DNDEBUG
|
||||
+endif
|
||||
+
|
||||
ifeq ($(JULIACODEGEN),LLVM)
|
||||
ifneq ($(USE_SYSTEM_LLVM),0)
|
||||
LLVMLINK += $(LLVM_LDFLAGS) $(shell $(LLVM_CONFIG_HOST) --libs --system-libs)
|
||||
--
|
||||
2.25.1
|
||||
|
@ -130,6 +130,12 @@ class Julia(MakefilePackage):
|
||||
# only applied to libllvm when it's vendored by julia).
|
||||
patch('revert-fix-rpath-of-libllvm.patch', when='@1.7.0:1.7')
|
||||
|
||||
# Allow build with clang.
|
||||
patch('gcc-ifdef.patch', when='@1.7.0:1.7')
|
||||
|
||||
# Make sure Julia sets -DNDEBUG when including LLVM header files.
|
||||
patch('llvm-NDEBUG.patch', when='@1.7.0:1.7')
|
||||
|
||||
def patch(self):
|
||||
# The system-libwhich-libblastrampoline.patch causes a rebuild of docs as it
|
||||
# touches the main Makefile, so we reset the a/m-time to doc/_build's.
|
||||
@ -215,6 +221,9 @@ def edit(self, spec, prefix):
|
||||
'1' if spec.variants['precompile'].value else '0'),
|
||||
]
|
||||
|
||||
options.append('USEGCC:={}'.format('1' if '%gcc' in spec else '0'))
|
||||
options.append('USECLANG:={}'.format('1' if '%clang' in spec else '0'))
|
||||
|
||||
# libm or openlibm?
|
||||
if spec.variants['openlibm'].value:
|
||||
options.append('USE_SYSTEM_LIBM=0')
|
||||
|
Loading…
Reference in New Issue
Block a user