diff options
author | Olivier Deprez <olivier.deprez@arm.com> | 2023-04-14 10:39:28 +0100 |
---|---|---|
committer | Ryan Roberts <ryan.roberts@arm.com> | 2023-04-14 11:17:56 +0100 |
commit | 0e31294734629585bcc3bff39e3c5c8e4e9e8365 (patch) | |
tree | 1caf2ac844f3a04e014c3cf35dc5eeb96f117f7a /docker | |
parent | dc60b3ecd8e94c7e3739d10af5b8a8df63639a46 (diff) |
chore: add LLVM/Clang to x86/aarch64 docker image
Add the LLVM/clang toolchains to the 'full' docker image.
For x86 Hafnium builds, this permits using an out of tree toolchain
rather than relying on the toolchain provided by Hafnium prebuilts
submodule.
For aarch64 builds, provide the corresponding toolchain as
Hafnium doesn't provide such toolchain in prebuilts.
Add libncurses dependency required by LLVM/clang toolchain.
Signed-off-by: Olivier Deprez <olivier.deprez@arm.com>
Reviewed-by: Ryan Roberts <ryan.roberts@arm.com>
Diffstat (limited to 'docker')
-rw-r--r-- | docker/Dockerfile.full | 16 | ||||
-rwxr-xr-x | docker/build.sh | 10 |
2 files changed, 26 insertions, 0 deletions
diff --git a/docker/Dockerfile.full b/docker/Dockerfile.full index 1a220ea..8b45c1e 100644 --- a/docker/Dockerfile.full +++ b/docker/Dockerfile.full @@ -30,6 +30,22 @@ RUN cd /tools \ ENV TCH_PATH_AARCH32="/tools/${TCH_PATH_AARCH32}" ENV PATH="${TCH_PATH_AARCH32}:${PATH}" +# Install aarch64 llvm toolchain and dependencies. +RUN apt-get install --assume-yes --no-install-recommends --option=debug::pkgProblemResolver=yes \ + libncurses5 + +ARG TCH_LLVM_PKG_NAME +ARG TCH_LLVM_PATH +COPY ${TCH_LLVM_PKG_NAME} /tools/. +RUN cd /tools \ + && if [ "${TCH_LLVM_PKG_NAME}" != "none" ]; then \ + tar xf ${TCH_LLVM_PKG_NAME}; \ + fi \ + && rm ${TCH_LLVM_PKG_NAME} \ + && cd - +ENV TCH_LLVM_PATH="/tools/${TCH_LLVM_PATH}" +ENV PATH="${TCH_LLVM_PATH}:${PATH}" + # Install packages required to compile Linux kselftests. We install the target # versions for cross-compiling, and the native versions for good measure. RUN dpkg --add-architecture arm64 \ diff --git a/docker/build.sh b/docker/build.sh index 5148cee..e095001 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -34,6 +34,9 @@ if [ "${ARCH}" == "x86_64" ]; then TCH_PKG_URL_AARCH64=https://developer.arm.com/-/media/Files/downloads/gnu/11.3.rel1/binrel TCH_PKG_NAME_AARCH64=arm-gnu-toolchain-11.3.rel1-x86_64-aarch64-none-elf.tar.xz TCH_PATH_AARCH64=arm-gnu-toolchain-11.3.rel1-x86_64-aarch64-none-elf/bin + TCH_LLVM_PKG_URL=https://github.com/llvm/llvm-project/releases/download/llvmorg-12.0.0 + TCH_LLVM_PKG_NAME=clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz + TCH_LLVM_PATH=clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-20.04/bin TCH_PKG_URL_AARCH32=https://developer.arm.com/-/media/Files/downloads/gnu/11.3.rel1/binrel TCH_PKG_NAME_AARCH32=arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-eabi.tar.xz TCH_PATH_AARCH32=arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-eabi/bin @@ -45,6 +48,9 @@ elif [ "${ARCH}" == "aarch64" ]; then TCH_PKG_URL_AARCH64=https://developer.arm.com/-/media/Files/downloads/gnu/11.3.rel1/binrel TCH_PKG_NAME_AARCH64=arm-gnu-toolchain-11.3.rel1-aarch64-aarch64-none-elf.tar.xz TCH_PATH_AARCH64=arm-gnu-toolchain-11.3.rel1-aarch64-aarch64-none-elf/bin + TCH_LLVM_PKG_URL=https://github.com/llvm/llvm-project/releases/download/llvmorg-12.0.0 + TCH_LLVM_PKG_NAME=clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz + TCH_LLVM_PATH=clang+llvm-12.0.0-aarch64-linux-gnu/bin TCH_PKG_URL_AARCH32=https://developer.arm.com/-/media/Files/downloads/gnu/11.3.rel1/binrel TCH_PKG_NAME_AARCH32=arm-gnu-toolchain-11.3.rel1-aarch64-arm-none-eabi.tar.xz TCH_PATH_AARCH32=arm-gnu-toolchain-11.3.rel1-aarch64-arm-none-eabi/bin @@ -61,6 +67,7 @@ echo "Building for version ${VERSION} for ${ARCH}..." # Build the image. wget -q -O ${TCH_PKG_NAME_AARCH64} ${TCH_PKG_URL_AARCH64}/${TCH_PKG_NAME_AARCH64} +wget -q -O ${TCH_LLVM_PKG_NAME} ${TCH_LLVM_PKG_URL}/${TCH_LLVM_PKG_NAME} wget -q -O ${TCH_PKG_NAME_AARCH32} ${TCH_PKG_URL_AARCH32}/${TCH_PKG_NAME_AARCH32} wget -q -O ${FVP_PKG_NAME} ${FVP_PKG_URL}/${FVP_PKG_NAME} docker build \ @@ -82,6 +89,8 @@ docker build \ --build-arg=BASE=${REGISTRY}/base-slim-nofvp:${VERSION}-${ARCH} \ --build-arg=TCH_PKG_NAME_AARCH32=${TCH_PKG_NAME_AARCH32} \ --build-arg=TCH_PATH_AARCH32=${TCH_PATH_AARCH32} \ + --build-arg=TCH_LLVM_PKG_NAME=${TCH_LLVM_PKG_NAME} \ + --build-arg=TCH_LLVM_PATH=${TCH_LLVM_PATH} \ --file=Dockerfile.full \ --tag=${REGISTRY}/base-full-nofvp:${VERSION}-${ARCH} \ . @@ -94,6 +103,7 @@ docker build \ --tag=${REGISTRY}/base-full:${VERSION}-${ARCH} \ . rm -rf ${TCH_PKG_NAME_AARCH64} > /dev/null 2>&1 || true +rm -rf ${TCH_LLVM_PKG_NAME} > /dev/null 2>&1 || true rm -rf ${TCH_PKG_NAME_AARCH32} > /dev/null 2>&1 || true rm -rf ${FVP_PKG_NAME} > /dev/null 2>&1 || true |