|
| 1 | +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-crossdeps-builder-local AS builder |
| 2 | +ARG ROOTFS_DIR=/crossrootfs/x86 |
| 3 | + |
| 4 | +# Provides LLVMConfig.cmake, needed to build compiler-rt. Only needed on x86. |
| 5 | +# x64 doesn't need this because we use compiler-rt from the mariner package. |
| 6 | +# arm/arm64 don't need this because LLVMConfig.cmake is provided by the LLVM we build from source. |
| 7 | +RUN tdnf install -y llvm-devel |
| 8 | + |
| 9 | +RUN /scripts/eng/common/cross/build-rootfs.sh x86 xenial --skipunmount |
| 10 | + |
| 11 | +# Build compiler-rt profile library for PGO instrumentation |
| 12 | +RUN mkdir compiler-rt_build && cd compiler-rt_build && \ |
| 13 | + BUILD_FLAGS="-v --sysroot=$ROOTFS_DIR" \ |
| 14 | + TARGET_TRIPLE=i386-linux-gnu && \ |
| 15 | + cmake ../llvm-project.src/compiler-rt \ |
| 16 | + -DCOMPILER_RT_BUILD_PROFILE=ON \ |
| 17 | + -DCOMPILER_RT_BUILD_BUILTINS=OFF \ |
| 18 | + -DCOMPILER_RT_BUILD_SANITIZERS=OFF \ |
| 19 | + -DCOMPILER_RT_BUILD_XRAY=OFF \ |
| 20 | + -DCOMPILER_RT_BUILD_LIBFUZZER=OFF \ |
| 21 | + \ |
| 22 | + -DCMAKE_C_COMPILER=clang \ |
| 23 | + -DCMAKE_CXX_COMPILER=clang++ \ |
| 24 | + -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" \ |
| 25 | + -DCMAKE_C_COMPILER_TARGET=${TARGET_TRIPLE} \ |
| 26 | + -DCMAKE_CXX_COMPILER_TARGET=${TARGET_TRIPLE} \ |
| 27 | + -DLLVM_CONFIG_PATH=llvm-config \ |
| 28 | + -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON \ |
| 29 | + -DCMAKE_BUILD_TYPE=Release \ |
| 30 | + -DCMAKE_INSTALL_PREFIX=$ROOTFS_DIR/usr \ |
| 31 | + -DCMAKE_C_FLAGS="${BUILD_FLAGS}" \ |
| 32 | + -DCMAKE_CXX_FLAGS="${BUILD_FLAGS}" && \ |
| 33 | + make -j $(getconf _NPROCESSORS_ONLN) |
| 34 | + |
| 35 | +RUN LLVM_VERSION=12.0.1 LLVM_VERSION_MAJOR="${LLVM_VERSION%%.*}" && \ |
| 36 | + mkdir -p $ROOTFS_DIR/usr/lib/llvm-${LLVM_VERSION_MAJOR}/lib/clang/${LLVM_VERSION}/lib/linux/ && \ |
| 37 | + cp compiler-rt_build/lib/linux/libclang_rt.profile-i386.a $ROOTFS_DIR/usr/lib/llvm-${LLVM_VERSION_MAJOR}/lib/clang/${LLVM_VERSION}/lib/linux/ |
| 38 | + |
| 39 | + |
| 40 | +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-crossdeps-amd64-local |
| 41 | +ARG ROOTFS_DIR=/crossrootfs/x86 |
| 42 | + |
| 43 | +COPY --from=builder $ROOTFS_DIR $ROOTFS_DIR |
0 commit comments