summaryrefslogtreecommitdiff
path: root/docker
diff options
context:
space:
mode:
authorOlivier Deprez <olivier.deprez@arm.com>2023-04-14 10:39:28 +0100
committerRyan Roberts <ryan.roberts@arm.com>2023-04-14 11:17:56 +0100
commit0e31294734629585bcc3bff39e3c5c8e4e9e8365 (patch)
tree1caf2ac844f3a04e014c3cf35dc5eeb96f117f7a /docker
parentdc60b3ecd8e94c7e3739d10af5b8a8df63639a46 (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.full16
-rwxr-xr-xdocker/build.sh10
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