From 4a0c6442c21020b68449f67e2c6a6808433c2cca Mon Sep 17 00:00:00 2001 From: Jean-Christophe Fillion-Robin Date: Sun, 25 Sep 2016 19:04:07 -0400 Subject: [PATCH] Makefile: Introduce NON_STANDARD_IMAGES, ALL_IMAGES and DEFAULT_IMAGES vars This commit also ensures that: * all image targets are declared as PHONY * "test" and not "tests" is declared as PHONY To confirm that the Makefiles works as expected after this patch, the list of executed commands before and after is compared. Before: ``` make --dry-run > ../dockcross-make-baseline make test --dry-run > ../dockcross-make-test-baseline make browser-asmjs.test --dry-run > ../dockcross-make-browser-asmjs-test-baseline make linux-ppc64le.test --dry-run > ../dockcross-make-linux-ppc64le-test-baseline ``` After: ``` make --dry-run > ../dockcross-make-current; make test --dry-run > ../dockcross-make-test-current make browser-asmjs.test --dry-run > ../dockcross-make-browser-asmjs-test-current make linux-ppc64le.test --dry-run > ../dockcross-make-linux-ppc64le-test-current for target in make make-test make-browser-asmjs-test make-linux-ppc64le-test; do diff --ignore-trailing-space ../dockcross-$target-current ../dockcross-$target-baseline > /dev/null 2>&1 [[ $? == 1 ]] && \ echo "" && \ echo "Error: Problem with '${target}' target: Dry-run output before and after this commit do not match." done ``` --- Makefile | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/Makefile b/Makefile index 91d17b4..fd5d0cf 100644 --- a/Makefile +++ b/Makefile @@ -13,24 +13,31 @@ ORG = dockcross BIN = bin # These images are built using the "build implicit rule" -STANDARD_IMAGES = android-arm linux-x86 linux-x64 linux-arm64 linux-armv5 linux-armv6 linux-armv7 windows-x86 windows-x64 +STANDARD_IMAGES = android-arm linux-x86 linux-x64 linux-arm64 linux-armv5 linux-armv6 linux-armv7 linux-ppc64le windows-x86 windows-x64 -# These images are associated with the 'images' target -IMAGES = $(STANDARD_IMAGES) manylinux-x64 manylinux-x86 +# These images are expected to have explicit rules for *both* build and testing +NON_STANDARD_IMAGES = browser-asmjs manylinux-x64 manylinux-x86 + +# This list all available images +ALL_IMAGES = $(STANDARD_IMAGES) $(NON_STANDARD_IMAGES) + +# Set DEFAULT_IMAGES by excluding experimental images from ALL_IMAGES +DEFAULT_IMAGES = $(filter-out browser-asmjs linux-ppc64le, $(ALL_IMAGES)) # Optional arguments for test runner (test/run.py) associated with "testing implicit rule" +linux-ppc64le.test_ARGS = --languages C windows-x86.test_ARGS = --exe-suffix ".exe" windows-x64.test_ARGS = --exe-suffix ".exe" # -# images: This target builds all IMAGES (because it is the first one, it is built by default) +# images: This target builds all DEFAULT_IMAGES (because it is the first one, it is built by default) # -images: base $(IMAGES) +images: base $(DEFAULT_IMAGES) # # test: This target ensures all IMAGES are built and run the associated tests # -test: base.test $(addsuffix .test,$(IMAGES)) +test: base.test $(addsuffix .test,$(DEFAULT_IMAGES)) # # browser-asmjs @@ -44,16 +51,6 @@ browser-asmjs.test: browser-asmjs $(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" -# -# linux-ppc64le -# -linux-ppc64le: base - $(DOCKER) build -t $(ORG)/linux-ppc64le linux-ppc64le - -linux-ppc64le.test: 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 - # # manylinux-x64 # @@ -107,4 +104,4 @@ $(addsuffix .test,$(STANDARD_IMAGES)): $$(basename $$@) $(DOCKER) run --rm dockcross/$(basename $@) > $(BIN)/dockcross-$(basename $@) && chmod +x $(BIN)/dockcross-$(basename $@) $(BIN)/dockcross-$(basename $@) python test/run.py $($@_ARGS) -.PHONY: base images $(IMAGES) tests %.test +.PHONY: base images $(ALL_IMAGES) test %.test