Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 16 additions & 4 deletions dockerfiles/ci/centos/7/base.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -196,9 +196,9 @@ ENV PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:/usr/local/lib/pkgconfig:/usr/local/lib6
# Caution, takes a very long time! Since we have to build one from source,
# I picked LLVM 21, which matches Rust 1.91.
# Ordinarily we leave sources, but LLVM is 2GiB just for the sources...
# Minimum: libclang. Nice-to-have: full toolchain including linker to play
# with cross-language link-time optimization. Needs to match rustc -Vv's llvm
# version.
# Share LLVM and Clang code between the clang driver, LLD and libclang instead
# of embedding static LLVM libraries in each executable (saves a lot of size).
# compiler-rt builtins remain static; libgcc_s still supplies the C++ unwinder.
RUN yum install -y --nogpgcheck devtoolset-9 \
&& source scl_source enable devtoolset-9 \
&& yum install -y python3 \
Expand All @@ -214,8 +214,20 @@ RUN yum install -y --nogpgcheck devtoolset-9 \
&& git clone --depth 1 -b release/21.x https://github.com/llvm/llvm-project.git \
&& mkdir -vp llvm-project/build \
&& cd llvm-project/build \
&& cmake -G Ninja -DLLVM_ENABLE_PROJECTS="clang;lld" -DLLVM_TARGETS_TO_BUILD=host -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DLLVM_INCLUDE_TESTS=OFF -DLLVM_ENABLE_BINDINGS=OFF -DLLVM_INSTALL_TOOLCHAIN_ONLY=ON ../llvm \
&& cmake -G Ninja -DLLVM_ENABLE_PROJECTS="clang;lld" -DLLVM_ENABLE_RUNTIMES=compiler-rt -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON -DCLANG_BUILD_CLANG_DYLIB=ON -DCLANG_LINK_CLANG_DYLIB=ON -DLLVM_TARGETS_TO_BUILD=host -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON -DCOMPILER_RT_ENABLE_PER_TARGET_RUNTIME_DIR=ON -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON -DCOMPILER_RT_BUILD_SANITIZERS=OFF -DCOMPILER_RT_BUILD_PROFILE=OFF -DCOMPILER_RT_BUILD_LIBFUZZER=OFF -DCOMPILER_RT_BUILD_XRAY=OFF -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_INSTALL_PREFIX=/usr/local -DLLVM_INCLUDE_TESTS=OFF -DLLVM_ENABLE_BINDINGS=OFF -DLLVM_INSTALL_TOOLCHAIN_ONLY=ON ../llvm \
&& cmake --build . --parallel $(nproc) --target "install/strip" \
&& ldconfig \
&& cmake --build . --parallel $(nproc) --target install-runtimes \
&& resource_dir="$(/usr/local/bin/clang --print-resource-dir)/lib" \
&& target="$(/usr/local/bin/clang -dumpmachine)" \
&& if [ ! -s "$resource_dir/$target/libclang_rt.builtins.a" ]; then \
test -s "$resource_dir/linux/libclang_rt.builtins-$(uname -m).a"; \
mkdir -p "$resource_dir/$target"; \
ln -s "../linux/libclang_rt.builtins-$(uname -m).a" "$resource_dir/$target/libclang_rt.builtins.a"; \
fi \
&& test -s "$resource_dir/$target/libclang_rt.builtins.a" \
&& printf 'int main(void) { return 0; }\n' | /usr/local/bin/clang -x c - -rtlib=compiler-rt -fuse-ld=lld -o /tmp/compiler-rt-smoke \
&& /tmp/compiler-rt-smoke && rm /tmp/compiler-rt-smoke \
&& rm -f /usr/local/lib/libclang*.a /usr/local/lib/libLLVM*.a \
&& rm -rf /usr/local/include/llvm /usr/local/include/clang \
&& rm -rf /usr/local/lib/cmake/llvm /usr/local/lib/cmake/clang /usr/local/lib/cmake/lld \
Expand Down
Loading