dockcross/Makefile

263 lines
10 KiB
Makefile
Raw Normal View History

#
# Parameters
#
# Name of the docker executable
DOCKER = docker
# Docker organization to pull the images from
ORG = dockcross
# Directory where to generate the dockcross script for each images (e.g bin/dockcross-manylinux2014-x64)
BIN = ./bin
# These images are built using the "build implicit rule"
STANDARD_IMAGES = android-arm android-arm64 android-x86 android-x86_64 \
linux-x86 linux-x64 linux-x64-clang linux-arm64 linux-arm64-musl linux-arm64-full \
linux-armv5 linux-armv5-musl linux-armv5-uclibc linux-m68k-uclibc linux-s390x linux-x64-tinycc \
linux-armv6 linux-armv6-lts linux-armv6-musl linux-arm64-lts linux-mipsel-lts \
linux-armv7l-musl linux-armv7 linux-armv7a linux-armv7-lts linux-armv7a-lts linux-x86_64-full \
linux-mips linux-mips-lts linux-ppc64le linux-riscv64 linux-riscv32 linux-xtensa-uclibc \
2021-10-08 23:07:09 +02:00
web-wasi \
windows-static-x86 windows-static-x64 windows-static-x64-posix windows-armv7 \
2022-03-31 09:58:31 +02:00
windows-shared-x86 windows-shared-x64 windows-shared-x64-posix windows-arm64 \
bare-armv7emhf-nano_newlib
# Generated Dockerfiles.
GEN_IMAGES = android-arm android-arm64 \
linux-x86 linux-x64 linux-x64-clang linux-arm64 linux-arm64-musl linux-arm64-full \
manylinux2014-x64 manylinux2014-x86 \
manylinux2014-aarch64 linux-arm64-lts \
web-wasm web-wasi linux-mips linux-mips-lts windows-arm64 windows-armv7 \
windows-static-x86 windows-static-x64 windows-static-x64-posix \
windows-shared-x86 windows-shared-x64 windows-shared-x64-posix \
linux-armv7 linux-armv7a linux-armv7l-musl linux-armv7-lts linux-armv7a-lts linux-x86_64-full \
linux-armv6 linux-armv6-lts linux-armv6-musl linux-mipsel-lts \
linux-armv5 linux-armv5-musl linux-armv5-uclibc linux-ppc64le linux-s390x \
2022-03-31 09:58:31 +02:00
linux-riscv64 linux-riscv32 linux-m68k-uclibc linux-x64-tinycc linux-xtensa-uclibc \
bare-armv7emhf-nano_newlib
GEN_IMAGE_DOCKERFILES = $(addsuffix /Dockerfile,$(GEN_IMAGES))
# These images are expected to have explicit rules for *both* build and testing
2021-08-20 14:44:22 +02:00
NON_STANDARD_IMAGES = manylinux2014-x64 manylinux2014-x86 \
manylinux2014-aarch64 web-wasm
# Docker composite files
DOCKER_COMPOSITE_SOURCES = common.docker common.debian common.manylinux common.buildroot \
common.crosstool common.webassembly common.windows common-manylinux.crosstool common.dockcross \
common.label-and-env
DOCKER_COMPOSITE_FOLDER_PATH = common/
DOCKER_COMPOSITE_PATH = $(addprefix $(DOCKER_COMPOSITE_FOLDER_PATH),$(DOCKER_COMPOSITE_SOURCES))
# This list all available images
Makefile: All images are tested. Remove ALL_IMAGES and DEFAULT_IMAGES vars. To confirm that the Makefiles works as expected after this patch, the list of executed commands before and after has been compared. Before: ``` make --dry-run > ../dockcross-make-baseline make test --dry-run > ../dockcross-make-test-baseline ``` After: ``` make --dry-run > ../dockcross-make-current; make test --dry-run > ../dockcross-make-test-current for target in make make-test; do diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current> /dev/null 2>&1 [[ $? == 1 ]] && \ echo "" && \ echo "-------------------------------" && \ echo "Here is output of:" && \ echo " diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current" && \ echo "" && \ diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current done ``` Output: ``` ------------------------------- Here is output of: diff --ignore-trailing-space ../dockcross-make-baseline ../dockcross-make-current 8a9 > docker build -t dockcross/linux-ppc64le linux-ppc64le 10a12,14 > cp -r test browser-asmjs/ > docker build -t dockcross/browser-asmjs browser-asmjs > rm -rf browser-asmjs/test ------------------------------- Here is output of: diff --ignore-trailing-space ../dockcross-make-test-baseline ../dockcross-make-test-current 24a25,27 > docker build -t dockcross/linux-ppc64le linux-ppc64le > docker run --rm dockcross/linux-ppc64le > bin/dockcross-linux-ppc64le && chmod +x bin/dockcross-linux-ppc64le > bin/dockcross-linux-ppc64le python test/run.py --languages C 30a34,38 > cp -r test browser-asmjs/ > docker build -t dockcross/browser-asmjs browser-asmjs > rm -rf browser-asmjs/test > docker run --rm dockcross/browser-asmjs > bin/dockcross-browser-asmjs && chmod +x bin/dockcross-browser-asmjs > bin/dockcross-browser-asmjs python test/run.py --exe-suffix ".js" ```
2016-09-26 05:28:23 +02:00
IMAGES = $(STANDARD_IMAGES) $(NON_STANDARD_IMAGES)
# Optional arguments for test runner (test/run.py) associated with "testing implicit rule"
linux-x64-tinycc.test_ARGS = --languages C
2019-02-28 10:41:52 +01:00
windows-static-x86.test_ARGS = --exe-suffix ".exe"
windows-static-x64.test_ARGS = --exe-suffix ".exe"
windows-static-x64-posix.test_ARGS = --exe-suffix ".exe"
windows-shared-x86.test_ARGS = --exe-suffix ".exe"
windows-shared-x64.test_ARGS = --exe-suffix ".exe"
windows-shared-x64-posix.test_ARGS = --exe-suffix ".exe"
2022-03-31 09:58:31 +02:00
bare-armv7emhf-nano_newlib.test_ARGS = --linker-flags="--specs=nosys.specs"
# On CircleCI, do not attempt to delete container
# See https://circleci.com/docs/docker-btrfs-error/
RM = --rm
ifeq ("$(CIRCLECI)", "true")
RM =
endif
# Tag images with date and Git short hash in addition to revision
TAG := $(shell date '+%Y%m%d')-$(shell git rev-parse --short HEAD)
# shellcheck executable
SHELLCHECK := shellcheck
# Defines the level of verification (error, warning, info...)
SHELLCHECK_SEVERITY_LEVEL := error
#
Makefile: All images are tested. Remove ALL_IMAGES and DEFAULT_IMAGES vars. To confirm that the Makefiles works as expected after this patch, the list of executed commands before and after has been compared. Before: ``` make --dry-run > ../dockcross-make-baseline make test --dry-run > ../dockcross-make-test-baseline ``` After: ``` make --dry-run > ../dockcross-make-current; make test --dry-run > ../dockcross-make-test-current for target in make make-test; do diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current> /dev/null 2>&1 [[ $? == 1 ]] && \ echo "" && \ echo "-------------------------------" && \ echo "Here is output of:" && \ echo " diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current" && \ echo "" && \ diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current done ``` Output: ``` ------------------------------- Here is output of: diff --ignore-trailing-space ../dockcross-make-baseline ../dockcross-make-current 8a9 > docker build -t dockcross/linux-ppc64le linux-ppc64le 10a12,14 > cp -r test browser-asmjs/ > docker build -t dockcross/browser-asmjs browser-asmjs > rm -rf browser-asmjs/test ------------------------------- Here is output of: diff --ignore-trailing-space ../dockcross-make-test-baseline ../dockcross-make-test-current 24a25,27 > docker build -t dockcross/linux-ppc64le linux-ppc64le > docker run --rm dockcross/linux-ppc64le > bin/dockcross-linux-ppc64le && chmod +x bin/dockcross-linux-ppc64le > bin/dockcross-linux-ppc64le python test/run.py --languages C 30a34,38 > cp -r test browser-asmjs/ > docker build -t dockcross/browser-asmjs browser-asmjs > rm -rf browser-asmjs/test > docker run --rm dockcross/browser-asmjs > bin/dockcross-browser-asmjs && chmod +x bin/dockcross-browser-asmjs > bin/dockcross-browser-asmjs python test/run.py --exe-suffix ".js" ```
2016-09-26 05:28:23 +02:00
# images: This target builds all IMAGES (because it is the first one, it is built by default)
#
Makefile: All images are tested. Remove ALL_IMAGES and DEFAULT_IMAGES vars. To confirm that the Makefiles works as expected after this patch, the list of executed commands before and after has been compared. Before: ``` make --dry-run > ../dockcross-make-baseline make test --dry-run > ../dockcross-make-test-baseline ``` After: ``` make --dry-run > ../dockcross-make-current; make test --dry-run > ../dockcross-make-test-current for target in make make-test; do diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current> /dev/null 2>&1 [[ $? == 1 ]] && \ echo "" && \ echo "-------------------------------" && \ echo "Here is output of:" && \ echo " diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current" && \ echo "" && \ diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current done ``` Output: ``` ------------------------------- Here is output of: diff --ignore-trailing-space ../dockcross-make-baseline ../dockcross-make-current 8a9 > docker build -t dockcross/linux-ppc64le linux-ppc64le 10a12,14 > cp -r test browser-asmjs/ > docker build -t dockcross/browser-asmjs browser-asmjs > rm -rf browser-asmjs/test ------------------------------- Here is output of: diff --ignore-trailing-space ../dockcross-make-test-baseline ../dockcross-make-test-current 24a25,27 > docker build -t dockcross/linux-ppc64le linux-ppc64le > docker run --rm dockcross/linux-ppc64le > bin/dockcross-linux-ppc64le && chmod +x bin/dockcross-linux-ppc64le > bin/dockcross-linux-ppc64le python test/run.py --languages C 30a34,38 > cp -r test browser-asmjs/ > docker build -t dockcross/browser-asmjs browser-asmjs > rm -rf browser-asmjs/test > docker run --rm dockcross/browser-asmjs > bin/dockcross-browser-asmjs && chmod +x bin/dockcross-browser-asmjs > bin/dockcross-browser-asmjs python test/run.py --exe-suffix ".js" ```
2016-09-26 05:28:23 +02:00
images: base $(IMAGES)
#
# test: This target ensures all IMAGES are built and run the associated tests
#
Makefile: All images are tested. Remove ALL_IMAGES and DEFAULT_IMAGES vars. To confirm that the Makefiles works as expected after this patch, the list of executed commands before and after has been compared. Before: ``` make --dry-run > ../dockcross-make-baseline make test --dry-run > ../dockcross-make-test-baseline ``` After: ``` make --dry-run > ../dockcross-make-current; make test --dry-run > ../dockcross-make-test-current for target in make make-test; do diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current> /dev/null 2>&1 [[ $? == 1 ]] && \ echo "" && \ echo "-------------------------------" && \ echo "Here is output of:" && \ echo " diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current" && \ echo "" && \ diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current done ``` Output: ``` ------------------------------- Here is output of: diff --ignore-trailing-space ../dockcross-make-baseline ../dockcross-make-current 8a9 > docker build -t dockcross/linux-ppc64le linux-ppc64le 10a12,14 > cp -r test browser-asmjs/ > docker build -t dockcross/browser-asmjs browser-asmjs > rm -rf browser-asmjs/test ------------------------------- Here is output of: diff --ignore-trailing-space ../dockcross-make-test-baseline ../dockcross-make-test-current 24a25,27 > docker build -t dockcross/linux-ppc64le linux-ppc64le > docker run --rm dockcross/linux-ppc64le > bin/dockcross-linux-ppc64le && chmod +x bin/dockcross-linux-ppc64le > bin/dockcross-linux-ppc64le python test/run.py --languages C 30a34,38 > cp -r test browser-asmjs/ > docker build -t dockcross/browser-asmjs browser-asmjs > rm -rf browser-asmjs/test > docker run --rm dockcross/browser-asmjs > bin/dockcross-browser-asmjs && chmod +x bin/dockcross-browser-asmjs > bin/dockcross-browser-asmjs python test/run.py --exe-suffix ".js" ```
2016-09-26 05:28:23 +02:00
test: base.test $(addsuffix .test,$(IMAGES))
#
# Generic Targets (can specialize later).
#
$(GEN_IMAGE_DOCKERFILES) Dockerfile: %Dockerfile: %Dockerfile.in $(DOCKER_COMPOSITE_PATH)
sed \
-e '/common.docker/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.docker' \
-e '/common.debian/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.debian' \
-e '/common.manylinux/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.manylinux' \
-e '/common.crosstool/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.crosstool' \
-e '/common.buildroot/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.buildroot' \
-e '/common-manylinux.crosstool/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common-manylinux.crosstool' \
-e '/common.webassembly/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.webassembly' \
-e '/common.windows/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.windows' \
-e '/common.dockcross/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.dockcross' \
-e '/common.label-and-env/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.label-and-env' \
$< > $@
#
# web-wasm
#
web-wasm: web-wasm/Dockerfile
mkdir -p $@/imagefiles && cp -r imagefiles $@/
cp -r test web-wasm/
$(DOCKER) build -t $(ORG)/web-wasm:latest \
-t $(ORG)/web-wasm:$(TAG) \
--build-arg IMAGE=$(ORG)/web-wasm \
--build-arg VCS_REF=`git rev-parse --short HEAD` \
--build-arg VCS_URL=`git config --get remote.origin.url` \
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
web-wasm
rm -rf web-wasm/test
rm -rf $@/imagefiles
2015-05-19 23:34:05 +02:00
web-wasm.test: web-wasm
cp -r test web-wasm/
$(DOCKER) run $(RM) $(ORG)/web-wasm > $(BIN)/dockcross-web-wasm && chmod +x $(BIN)/dockcross-web-wasm
$(BIN)/dockcross-web-wasm python test/run.py --exe-suffix ".js"
rm -rf web-wasm/test
2021-08-20 14:44:22 +02:00
#
# manylinux2014-aarch64
#
manylinux2014-aarch64: manylinux2014-aarch64/Dockerfile
@# Register qemu
docker run --rm --privileged hypriot/qemu-register
@# Get libstdc++ from quay.io/pypa/manylinux2014_aarch64 container
docker run -v `pwd`:/host --rm -e LIB_PATH=/host/$@/xc_script/ quay.io/pypa/manylinux2014_aarch64 bash -c "PASS=1 /host/$@/xc_script/docker_setup_scrpits/copy_libstd.sh"
mkdir -p $@/imagefiles && cp -r imagefiles $@/
$(DOCKER) build -t $(ORG)/manylinux2014-aarch64:latest \
-t $(ORG)/manylinux2014-aarch64:$(TAG) \
--build-arg IMAGE=$(ORG)/manylinux2014-aarch64 \
--build-arg VCS_REF=`git rev-parse --short HEAD` \
--build-arg VCS_URL=`git config --get remote.origin.url` \
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
-f manylinux2014-aarch64/Dockerfile .
rm -rf $@/imagefiles
@# libstdc++ is coppied into image, now remove it
docker run -v `pwd`:/host --rm quay.io/pypa/manylinux2014_aarch64 bash -c "rm -rf /host/$@/xc_script/usr"
manylinux2014-aarch64.test: manylinux2014-aarch64
$(DOCKER) run $(RM) $(ORG)/manylinux2014-aarch64 > $(BIN)/dockcross-manylinux2014-aarch64 \
&& chmod +x $(BIN)/dockcross-manylinux2014-aarch64
$(BIN)/dockcross-manylinux2014-aarch64 /opt/python/cp38-cp38/bin/python test/run.py
2019-12-17 15:00:47 +01:00
#
# manylinux2014-x64
#
manylinux2014-x64: manylinux2014-x64/Dockerfile
mkdir -p $@/imagefiles && cp -r imagefiles $@/
$(DOCKER) build -t $(ORG)/manylinux2014-x64:latest \
-t $(ORG)/manylinux2014-x64:$(TAG) \
2019-12-17 15:00:47 +01:00
--build-arg IMAGE=$(ORG)/manylinux2014-x64 \
--build-arg VCS_REF=`git rev-parse --short HEAD` \
--build-arg VCS_URL=`git config --get remote.origin.url` \
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
-f manylinux2014-x64/Dockerfile .
rm -rf $@/imagefiles
manylinux2014-x64.test: manylinux2014-x64
$(DOCKER) run $(RM) $(ORG)/manylinux2014-x64 > $(BIN)/dockcross-manylinux2014-x64 \
&& chmod +x $(BIN)/dockcross-manylinux2014-x64
$(BIN)/dockcross-manylinux2014-x64 /opt/python/cp38-cp38/bin/python test/run.py
2019-12-17 15:00:47 +01:00
2020-07-05 01:44:27 +02:00
#
# manylinux2014-x86
#
manylinux2014-x86: manylinux2014-x86/Dockerfile
mkdir -p $@/imagefiles && cp -r imagefiles $@/
$(DOCKER) build -t $(ORG)/manylinux2014-x86:latest \
-t $(ORG)/manylinux2014-x86:$(TAG) \
2020-07-05 01:44:27 +02:00
--build-arg IMAGE=$(ORG)/manylinux2014-x86 \
--build-arg VCS_REF=`git rev-parse --short HEAD` \
--build-arg VCS_URL=`git config --get remote.origin.url` \
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
-f manylinux2014-x86/Dockerfile .
rm -rf $@/imagefiles
manylinux2014-x86.test: manylinux2014-x86
$(DOCKER) run $(RM) $(ORG)/manylinux2014-x86 > $(BIN)/dockcross-manylinux2014-x86 \
&& chmod +x $(BIN)/dockcross-manylinux2014-x86
$(BIN)/dockcross-manylinux2014-x86 /opt/python/cp38-cp38/bin/python test/run.py
2020-07-05 01:44:27 +02:00
base: Dockerfile imagefiles/
2017-08-27 05:48:47 +02:00
$(DOCKER) build -t $(ORG)/base:latest \
-t $(ORG)/base:$(TAG) \
--build-arg IMAGE=$(ORG)/base \
2021-03-12 00:07:07 +01:00
--build-arg VCS_URL=`git config --get remote.origin.url` \
.
base.test: base
$(DOCKER) run $(RM) $(ORG)/base > $(BIN)/dockcross-base && chmod +x $(BIN)/dockcross-base
# display
#
Makefile: All images are tested. Remove ALL_IMAGES and DEFAULT_IMAGES vars. To confirm that the Makefiles works as expected after this patch, the list of executed commands before and after has been compared. Before: ``` make --dry-run > ../dockcross-make-baseline make test --dry-run > ../dockcross-make-test-baseline ``` After: ``` make --dry-run > ../dockcross-make-current; make test --dry-run > ../dockcross-make-test-current for target in make make-test; do diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current> /dev/null 2>&1 [[ $? == 1 ]] && \ echo "" && \ echo "-------------------------------" && \ echo "Here is output of:" && \ echo " diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current" && \ echo "" && \ diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current done ``` Output: ``` ------------------------------- Here is output of: diff --ignore-trailing-space ../dockcross-make-baseline ../dockcross-make-current 8a9 > docker build -t dockcross/linux-ppc64le linux-ppc64le 10a12,14 > cp -r test browser-asmjs/ > docker build -t dockcross/browser-asmjs browser-asmjs > rm -rf browser-asmjs/test ------------------------------- Here is output of: diff --ignore-trailing-space ../dockcross-make-test-baseline ../dockcross-make-test-current 24a25,27 > docker build -t dockcross/linux-ppc64le linux-ppc64le > docker run --rm dockcross/linux-ppc64le > bin/dockcross-linux-ppc64le && chmod +x bin/dockcross-linux-ppc64le > bin/dockcross-linux-ppc64le python test/run.py --languages C 30a34,38 > cp -r test browser-asmjs/ > docker build -t dockcross/browser-asmjs browser-asmjs > rm -rf browser-asmjs/test > docker run --rm dockcross/browser-asmjs > bin/dockcross-browser-asmjs && chmod +x bin/dockcross-browser-asmjs > bin/dockcross-browser-asmjs python test/run.py --exe-suffix ".js" ```
2016-09-26 05:28:23 +02:00
display_images:
for image in $(IMAGES); do echo $$image; done
Makefile: All images are tested. Remove ALL_IMAGES and DEFAULT_IMAGES vars. To confirm that the Makefiles works as expected after this patch, the list of executed commands before and after has been compared. Before: ``` make --dry-run > ../dockcross-make-baseline make test --dry-run > ../dockcross-make-test-baseline ``` After: ``` make --dry-run > ../dockcross-make-current; make test --dry-run > ../dockcross-make-test-current for target in make make-test; do diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current> /dev/null 2>&1 [[ $? == 1 ]] && \ echo "" && \ echo "-------------------------------" && \ echo "Here is output of:" && \ echo " diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current" && \ echo "" && \ diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current done ``` Output: ``` ------------------------------- Here is output of: diff --ignore-trailing-space ../dockcross-make-baseline ../dockcross-make-current 8a9 > docker build -t dockcross/linux-ppc64le linux-ppc64le 10a12,14 > cp -r test browser-asmjs/ > docker build -t dockcross/browser-asmjs browser-asmjs > rm -rf browser-asmjs/test ------------------------------- Here is output of: diff --ignore-trailing-space ../dockcross-make-test-baseline ../dockcross-make-test-current 24a25,27 > docker build -t dockcross/linux-ppc64le linux-ppc64le > docker run --rm dockcross/linux-ppc64le > bin/dockcross-linux-ppc64le && chmod +x bin/dockcross-linux-ppc64le > bin/dockcross-linux-ppc64le python test/run.py --languages C 30a34,38 > cp -r test browser-asmjs/ > docker build -t dockcross/browser-asmjs browser-asmjs > rm -rf browser-asmjs/test > docker run --rm dockcross/browser-asmjs > bin/dockcross-browser-asmjs && chmod +x bin/dockcross-browser-asmjs > bin/dockcross-browser-asmjs python test/run.py --exe-suffix ".js" ```
2016-09-26 05:28:23 +02:00
$(VERBOSE).SILENT: display_images
#
# build implicit rule
#
$(STANDARD_IMAGES): %: %/Dockerfile base
mkdir -p $@/imagefiles && cp -r imagefiles $@/
2017-08-27 05:48:47 +02:00
$(DOCKER) build -t $(ORG)/$@:latest \
-t $(ORG)/$@:$(TAG) \
--build-arg IMAGE=$(ORG)/$@ \
--build-arg VCS_REF=`git rev-parse --short HEAD` \
--build-arg VCS_URL=`git config --get remote.origin.url` \
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
$@
rm -rf $@/imagefiles
clean:
for d in $(IMAGES) ; do rm -rf $$d/imagefiles ; done
for d in $(IMAGES) ; do rm -rf $(BIN)/dockcross-$$d ; done
for d in $(GEN_IMAGE_DOCKERFILES) ; do rm -f $$d ; done
rm -f Dockerfile
purge: clean
# Remove all untagged images
$(DOCKER) container ls -aq | xargs -r $(DOCKER) container rm -f
# Remove all images with organization (ex dockcross/*)
$(DOCKER) images --filter=reference='$(ORG)/*' --format='{{.Repository}}:{{.Tag}}' | xargs -r $(DOCKER) rmi -f
# Check bash syntax
bash-check:
find . -type f \( -name "*.sh" -o -name "*.bash" \) -print0 | xargs -0 -P"$(shell nproc)" -I{} \
$(SHELLCHECK) --check-sourced --color=auto --format=gcc --severity=warning --shell=bash --enable=all "{}"
#
# testing implicit rule
#
.SECONDEXPANSION:
$(addsuffix .test,$(STANDARD_IMAGES)): $$(basename $$@)
$(DOCKER) run $(RM) $(ORG)/$(basename $@) > $(BIN)/dockcross-$(basename $@) \
&& chmod +x $(BIN)/dockcross-$(basename $@)
$(BIN)/dockcross-$(basename $@) python3 test/run.py $($@_ARGS)
#
# testing prerequisites implicit rule
#
test.prerequisites:
mkdir -p $(BIN)
$(addsuffix .test,base $(IMAGES)): test.prerequisites
.PHONY: base images $(IMAGES) test %.test clean purge bash-check display_images