From 1ccc94ffc593bdfd00701d0e9e998d27bae64114 Mon Sep 17 00:00:00 2001 From: Kir Kolyshkin Date: Tue, 25 Oct 2016 21:46:40 -0700 Subject: [PATCH] scripts/build: add clang targets With this, one can do a CRUI build via QEMU+Docker using clang as a compiler, for example: make -C scripts/build alpine-clang make -C scripts/build ppc64le-clang For alpine, default clang version is used. For others, a version has to be specified explicitly, as there is no package called "clang" in Ubuntu Trusty (which is used as a base for most arches). Since clang-3.8 appears to be available from Trusty, and this is the current stable version of clang, let's use it. travis-ci: success for QEMU+Dockerfile improvements + clang build Signed-off-by: Kir Kolyshkin Acked-by: Andrei Vagin Signed-off-by: Pavel Emelyanov --- scripts/build/Dockerfile.alpine | 6 ++++-- scripts/build/Dockerfile.tmpl | 7 +++++-- scripts/build/Makefile | 13 +++++++++++-- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/scripts/build/Dockerfile.alpine b/scripts/build/Dockerfile.alpine index ad356bc7b..c8f79dc87 100644 --- a/scripts/build/Dockerfile.alpine +++ b/scripts/build/Dockerfile.alpine @@ -1,4 +1,5 @@ FROM alpine:3.4 +ARG CC=gcc RUN apk update && apk add \ build-base \ coreutils \ @@ -9,7 +10,8 @@ RUN apk update && apk add \ libaio-dev \ libcap-dev \ libnl3-dev \ - pkgconfig + pkgconfig \ + $CC COPY . /criu WORKDIR /criu -RUN make mrproper && make -j $(nproc) +RUN make mrproper && make -j $(nproc) CC=$CC diff --git a/scripts/build/Dockerfile.tmpl b/scripts/build/Dockerfile.tmpl index 837c0b79f..dc3b158e5 100644 --- a/scripts/build/Dockerfile.tmpl +++ b/scripts/build/Dockerfile.tmpl @@ -1,3 +1,5 @@ +ARG CC=gcc + RUN apt-get clean RUN apt-get update @@ -16,11 +18,12 @@ RUN apt-get install -y \ libnl-3-dev \ libselinux-dev \ pkg-config \ - git-core + git-core \ + $CC COPY . /criu WORKDIR /criu -RUN make mrproper && make -j $(nproc) +RUN make mrproper && make -j $(nproc) CC=$CC RUN make mrproper RUN bash -c 'CLEAN="$(git clean -ndx --exclude=scripts/build)"; echo "${CLEAN}"; test -z "${CLEAN}"; exit $?' diff --git a/scripts/build/Makefile b/scripts/build/Makefile index 1a3604d6e..996f655a4 100644 --- a/scripts/build/Makefile +++ b/scripts/build/Makefile @@ -12,10 +12,19 @@ binfmt_misc: .PHONY: binfmt_misc alpine: - docker build -t criu-$@ -f Dockerfile.alpine ../.. + docker build -t criu-$@ -f Dockerfile.alpine $(DB_ARGS) ../.. %: Dockerfile.% qemu-user-static binfmt_misc - docker build -t criu-$@ -f $< ../.. + docker build -t criu-$@ -f $< $(DB_ARGS) ../.. + +%-clang: DB_ARGS=--build-arg CC=clang-3.8 +alpine-clang: DB_ARGS=--build-arg CC=clang +alpine-clang: alpine +armv7hf-clang: armv7hf +aarch64-clang: aarch64 +ppc64le-clang: ppc64le +x86_64-clang: x86_64 +.PHONY: alpine-clang armv7hf-clang aarch64-clang ppc64le-clang x86_64-clang clean: rm -rf qemu-user-static