Skip to content

Commit a6d5577

Browse files
committed
Merge pull request #16723 from JuliaLang/tk/llvmshlib
RFC: Build LLVM as a shared library by default
2 parents 31f5a63 + 879d484 commit a6d5577

File tree

15 files changed

+61
-16
lines changed

15 files changed

+61
-16
lines changed

Make.inc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ USE_SYSTEM_LIBGIT2:=0
4040
USE_SYSTEM_PATCHELF:=0
4141

4242
# Link to the LLVM shared library
43-
USE_LLVM_SHLIB := 0
43+
USE_LLVM_SHLIB := 1
4444

4545
## Settings for various Intel tools
4646
# Set to 1 to use MKL
@@ -216,7 +216,7 @@ INSTALL_M := $(JULIAHOME)/contrib/install.sh 755
216216
LLVMROOT := $(build_prefix)
217217
LLVM_ASSERTIONS := 0
218218
LLVM_DEBUG := 0
219-
#LLVM_USE_CMAKE: defined in deps/Makefile as it depends on LLVM_VER_SHORT
219+
#LLVM_USE_CMAKE: defined in deps/llvm-ver.mk as it depends on LLVM_VER_SHORT
220220
# set to 1 to get clang and compiler-rt
221221
BUILD_LLVM_CLANG := 0
222222
# set to 1 to get lldb (often does not work, no chance with llvm3.2 and earlier)

appveyor.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,11 @@ init:
3030
- git config --global core.autocrlf input
3131

3232
cache:
33-
# Cache any downloads from sourceforge because it's really unreliable
33+
# Cache large downloads to avoid network unreliability
3434
- i686-4.9.2-release-win32-sjlj-rt_v4-rev3.7z
3535
- x86_64-4.9.2-release-win32-seh-rt_v4-rev3.7z
36-
- llvm-3.7.1-i686-w64-mingw32-juliadeps-r04.7z
37-
- llvm-3.7.1-x86_64-w64-mingw32-juliadeps-r04.7z
36+
- llvm-3.7.1-i686-w64-mingw32-juliadeps-r09.7z
37+
- llvm-3.7.1-x86_64-w64-mingw32-juliadeps-r09.7z
3838

3939
build_script:
4040
# If there's a newer build queued for the same PR, cancel this one

contrib/windows/msys_build.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ if [ -z "$USEMSVC" ]; then
122122
fi
123123
export AR=${CROSS_COMPILE}ar
124124

125-
f=llvm-3.7.1-$ARCH-w64-mingw32-juliadeps-r04.7z
125+
f=llvm-3.7.1-$ARCH-w64-mingw32-juliadeps-r09.7z
126126
else
127127
echo "override USEMSVC = 1" >> Make.user
128128
echo "override ARCH = $ARCH" >> Make.user
@@ -142,8 +142,8 @@ checksum_download \
142142
"$f" "https://bintray.com/artifact/download/tkelman/generic/$f"
143143
echo "Extracting $f"
144144
$SEVENZIP x -y $f >> get-deps.log
145-
echo 'override LLVM_CONFIG := $(JULIAHOME)/usr/tools/llvm-config.exe' >> Make.user
146-
echo 'override LLVM_SIZE := $(JULIAHOME)/usr/tools/llvm-size.exe' >> Make.user
145+
echo 'override LLVM_CONFIG := $(JULIAHOME)/usr/bin/llvm-config.exe' >> Make.user
146+
echo 'override LLVM_SIZE := $(JULIAHOME)/usr/bin/llvm-size.exe' >> Make.user
147147

148148
if [ -z "`which make 2>/dev/null`" ]; then
149149
if [ -n "`uname | grep CYGWIN`" ]; then

deps/checksums/llvm-3.7.1-i686-w64-mingw32-juliadeps-r04.7z/md5

Lines changed: 0 additions & 1 deletion
This file was deleted.

deps/checksums/llvm-3.7.1-i686-w64-mingw32-juliadeps-r04.7z/sha512

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
774a1f7cfd555c8e6a786732697efa7e
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
39b2b6ae8d6a7c0e8334011b396a815fc11932a073ab312a607ac08e494baeaca77fb059cc97221924376fa74518b2e3dfafa2608a256e3d433d4f901c2615f0

deps/checksums/llvm-3.7.1-x86_64-w64-mingw32-juliadeps-r04.7z/md5

Lines changed: 0 additions & 1 deletion
This file was deleted.

deps/checksums/llvm-3.7.1-x86_64-w64-mingw32-juliadeps-r04.7z/sha512

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
283ebe30bcb1f5b58380af1389a51912
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
9dcb1496661d33c5683940040d5c4fd9382bb320b157b41a9c97e33548e9255756dc19969193841577de79dc06402191928955d42340e6c10ab3a6f496897bdd

