From e596c06708fb8263d79c2495825cd7eba7e34f3f Mon Sep 17 00:00:00 2001 From: David Cerdeira Date: Fri, 26 Jul 2024 14:56:13 +0100 Subject: [PATCH] feat(docker): Add llvm, clang and linker Signed-off-by: David Cerdeira Signed-off-by: Jose Martins --- docker/Dockerfile | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 71e3dbd..8c5a269 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -8,6 +8,7 @@ ARG AARCH32_TOOLCHAIN_LINK=https://armkeil.blob.core.windows.net/developer/Files ARG RISCV_TOOLCHAIN_LINK=https://github.com/bao-project/bao-riscv-toolchain/releases/download/gc891d8dc23e/riscv64-unknown-elf-13.2.0-ubuntu-22.04.tar.gz ARG ASMFMT_LINK=https://github.com/klauspost/asmfmt/releases/download/v1.3.2/asmfmt-Linux_x86_64_1.3.2.tar.gz ARG CLANG_VERSION=18 +ARG CLANG_TOOLS_VERSION=18 # use this repo temporarily while the patches for misra fps are not in a new official version ARG CPPCHECK_REPO=https://github.com/danmar/cppcheck.git ARG CPPCHECK_VERSION=2.9 @@ -65,21 +66,36 @@ RUN npm install -g cspell@latest # Install static analyzers # clang-format and clang-tidy RUN wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - && \ - add-apt-repository "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-$CLANG_VERSION main" && \ + add-apt-repository "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-$CLANG_TOOLS_VERSION main" && \ apt-get update && apt-get install -y \ - clang-format-$CLANG_VERSION \ - clang-tidy-$CLANG_VERSION + clang-format-$CLANG_TOOLS_VERSION \ + clang-tidy-$CLANG_TOOLS_VERSION # cppcheck RUN mkdir /opt/cppcheck && git clone $CPPCHECK_REPO --depth 1 --branch $CPPCHECK_VERSION /opt/cppcheck && \ make -C /opt/cppcheck FILESDIR=/usr/share/cppcheck && make -C /opt/cppcheck install FILESDIR=/usr/share/cppcheck # asmfmt RUN mkdir /opt/asmfmt && curl -L $ASMFMT_LINK | tar xz -C /opt/asmfmt -# Install toolchains +# Install GNU toolchains RUN mkdir /opt/aarch64-toolchain && curl $AARCH64_TOOLCHAIN_LINK | tar xJ -C /opt/aarch64-toolchain --strip-components=1 && \ mkdir /opt/aarch32-toolchain && curl $AARCH32_TOOLCHAIN_LINK | tar xJ -C /opt/aarch32-toolchain --strip-components=1 && \ mkdir /opt/riscv-toolchain && curl -L $RISCV_TOOLCHAIN_LINK | tar xz -C /opt/riscv-toolchain --strip-components=1 +# Install LLVM toolchain +RUN wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - && \ + add-apt-repository "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-$CLANG_VERSION main" && \ + apt-get update && apt-get install -y clang-$CLANG_VERSION lld-$CLANG_VERSION && \ + export CLANG_PATH=$(dirname $(which clang-$CLANG_VERSION)) && \ + ln -s $CLANG_PATH/clang-$CLANG_VERSION $CLANG_PATH/clang && \ + ln -s $CLANG_PATH/clang-cpp-$CLANG_VERSION $CLANG_PATH/clang-cpp && \ + ln -s $CLANG_PATH/llvm-strip-$CLANG_VERSION $CLANG_PATH/llvm-strip && \ + ln -s $CLANG_PATH/llvm-as-$CLANG_VERSION $CLANG_PATH/llvm-as && \ + ln -s $CLANG_PATH/llvm-objcopy-$CLANG_VERSION $CLANG_PATH/llvm-objcopy && \ + ln -s $CLANG_PATH/llvm-objdump-$CLANG_VERSION $CLANG_PATH/llvm-objdump && \ + ln -s $CLANG_PATH/llvm-readelf-$CLANG_VERSION $CLANG_PATH/llvm-readelf && \ + ln -s $CLANG_PATH/llvm-size-$CLANG_VERSION $CLANG_PATH/llvm-size && \ + ln -s $CLANG_PATH/ld.lld-$CLANG_VERSION $CLANG_PATH/ld.lld + # Add generic non-root user RUN addgroup bao && adduser -disabled-password --ingroup bao bao