Skip to content

Commit 82bdea2

Browse files
committed
Compute LLVM_SHLIB_SYMBOL_VERSION using llvm-config
Perhaps an uncomfortable amount of shell splicing here to extract the symbol version, but this is sufficient to get the correct symbol version for `USE_SYSTEM_LLVM=1` use cases.
1 parent 3847d88 commit 82bdea2

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

src/Makefile

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,12 @@ $(BUILDDIR)/julia_version.h: $(JULIAHOME)/VERSION
366366
CXXLD = $(CXX) -shared
367367

368368
$(BUILDDIR)/julia.expmap: $(SRCDIR)/julia.expmap.in
369-
sed <'$<' >'$@' -e 's/@JULIA_SHLIB_SYMBOL_VERSION@/JL_LIBJULIA_$(SOMAJOR)/'
369+
JULIA_SHLIB_SYMBOL_VERSION="JL_LIBJULIA_$(SOMAJOR)"; \
370+
LLVM_SHLIB_SYMBOL_VERSION="$(shell nm -D --with-symbol-versions $(shell $(LLVM_CONFIG_HOST) --libfiles --link-shared | awk '{print $1; exit}') | grep _ZN4llvm3Any6TypeId | head -n 1 | sed -e 's/.*@//')"; \
371+
sed <'$<' >'$@' -e "s/@JULIA_SHLIB_SYMBOL_VERSION@/$${JULIA_SHLIB_SYMBOL_VERSION}/" \
372+
-e "s/@LLVM_SHLIB_SYMBOL_VERSION@/$${LLVM_SHLIB_SYMBOL_VERSION}/"
373+
JULIA_SHLIB_SYMBOL_VERSION="JL_LIBJULIA_$(SOMAJOR)"; \
374+
echo $${JULIA_SHLIB_SYMBOL_VERSION}
370375

371376
$(build_shlibdir)/libjulia-internal.$(JL_MAJOR_MINOR_SHLIB_EXT): $(BUILDDIR)/julia.expmap $(OBJS) $(BUILDDIR)/flisp/libflisp.a $(BUILDDIR)/support/libsupport.a $(LIBUV)
372377
@$(call PRINT_LINK, $(CXXLD) $(call IMPLIB_FLAGS,$@) $(JCXXFLAGS) $(JL_CXXFLAGS) $(CXXLDFLAGS) $(SHIPFLAGS) $(OBJS) $(RPATH_LIB) -o $@ \

src/julia.expmap.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
*;
4444
};
4545

46-
JL_LLVM_15.0 {
46+
@LLVM_SHLIB_SYMBOL_VERSION@ {
4747
global:
4848
/* Make visible so that linker will merge duplicate definitions across DSO boundaries */
4949
_ZN4llvm3Any6TypeId*;

0 commit comments

Comments
 (0)