deps/llvm-nodllalias.patch

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
diff --git a/tools/llvm-c-test/Makefile b/tools/llvm-c-test/Makefile
2+
index 08be7c3..f56e83c 100644
3+
--- a/tools/llvm-c-test/Makefile
4+
+++ b/tools/llvm-c-test/Makefile
5+
@@ -25,5 +25,5 @@ CFLAGS += -std=c99 -Wall -Wstrict-prototypes
6+
7+
# ...but if it is built - use it
8+
ifeq ($(ENABLE_SHARED),1)
9+
-LIBS = -lLLVM-$(LLVMVersion)
10+
+LIBS = -lLLVM-$(LLVM_VERSION_MAJOR).$(LLVM_VERSION_MINOR)$(LLVM_VERSION_SUFFIX)
11+
endif
12+
diff --git a/tools/llvm-shlib/Makefile b/tools/llvm-shlib/Makefile
13+
index 2bc81da..3f7652f 100644
14+
--- a/tools/llvm-shlib/Makefile
15+
+++ b/tools/llvm-shlib/Makefile
16+
@@ -15,7 +15,6 @@ LIBRARYALIASNAME = LLVM-$(LLVMVersion)
17+
NO_BUILD_ARCHIVE := 1
18+
LINK_LIBS_IN_SHARED := 1
19+
SHARED_LIBRARY := 1
20+
-SHARED_ALIAS := 1
21+
22+
include $(LEVEL)/Makefile.config
23+
24+
@@ -27,6 +26,8 @@ ifeq ($(HOST_OS), $(filter $(HOST_OS), Cygwin MingW))
25+
SHLIB_FRAG_NAMES += stdc++.a.o
26+
endif
27+
28+
+else
29+
+ SHARED_ALIAS := 1
30+
endif
31+
32+
include $(LEVEL)/Makefile.common

deps/llvm.mk

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -427,11 +427,15 @@ $(eval $(call LLVM_PATCH,llvm-3.7.1))
427427
$(eval $(call LLVM_PATCH,llvm-3.7.1_2))
428428
$(eval $(call LLVM_PATCH,llvm-3.7.1_3))
429429
$(eval $(call LLVM_PATCH,llvm-D14260))
430+
$(eval $(call LLVM_PATCH,llvm-nodllalias))
430431
$(LLVM_SRC_DIR)/llvm-3.7.1_2.patch-applied: $(LLVM_SRC_DIR)/llvm-3.7.1.patch-applied
432+
$(LLVM_SRC_DIR)/llvm-nodllalias.patch-applied: $(LLVM_SRC_DIR)/llvm-3.7.1_2.patch-applied
431433
else ifeq ($(LLVM_VER),3.8.0)
432434
$(eval $(call LLVM_PATCH,llvm-3.7.1_3))
433435
$(eval $(call LLVM_PATCH,llvm-D14260))
434436
$(eval $(call LLVM_PATCH,llvm-3.8.0_winshlib))
437+
$(eval $(call LLVM_PATCH,llvm-nodllalias))
438+
$(LLVM_SRC_DIR)/llvm-nodllalias.patch-applied: $(LLVM_SRC_DIR)/llvm-3.8.0_winshlib.patch-applied
435439
# Cygwin and openSUSE still use win32-threads mingw, https://llvm.org/bugs/show_bug.cgi?id=26365
436440
$(eval $(call LLVM_PATCH,llvm-3.8.0_threads))
437441
# fix replutil test on unix

src/Makefile

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,14 @@ else
6363
ifeq ($(LLVM_USE_CMAKE),1)
6464
LLVMLINK += $(shell $(LLVM_CONFIG_HOST) --ldflags) -lLLVM
6565
else
66+
ifeq ($(OS),WINNT)
67+
LLVMLINK += $(shell $(LLVM_CONFIG_HOST) --ldflags) -lLLVM-$(LLVM_VER_SHORT)
68+
else
6669
LLVMLINK += $(shell $(LLVM_CONFIG_HOST) --ldflags) -lLLVM-$(shell $(LLVM_CONFIG_HOST) --version)
67-
endif
70+
endif # OS == WINNT
71+
endif # LLVM_USE_CMAKE == 1
6872
FLAGS += -DLLVM_SHLIB
69-
endif
73+
endif # USE_LLVM_SHLIB == 1
7074

7175
COMMON_LIBS := -L$(build_shlibdir) -L$(build_libdir) $(LIBUV) $(LIBUTF8PROC) $(NO_WHOLE_ARCHIVE) $(LLVMLINK) $(OSLIBS)
7276
DEBUG_LIBS := $(WHOLE_ARCHIVE) $(BUILDDIR)/flisp/libflisp-debug.a $(WHOLE_ARCHIVE) $(BUILDDIR)/support/libsupport-debug.a $(COMMON_LIBS)

ui/Makefile

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,20 @@ OBJS := $(SRCS:%=$(BUILDDIR)/%.o)
2626
DOBJS := $(SRCS:%=$(BUILDDIR)/%.dbg.obj)
2727
DEBUGFLAGS += $(FLAGS)
2828
SHIPFLAGS += $(FLAGS)
29+
2930
ifeq ($(USE_LLVM_SHLIB),1)
3031
ifeq ($(LLVM_USE_CMAKE),1)
3132
LLVMLINK := $(shell $(LLVM_CONFIG_HOST) --ldflags) -lLLVM
3233
else
34+
ifeq ($(OS),WINNT)
35+
LLVMLINK := $(shell $(LLVM_CONFIG_HOST) --ldflags) -lLLVM-$(LLVM_VER_SHORT)
36+
else
3337
LLVMLINK := $(shell $(LLVM_CONFIG_HOST) --ldflags) -lLLVM-$(shell $(LLVM_CONFIG_HOST) --version)
34-
endif
38+
endif # OS == WINNT
39+
endif # LLVM_USE_CMAKE == 1
3540
else
3641
LLVMLINK :=
37-
endif
42+
endif # USE_LLVM_SHLIB == 1
3843
JLDFLAGS += $(LDFLAGS) $(NO_WHOLE_ARCHIVE) $(OSLIBS) $(LLVMLINK) $(RPATH)
3944

4045
ifeq ($(USE_SYSTEM_LIBM),0)

0 commit comments

Comments
 (0)