diff --git a/src/cbl-mariner/2.0/cross/bionic/amd64/Dockerfile b/src/cbl-mariner/2.0/cross/bionic/amd64/Dockerfile new file mode 100644 index 000000000..5389d8738 --- /dev/null +++ b/src/cbl-mariner/2.0/cross/bionic/amd64/Dockerfile @@ -0,0 +1,46 @@ +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-crossdeps-builder-local AS builder +ARG ROOTFS_DIR=/crossrootfs/x64 + +RUN /scripts/eng/common/cross/build-rootfs.sh x64 bionic --skipunmount + +# Build compiler-rt profile library for PGO instrumentation +RUN mkdir compiler-rt_build && cd compiler-rt_build && \ + BUILD_FLAGS="-v --sysroot=$ROOTFS_DIR" \ + TARGET_TRIPLE="x86_64-linux-gnu" && \ + cmake ../llvm-project.src/compiler-rt \ + -DCOMPILER_RT_BUILD_PROFILE=ON \ + -DCOMPILER_RT_BUILD_SANITIZERS=ON \ + -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON \ + \ + -DCOMPILER_RT_BUILD_BUILTINS=OFF \ + -DCOMPILER_RT_BUILD_CRT=OFF \ + -DCOMPILER_RT_BUILD_GWP_ASAN=OFF \ + -DCOMPILER_RT_BUILD_LIBFUZZER=OFF \ + -DCOMPILER_RT_BUILD_MEMPROF=OFF \ + -DCOMPILER_RT_BUILD_ORC=OFF \ + -DCOMPILER_RT_BUILD_XRAY=OFF \ + \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_ASM_COMPILER=clang \ + -DCMAKE_C_COMPILER=clang \ + -DCMAKE_CXX_COMPILER=clang++ \ + -DCMAKE_SHARED_LINKER_FLAGS="-fuse-ld=lld" \ + -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" \ + -DCMAKE_ASM_COMPILER_TARGET="${TARGET_TRIPLE}" \ + -DCMAKE_C_COMPILER_TARGET="${TARGET_TRIPLE}" \ + -DCMAKE_CXX_COMPILER_TARGET="${TARGET_TRIPLE}" \ + -DCMAKE_ASM_FLAGS="${BUILD_FLAGS}" \ + -DCMAKE_C_FLAGS="${BUILD_FLAGS}" \ + -DCMAKE_CXX_FLAGS="${BUILD_FLAGS}" && \ + make -j $(getconf _NPROCESSORS_ONLN) + +RUN LLVM_VERSION=16.0.0 LLVM_VERSION_MAJOR="${LLVM_VERSION%%.*}" && \ + mkdir -p $ROOTFS_DIR/usr/lib/llvm-${LLVM_VERSION_MAJOR}/lib/clang/${LLVM_VERSION}/lib/linux/ && \ + cp compiler-rt_build/lib/linux/libclang_rt.profile-x86_64.a $ROOTFS_DIR/usr/lib/llvm-${LLVM_VERSION_MAJOR}/lib/clang/${LLVM_VERSION}/lib/linux/ && \ + cp -r compiler-rt_build/include/sanitizer $ROOTFS_DIR/usr/include + + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-crossdeps-llvm-local +ARG ROOTFS_DIR=/crossrootfs/x64 + +COPY --from=builder $ROOTFS_DIR $ROOTFS_DIR diff --git a/src/cbl-mariner/2.0/cross/bionic/arm/Dockerfile b/src/cbl-mariner/2.0/cross/bionic/arm/Dockerfile new file mode 100644 index 000000000..07f1c3ff3 --- /dev/null +++ b/src/cbl-mariner/2.0/cross/bionic/arm/Dockerfile @@ -0,0 +1,46 @@ +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-crossdeps-builder-local AS builder +ARG ROOTFS_DIR=/crossrootfs/arm + +RUN /scripts/eng/common/cross/build-rootfs.sh arm bionic --skipunmount + +# Build compiler-rt profile library for PGO instrumentation +RUN mkdir compiler-rt_build && cd compiler-rt_build && \ + BUILD_FLAGS="-v --sysroot=$ROOTFS_DIR" \ + TARGET_TRIPLE="arm-linux-gnueabihf" && \ + cmake ../llvm-project.src/compiler-rt \ + -DCOMPILER_RT_BUILD_PROFILE=ON \ + -DCOMPILER_RT_BUILD_SANITIZERS=ON \ + -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON \ + \ + -DCOMPILER_RT_BUILD_BUILTINS=OFF \ + -DCOMPILER_RT_BUILD_CRT=OFF \ + -DCOMPILER_RT_BUILD_GWP_ASAN=OFF \ + -DCOMPILER_RT_BUILD_LIBFUZZER=OFF \ + -DCOMPILER_RT_BUILD_MEMPROF=OFF \ + -DCOMPILER_RT_BUILD_ORC=OFF \ + -DCOMPILER_RT_BUILD_XRAY=OFF \ + \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_ASM_COMPILER=clang \ + -DCMAKE_C_COMPILER=clang \ + -DCMAKE_CXX_COMPILER=clang++ \ + -DCMAKE_SHARED_LINKER_FLAGS="-fuse-ld=lld" \ + -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" \ + -DCMAKE_ASM_COMPILER_TARGET="${TARGET_TRIPLE}" \ + -DCMAKE_C_COMPILER_TARGET="${TARGET_TRIPLE}" \ + -DCMAKE_CXX_COMPILER_TARGET="${TARGET_TRIPLE}" \ + -DCMAKE_ASM_FLAGS="${BUILD_FLAGS}" \ + -DCMAKE_C_FLAGS="${BUILD_FLAGS}" \ + -DCMAKE_CXX_FLAGS="${BUILD_FLAGS}" && \ + make -j $(getconf _NPROCESSORS_ONLN) + +RUN LLVM_VERSION=16.0.0 LLVM_VERSION_MAJOR="${LLVM_VERSION%%.*}" && \ + mkdir -p $ROOTFS_DIR/usr/lib/llvm-${LLVM_VERSION_MAJOR}/lib/clang/${LLVM_VERSION}/lib/linux/ && \ + cp compiler-rt_build/lib/linux/libclang_rt.*-armhf.a $ROOTFS_DIR/usr/lib/llvm-${LLVM_VERSION_MAJOR}/lib/clang/${LLVM_VERSION}/lib/linux/ && \ + cp -r compiler-rt_build/include/sanitizer $ROOTFS_DIR/usr/include + + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-crossdeps-llvm-local +ARG ROOTFS_DIR=/crossrootfs/arm + +COPY --from=builder $ROOTFS_DIR $ROOTFS_DIR diff --git a/src/cbl-mariner/2.0/cross/bionic/arm64/Dockerfile b/src/cbl-mariner/2.0/cross/bionic/arm64/Dockerfile new file mode 100644 index 000000000..564d20785 --- /dev/null +++ b/src/cbl-mariner/2.0/cross/bionic/arm64/Dockerfile @@ -0,0 +1,46 @@ +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-crossdeps-builder-local AS builder +ARG ROOTFS_DIR=/crossrootfs/arm64 + +RUN /scripts/eng/common/cross/build-rootfs.sh arm64 bionic --skipunmount + +# Build compiler-rt profile library for PGO instrumentation +RUN mkdir compiler-rt_build && cd compiler-rt_build && \ + BUILD_FLAGS="-v --sysroot=$ROOTFS_DIR" \ + TARGET_TRIPLE="aarch64-linux-gnu" && \ + cmake ../llvm-project.src/compiler-rt \ + -DCOMPILER_RT_BUILD_PROFILE=ON \ + -DCOMPILER_RT_BUILD_SANITIZERS=ON \ + -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON \ + \ + -DCOMPILER_RT_BUILD_BUILTINS=OFF \ + -DCOMPILER_RT_BUILD_CRT=OFF \ + -DCOMPILER_RT_BUILD_GWP_ASAN=OFF \ + -DCOMPILER_RT_BUILD_LIBFUZZER=OFF \ + -DCOMPILER_RT_BUILD_MEMPROF=OFF \ + -DCOMPILER_RT_BUILD_ORC=OFF \ + -DCOMPILER_RT_BUILD_XRAY=OFF \ + \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_ASM_COMPILER=clang \ + -DCMAKE_C_COMPILER=clang \ + -DCMAKE_CXX_COMPILER=clang++ \ + -DCMAKE_SHARED_LINKER_FLAGS="-fuse-ld=lld" \ + -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" \ + -DCMAKE_ASM_COMPILER_TARGET="${TARGET_TRIPLE}" \ + -DCMAKE_C_COMPILER_TARGET="${TARGET_TRIPLE}" \ + -DCMAKE_CXX_COMPILER_TARGET="${TARGET_TRIPLE}" \ + -DCMAKE_ASM_FLAGS="${BUILD_FLAGS}" \ + -DCMAKE_C_FLAGS="${BUILD_FLAGS}" \ + -DCMAKE_CXX_FLAGS="${BUILD_FLAGS}" && \ + make -j $(getconf _NPROCESSORS_ONLN) + +RUN LLVM_VERSION=16.0.0 LLVM_VERSION_MAJOR="${LLVM_VERSION%%.*}" && \ + mkdir -p $ROOTFS_DIR/usr/lib/llvm-${LLVM_VERSION_MAJOR}/lib/clang/${LLVM_VERSION}/lib/linux/ && \ + cp compiler-rt_build/lib/linux/libclang_rt.*-aarch64.a $ROOTFS_DIR/usr/lib/llvm-${LLVM_VERSION_MAJOR}/lib/clang/${LLVM_VERSION}/lib/linux/ && \ + cp -r compiler-rt_build/include/sanitizer $ROOTFS_DIR/usr/include + + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-crossdeps-llvm-local +ARG ROOTFS_DIR=/crossrootfs/arm64 + +COPY --from=builder $ROOTFS_DIR $ROOTFS_DIR diff --git a/src/cbl-mariner/2.0/cross/bionic/x86/Dockerfile b/src/cbl-mariner/2.0/cross/bionic/x86/Dockerfile new file mode 100644 index 000000000..af7559fba --- /dev/null +++ b/src/cbl-mariner/2.0/cross/bionic/x86/Dockerfile @@ -0,0 +1,46 @@ +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-crossdeps-builder-local AS builder +ARG ROOTFS_DIR=/crossrootfs/x86 + +RUN /scripts/eng/common/cross/build-rootfs.sh x86 bionic --skipunmount + +# Build compiler-rt profile library for PGO instrumentation +RUN mkdir compiler-rt_build && cd compiler-rt_build && \ + BUILD_FLAGS="-v --sysroot=$ROOTFS_DIR" \ + TARGET_TRIPLE="i386-linux-gnu" && \ + cmake ../llvm-project.src/compiler-rt \ + -DCOMPILER_RT_BUILD_PROFILE=ON \ + -DCOMPILER_RT_BUILD_SANITIZERS=ON \ + -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON \ + \ + -DCOMPILER_RT_BUILD_BUILTINS=OFF \ + -DCOMPILER_RT_BUILD_CRT=OFF \ + -DCOMPILER_RT_BUILD_GWP_ASAN=OFF \ + -DCOMPILER_RT_BUILD_LIBFUZZER=OFF \ + -DCOMPILER_RT_BUILD_MEMPROF=OFF \ + -DCOMPILER_RT_BUILD_ORC=OFF \ + -DCOMPILER_RT_BUILD_XRAY=OFF \ + \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_ASM_COMPILER=clang \ + -DCMAKE_C_COMPILER=clang \ + -DCMAKE_CXX_COMPILER=clang++ \ + -DCMAKE_SHARED_LINKER_FLAGS="-fuse-ld=lld" \ + -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" \ + -DCMAKE_ASM_COMPILER_TARGET="${TARGET_TRIPLE}" \ + -DCMAKE_C_COMPILER_TARGET="${TARGET_TRIPLE}" \ + -DCMAKE_CXX_COMPILER_TARGET="${TARGET_TRIPLE}" \ + -DCMAKE_ASM_FLAGS="${BUILD_FLAGS}" \ + -DCMAKE_C_FLAGS="${BUILD_FLAGS}" \ + -DCMAKE_CXX_FLAGS="${BUILD_FLAGS}" && \ + make -j $(getconf _NPROCESSORS_ONLN) + +RUN LLVM_VERSION=16.0.0 LLVM_VERSION_MAJOR="${LLVM_VERSION%%.*}" && \ + mkdir -p $ROOTFS_DIR/usr/lib/llvm-${LLVM_VERSION_MAJOR}/lib/clang/${LLVM_VERSION}/lib/linux/ && \ + cp compiler-rt_build/lib/linux/libclang_rt.*-i386.a $ROOTFS_DIR/usr/lib/llvm-${LLVM_VERSION_MAJOR}/lib/clang/${LLVM_VERSION}/lib/linux/ && \ + cp -r compiler-rt_build/include/sanitizer $ROOTFS_DIR/usr/include + + +FROM mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-crossdeps-llvm-local +ARG ROOTFS_DIR=/crossrootfs/x86 + +COPY --from=builder $ROOTFS_DIR $ROOTFS_DIR diff --git a/src/cbl-mariner/2.0/crossdeps-builder/Dockerfile b/src/cbl-mariner/2.0/crossdeps-builder/Dockerfile index e6d6e9982..8087e27d6 100644 --- a/src/cbl-mariner/2.0/crossdeps-builder/Dockerfile +++ b/src/cbl-mariner/2.0/crossdeps-builder/Dockerfile @@ -73,3 +73,4 @@ RUN mkdir llvm-project.src && \ # Obtain arcade scripts used to build rootfs RUN git config --global user.email builder@dotnet-buildtools-prereqs-docker && \ git clone --depth 1 --single-branch https://github.com/dotnet/arcade /scripts + diff --git a/src/cbl-mariner/manifest.json b/src/cbl-mariner/manifest.json index 9d6b58ff5..ba535c8fd 100644 --- a/src/cbl-mariner/manifest.json +++ b/src/cbl-mariner/manifest.json @@ -193,6 +193,58 @@ } } ] + }, + { + "platforms": [ + { + "dockerfile": "src/cbl-mariner/2.0/cross/bionic/arm", + "os": "linux", + "osVersion": "cbl-mariner2.0", + "tags": { + "cbl-mariner-2.0-cross-ubuntu-18.04-arm-$(System:TimeStamp)-$(System:DockerfileGitCommitSha)": {}, + "cbl-mariner-2.0-cross-ubuntu-18.04-arm$(FloatingTagSuffix)": {} + } + } + ] + }, + { + "platforms": [ + { + "dockerfile": "src/cbl-mariner/2.0/cross/bionic/arm64", + "os": "linux", + "osVersion": "cbl-mariner2.0", + "tags": { + "cbl-mariner-2.0-cross-ubuntu-18.04-arm64-$(System:TimeStamp)-$(System:DockerfileGitCommitSha)": {}, + "cbl-mariner-2.0-cross-ubuntu-18.04-arm64$(FloatingTagSuffix)": {} + } + } + ] + }, + { + "platforms": [ + { + "dockerfile": "src/cbl-mariner/2.0/cross/bionic/x86", + "os": "linux", + "osVersion": "cbl-mariner2.0", + "tags": { + "cbl-mariner-2.0-cross-ubuntu-18.04-x86-$(System:TimeStamp)-$(System:DockerfileGitCommitSha)": {}, + "cbl-mariner-2.0-cross-ubuntu-18.04-x86$(FloatingTagSuffix)": {} + } + } + ] + }, + { + "platforms": [ + { + "dockerfile": "src/cbl-mariner/2.0/cross/bionic/amd64", + "os": "linux", + "osVersion": "cbl-mariner2.0", + "tags": { + "cbl-mariner-2.0-cross-ubuntu-18.04-amd64-$(System:TimeStamp)-$(System:DockerfileGitCommitSha)": {}, + "cbl-mariner-2.0-cross-ubuntu-18.04-amd64$(FloatingTagSuffix)": {} + } + } + ] } ] }