Skip to content

Commit 7ff98fd

Browse files
authored
[LLVM] enable Zstd and build-id for v20+ (#11135)
Disable target features explicitly for host build, to avoid environment conflicts, while adding Zstd and build-id support to the target. Refs: #11013
1 parent 3803c31 commit 7ff98fd

File tree

3 files changed

+31
-6
lines changed

3 files changed

+31
-6
lines changed

L/LLVM/LLVM_full@20/build_tarballs.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@ include("../common.jl")
44

55
build_tarballs(ARGS, configure_build(ARGS, version; experimental_platforms=true)...;
66
preferred_gcc_version=v"10", preferred_llvm_version=v"16", julia_compat="1.6")
7-
# Build trigger: #11152
7+
# Build trigger: #11135

L/LLVM/LLVM_full_assert@20/build_tarballs.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@ include("../common.jl")
44

55
build_tarballs(ARGS, configure_build(ARGS, version; assert=true, experimental_platforms=true)...;
66
preferred_gcc_version=v"10", preferred_llvm_version=v"16", julia_compat="1.6")
7-
# Build trigger: #11152
7+
# Build trigger: #11135

L/LLVM/common.jl

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ fi
109109
# This is because LLVM's cross-compile setup is kind of borked, so we just
110110
# build the tools natively ourselves, directly. :/
111111
112-
# Build llvm-tblgen, clang-tblgen, and llvm-config
112+
# Build host-native llvm-tblgen, clang-tblgen, and llvm-config
113113
mkdir ${WORKSPACE}/bootstrap
114114
pushd ${WORKSPACE}/bootstrap
115115
CMAKE_FLAGS=()
@@ -127,9 +127,17 @@ if [[ "${LLVM_MAJ_VER}" -gt "13" ]]; then
127127
fi
128128
CMAKE_FLAGS+=(-DCMAKE_CROSSCOMPILING=False)
129129
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)
130136
131137
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
133141
ninja -j${nproc} llvm-tblgen clang-tblgen mlir-tblgen llvm-config
134142
else
135143
ninja -j${nproc} llvm-tblgen clang-tblgen llvm-config
@@ -162,6 +170,10 @@ CMAKE_C_FLAGS=()
162170
163171
CMAKE_FLAGS=()
164172
173+
if [[ "${target}" != *-apple-darwin* ]]; then
174+
CMAKE_FLAGS+=(-DCMAKE_SHARED_LINKER_FLAGS=-Wl,--build-id)
175+
fi
176+
165177
# Release build for best performance
166178
CMAKE_FLAGS+=(-DCMAKE_BUILD_TYPE=Release)
167179
if [[ "${ASSERTS}" == "1" ]]; then
@@ -201,6 +213,10 @@ CMAKE_FLAGS+=(-DLLVM_BINDINGS_LIST="" )
201213
202214
# Turn on ZLIB
203215
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
204220
# Turn off XML2
205221
CMAKE_FLAGS+=(-DLLVM_ENABLE_LIBXML2=OFF)
206222
@@ -266,6 +282,9 @@ fi
266282
267283
# Tell LLVM where our pre-built tblgen tools are
268284
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
269288
CMAKE_FLAGS+=(-DCLANG_TABLEGEN=${WORKSPACE}/bootstrap/bin/clang-tblgen)
270289
CMAKE_FLAGS+=(-DLLVM_CONFIG_PATH=${WORKSPACE}/bootstrap/bin/llvm-config)
271290
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
677696
# Dependencies that must be installed before this package can be built
678697
# TODO: LibXML2
679698
dependencies = [
680-
Dependency("Zlib_jll"), # for LLD&LTO
699+
Dependency("Zlib_jll"), # for LLD&LTO&debuginfo
681700
BuildDependency("LLVMCompilerRT_jll"; platforms=filter(p -> sanitize(p) == "memory", platforms)),
682701
]
702+
if version >= v"20"
703+
push!(dependencies, Dependency("Zstd_jll")) # for debuginfo
704+
end
683705
if update_sdk
684706
config *= "LLVM_UPDATE_MAC_SDK=1\n"
685707
push!(sources,
@@ -793,8 +815,11 @@ function configure_extraction(ARGS, LLVM_full_version, name, libLLVM_version=not
793815
end
794816

795817
dependencies = BinaryBuilder.AbstractDependency[
796-
Dependency("Zlib_jll"), # for LLD&LTO
818+
Dependency("Zlib_jll"), # for LLD&LTO&debuginfo
797819
]
820+
if version >= v"20"
821+
push!(dependencies, Dependency("Zstd_jll")) # for debuginfo
822+
end
798823

799824
# Parse out some args
800825
if "--assert" in ARGS

0 commit comments

Comments
 (0)