109
109
# This is because LLVM's cross-compile setup is kind of borked, so we just
110
110
# build the tools natively ourselves, directly. :/
111
111
112
- # Build llvm-tblgen, clang-tblgen, and llvm-config
112
+ # Build host-native llvm-tblgen, clang-tblgen, and llvm-config
113
113
mkdir ${WORKSPACE}/bootstrap
114
114
pushd ${WORKSPACE}/bootstrap
115
115
CMAKE_FLAGS=()
@@ -127,9 +127,17 @@ if [[ "${LLVM_MAJ_VER}" -gt "13" ]]; then
127
127
fi
128
128
CMAKE_FLAGS+=(-DCMAKE_CROSSCOMPILING=False)
129
129
CMAKE_FLAGS+=(-DCMAKE_TOOLCHAIN_FILE=${CMAKE_HOST_TOOLCHAIN})
130
+ # Turn off random crap the host tools do not need to configure
131
+ CMAKE_FLAGS+=(-DLLVM_ENABLE_ZLIB=OFF)
132
+ if [[ "${LLVM_MAJ_VER}" -ge "20" ]]; then
133
+ CMAKE_FLAGS+=(-DLLVM_ENABLE_ZSTD=OFF)
134
+ fi
135
+ CMAKE_FLAGS+=(-DLLVM_ENABLE_LIBXML2=OFF)
130
136
131
137
cmake -GNinja ${LLVM_SRCDIR} ${CMAKE_FLAGS[@]}
132
- if [[ ("${LLVM_MAJ_VER}" -eq "12" && "${LLVM_PATCH_VER}" -gt "0") || "${LLVM_MAJ_VER}" -gt "12" ]]; then
138
+ if [[ "${LLVM_MAJ_VER}" -ge "17" ]]; then
139
+ ninja -j${nproc} llvm-tblgen llvm-min-tblgen clang-tblgen mlir-tblgen llvm-config
140
+ elif [[ ("${LLVM_MAJ_VER}" -eq "12" && "${LLVM_PATCH_VER}" -gt "0") || "${LLVM_MAJ_VER}" -gt "12" ]]; then
133
141
ninja -j${nproc} llvm-tblgen clang-tblgen mlir-tblgen llvm-config
134
142
else
135
143
ninja -j${nproc} llvm-tblgen clang-tblgen llvm-config
@@ -162,6 +170,10 @@ CMAKE_C_FLAGS=()
162
170
163
171
CMAKE_FLAGS=()
164
172
173
+ if [[ "${target}" != *-apple-darwin* ]]; then
174
+ CMAKE_FLAGS+=(-DCMAKE_SHARED_LINKER_FLAGS=-Wl,--build-id)
175
+ fi
176
+
165
177
# Release build for best performance
166
178
CMAKE_FLAGS+=(-DCMAKE_BUILD_TYPE=Release)
167
179
if [[ "${ASSERTS}" == "1" ]]; then
@@ -201,6 +213,10 @@ CMAKE_FLAGS+=(-DLLVM_BINDINGS_LIST="" )
201
213
202
214
# Turn on ZLIB
203
215
CMAKE_FLAGS+=(-DLLVM_ENABLE_ZLIB=FORCE_ON)
216
+ # Turn on ZSTD
217
+ if [[ "${LLVM_MAJ_VER}" -ge "20" ]]; then
218
+ CMAKE_FLAGS+=(-DLLVM_ENABLE_ZSTD=FORCE_ON)
219
+ fi
204
220
# Turn off XML2
205
221
CMAKE_FLAGS+=(-DLLVM_ENABLE_LIBXML2=OFF)
206
222
266
282
267
283
# Tell LLVM where our pre-built tblgen tools are
268
284
CMAKE_FLAGS+=(-DLLVM_TABLEGEN=${WORKSPACE}/bootstrap/bin/llvm-tblgen)
285
+ if [[ "${LLVM_MAJ_VER}" -ge "17" ]]; then
286
+ CMAKE_FLAGS+=(-DLLVM_HEADERS_TABLEGEN=${WORKSPACE}/bootstrap/bin/llvm-min-tblgen)
287
+ fi
269
288
CMAKE_FLAGS+=(-DCLANG_TABLEGEN=${WORKSPACE}/bootstrap/bin/clang-tblgen)
270
289
CMAKE_FLAGS+=(-DLLVM_CONFIG_PATH=${WORKSPACE}/bootstrap/bin/llvm-config)
271
290
if [[ ( "${LLVM_MAJ_VER}" -eq "12" && "${LLVM_PATCH_VER}" -gt "0" ) || "${LLVM_MAJ_VER}" -gt "12" ]]; then
@@ -677,9 +696,12 @@ function configure_build(ARGS, version; experimental_platforms=false, assert=fal
677
696
# Dependencies that must be installed before this package can be built
678
697
# TODO : LibXML2
679
698
dependencies = [
680
- Dependency (" Zlib_jll" ), # for LLD<O
699
+ Dependency (" Zlib_jll" ), # for LLD<O&debuginfo
681
700
BuildDependency (" LLVMCompilerRT_jll" ; platforms= filter (p -> sanitize (p) == " memory" , platforms)),
682
701
]
702
+ if version >= v " 20"
703
+ push! (dependencies, Dependency (" Zstd_jll" )) # for debuginfo
704
+ end
683
705
if update_sdk
684
706
config *= " LLVM_UPDATE_MAC_SDK=1\n "
685
707
push! (sources,
@@ -793,8 +815,11 @@ function configure_extraction(ARGS, LLVM_full_version, name, libLLVM_version=not
793
815
end
794
816
795
817
dependencies = BinaryBuilder. AbstractDependency[
796
- Dependency (" Zlib_jll" ), # for LLD<O
818
+ Dependency (" Zlib_jll" ), # for LLD<O&debuginfo
797
819
]
820
+ if version >= v " 20"
821
+ push! (dependencies, Dependency (" Zstd_jll" )) # for debuginfo
822
+ end
798
823
799
824
# Parse out some args
800
825
if " --assert" in ARGS
0 commit comments