diff --git a/Documentation/Usage.md b/Documentation/Usage.md index c90207b..dc9b9d8 100644 --- a/Documentation/Usage.md +++ b/Documentation/Usage.md @@ -9,10 +9,10 @@ The script takes these three arguments: `./scripts/compile-kernel.sh ` For example, to build the current main-line kernel with the default kernel -configuration and clang compiler, run: +configuration and clang-5.0 compiler, run: ``` -./scripts/compile-kernel.sh torvalds defconfig clang +./scripts/compile-kernel.sh torvalds defconfig clang-5.0 ``` For other help, use `./scripts/compile-kernel.sh --help`. diff --git a/docker/kernel-clang/Dockerfile b/docker/kernel-clang-5.0/Dockerfile similarity index 100% rename from docker/kernel-clang/Dockerfile rename to docker/kernel-clang-5.0/Dockerfile diff --git a/docker/kernel-clang-6.0/Dockerfile b/docker/kernel-clang-6.0/Dockerfile new file mode 100644 index 0000000..abda1ae --- /dev/null +++ b/docker/kernel-clang-6.0/Dockerfile @@ -0,0 +1,17 @@ +# Copyright (C) Lukas Bulwahn, BMW Car IT GmbH +# SPDX-License-Identifier: GPL-2.0 +FROM debian:buster + +LABEL maintainer="Lukas Bulwahn " + +# Install tools needed for kernel build and clang compiler +RUN apt-get update && apt-get install --no-install-recommends -y \ + bc \ + bison \ + bsdmainutils \ + clang-6.0 \ + flex \ + libelf-dev \ + libssl-dev \ + make \ + && rm -rf /var/lib/apt/lists/* diff --git a/docker/kernel-clang-7-llvm-snapshot/Dockerfile b/docker/kernel-clang-7-llvm-snapshot/Dockerfile new file mode 100644 index 0000000..a76de59 --- /dev/null +++ b/docker/kernel-clang-7-llvm-snapshot/Dockerfile @@ -0,0 +1,25 @@ +# Copyright (C) Lukas Bulwahn, BMW Car IT GmbH +# SPDX-License-Identifier: GPL-2.0 +FROM debian:buster + +LABEL maintainer="Lukas Bulwahn " + +# Install tools needed for kernel build and clang compiler +RUN apt-get update && apt-get install --no-install-recommends -y \ + bc \ + bison \ + bsdmainutils \ + ca-certificates \ + gnupg \ + gnupg-utils \ + flex \ + libelf-dev \ + libssl-dev \ + make \ + wget + +RUN echo "deb http://apt.llvm.org/unstable/ llvm-toolchain main" >> /etc/apt/sources.list \ + && wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - \ + && apt-get update \ + && apt-get install --no-install-recommends -y clang-7 \ + && rm -rf /var/lib/apt/lists/* diff --git a/docker/kernel-clang-7/Dockerfile b/docker/kernel-clang-7/Dockerfile new file mode 100644 index 0000000..5b5b35d --- /dev/null +++ b/docker/kernel-clang-7/Dockerfile @@ -0,0 +1,17 @@ +# Copyright (C) Lukas Bulwahn, BMW Car IT GmbH +# SPDX-License-Identifier: GPL-2.0 +FROM debian:sid + +LABEL maintainer="Lukas Bulwahn " + +# Install tools needed for kernel build and clang compiler +RUN apt-get update && apt-get install --no-install-recommends -y \ + bc \ + bison \ + bsdmainutils \ + clang-7 \ + flex \ + libelf-dev \ + libssl-dev \ + make \ + && rm -rf /var/lib/apt/lists/* diff --git a/scripts/build-docker.sh b/scripts/build-docker.sh index a7b5920..b772831 100755 --- a/scripts/build-docker.sh +++ b/scripts/build-docker.sh @@ -8,10 +8,9 @@ SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -echo 'Building the Docker image "kernel-gcc"' -cd "$SCRIPT_DIR/../docker/kernel-gcc" -docker build -t kernel-gcc . - -echo 'Building the Docker image "kernel-clang"' -cd "$SCRIPT_DIR/../docker/kernel-clang" -docker build -t kernel-clang . +for DOCKER_IMAGE in $(find $SCRIPT_DIR/../docker -mindepth 1 -maxdepth 1 -type d -printf "%f\n") +do + echo Building the Docker image "$DOCKER_IMAGE" + cd "$SCRIPT_DIR/../docker/$DOCKER_IMAGE" + docker build -t $DOCKER_IMAGE . +done diff --git a/scripts/compile-kernel.sh b/scripts/compile-kernel.sh index 7c45dcb..d96d353 100755 --- a/scripts/compile-kernel.sh +++ b/scripts/compile-kernel.sh @@ -14,7 +14,7 @@ usage() { echo echo " = torvalds | stable | next" echo " = allnoconfig | allmodconfig | allyesconfig | defconfig | randconfig" - echo " = gcc | clang" + echo " = gcc | clang-5.0 | clang-6.0 | clang-7" } # Provide help if requested @@ -83,12 +83,12 @@ esac # Check third argument and set COMPILER case "$3" in - gcc | clang) + gcc | clang-5.0 | clang-6.0 | clang-7) COMPILER=$3 ;; *) echo "Error: Invalid compiler: $3" - echo 'The compiler must be either "gcc" or "clang"' + echo 'The compiler must be "gcc", "clang-5.0", "clang-6.0" or "clang-7"' exit 1 ;; esac @@ -102,13 +102,13 @@ case "$COMPILER" in kernel-gcc \ /bin/sh -c "cd linux && make clean && make $KERNEL_CONFIG && make -j32" ;; - clang) + clang-5.0 | clang-6.0 | clang-7) docker run \ -v "$KERNEL_SRC_DIR:/linux/" \ - kernel-clang \ + kernel-$COMPILER \ /bin/sh -c "cd linux && \ - make CC=clang-5.0 clean && \ - make HOSTCC=clang-5.0 $KERNEL_CONFIG && \ - make -j32 HOSTCC=clang-5.0 CC=clang-5.0" + make CC=$COMPILER clean && \ + make HOSTCC=$COMPILER $KERNEL_CONFIG && \ + make -j32 HOSTCC=$COMPILER CC=$COMPILER" ;; esac