2016-09-26 00:38:26 +02:00
|
|
|
|
|
|
|
#
|
|
|
|
# Parameters
|
|
|
|
#
|
|
|
|
|
|
|
|
# Name of the docker executable
|
2014-10-17 13:42:56 +02:00
|
|
|
DOCKER = docker
|
2016-09-26 00:38:26 +02:00
|
|
|
|
|
|
|
# Docker organization to pull the images from
|
2016-07-16 05:46:08 +02:00
|
|
|
ORG = dockcross
|
2016-09-26 00:38:26 +02:00
|
|
|
|
|
|
|
# Directory where to generate the dockcross script for each images (e.g bin/dockcross-manylinux-x64)
|
2016-11-17 04:02:55 +01:00
|
|
|
BIN = ./bin
|
2016-09-25 23:44:08 +02:00
|
|
|
|
2016-09-26 00:38:26 +02:00
|
|
|
# These images are built using the "build implicit rule"
|
2018-06-10 11:04:54 +02:00
|
|
|
STANDARD_IMAGES = linux-s390x android-arm android-arm64 linux-x86 linux-x64 linux-arm64 linux-armv5 linux-armv6 linux-armv7 linux-mips linux-mipsel linux-ppc64le windows-x86 windows-x64 windows-x64-posix
|
2017-04-26 21:21:27 +02:00
|
|
|
|
|
|
|
# Generated Dockerfiles.
|
2018-07-15 12:43:55 +02:00
|
|
|
GEN_IMAGES = linux-s390x linux-mips manylinux-x86 manylinux-x64 browser-asmjs linux-arm64 windows-x86 windows-x64 windows-x64-posix linux-armv7 linux-armv5
|
2017-04-26 21:21:27 +02:00
|
|
|
GEN_IMAGE_DOCKERFILES = $(addsuffix /Dockerfile,$(GEN_IMAGES))
|
2016-09-25 23:44:08 +02:00
|
|
|
|
2016-09-26 01:04:07 +02:00
|
|
|
# These images are expected to have explicit rules for *both* build and testing
|
|
|
|
NON_STANDARD_IMAGES = browser-asmjs manylinux-x64 manylinux-x86
|
|
|
|
|
2018-06-09 07:20:20 +02:00
|
|
|
DOCKER_COMPOSITE_SOURCES = common.docker common.debian common.manylinux common.crosstool common.windows
|
2017-04-26 21:21:27 +02:00
|
|
|
|
2016-09-26 01:04:07 +02:00
|
|
|
# This list all available images
|
2016-09-26 05:28:23 +02:00
|
|
|
IMAGES = $(STANDARD_IMAGES) $(NON_STANDARD_IMAGES)
|
2014-10-17 13:42:56 +02:00
|
|
|
|
2016-09-26 00:38:26 +02:00
|
|
|
# Optional arguments for test runner (test/run.py) associated with "testing implicit rule"
|
2016-09-26 01:04:07 +02:00
|
|
|
linux-ppc64le.test_ARGS = --languages C
|
2016-09-26 00:20:02 +02:00
|
|
|
windows-x86.test_ARGS = --exe-suffix ".exe"
|
|
|
|
windows-x64.test_ARGS = --exe-suffix ".exe"
|
2018-06-10 11:04:54 +02:00
|
|
|
windows-x64-posix.test_ARGS = --exe-suffix ".exe"
|
2016-09-26 00:03:28 +02:00
|
|
|
|
2016-11-29 02:01:39 +01:00
|
|
|
# On CircleCI, do not attempt to delete container
|
|
|
|
# See https://circleci.com/docs/docker-btrfs-error/
|
2016-11-29 05:39:38 +01:00
|
|
|
RM = --rm
|
2016-11-29 02:01:39 +01:00
|
|
|
ifeq ("$(CIRCLECI)", "true")
|
2016-11-29 05:39:38 +01:00
|
|
|
RM =
|
2016-11-29 02:01:39 +01:00
|
|
|
endif
|
|
|
|
|
2018-12-17 04:42:19 +01:00
|
|
|
# Tag images with date and Git short hash in addition to revision
|
|
|
|
TAG = $(shell date '+%Y%m%d')-$(shell git rev-parse --short HEAD)
|
|
|
|
|
2016-09-26 00:38:26 +02:00
|
|
|
#
|
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)
|
2016-09-26 00:38:26 +02:00
|
|
|
#
|
2016-09-26 05:28:23 +02:00
|
|
|
images: base $(IMAGES)
|
2016-07-16 07:27:13 +02:00
|
|
|
|
2016-09-26 00:38:26 +02:00
|
|
|
#
|
|
|
|
# test: This target ensures all IMAGES are built and run the associated tests
|
|
|
|
#
|
2016-09-26 05:28:23 +02:00
|
|
|
test: base.test $(addsuffix .test,$(IMAGES))
|
2016-07-16 07:17:36 +02:00
|
|
|
|
2017-04-26 21:21:27 +02:00
|
|
|
#
|
|
|
|
# Generic Targets (can specialize later).
|
|
|
|
#
|
|
|
|
|
|
|
|
$(GEN_IMAGE_DOCKERFILES) Dockerfile: %Dockerfile: %Dockerfile.in $(DOCKER_COMPOSITE_SOURCES)
|
|
|
|
sed \
|
|
|
|
-e '/common.docker/ r common.docker' \
|
|
|
|
-e '/common.debian/ r common.debian' \
|
|
|
|
-e '/common.manylinux/ r common.manylinux' \
|
|
|
|
-e '/common.crosstool/ r common.crosstool' \
|
2018-06-09 07:20:20 +02:00
|
|
|
-e '/common.windows/ r common.windows' \
|
2017-04-26 21:21:27 +02:00
|
|
|
$< > $@
|
|
|
|
|
2016-09-26 00:38:26 +02:00
|
|
|
#
|
|
|
|
# browser-asmjs
|
|
|
|
#
|
2017-04-26 21:21:27 +02:00
|
|
|
browser-asmjs: browser-asmjs/Dockerfile
|
2016-11-25 21:51:38 +01:00
|
|
|
mkdir -p $@/imagefiles && cp -r imagefiles $@/
|
2016-07-06 21:33:35 +02:00
|
|
|
cp -r test browser-asmjs/
|
2017-08-27 05:48:47 +02:00
|
|
|
$(DOCKER) build -t $(ORG)/browser-asmjs:latest \
|
2016-10-31 04:57:04 +01:00
|
|
|
--build-arg IMAGE=$(ORG)/browser-asmjs \
|
|
|
|
--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"` \
|
|
|
|
browser-asmjs
|
2018-12-17 04:42:19 +01:00
|
|
|
$(DOCKER) tag $(ORG)/browser-asmjs:latest $(ORG)/browser-asmjs:$(TAG)
|
2016-07-06 21:33:35 +02:00
|
|
|
rm -rf browser-asmjs/test
|
2016-11-25 21:51:38 +01:00
|
|
|
rm -rf $@/imagefiles
|
2015-05-19 23:34:05 +02:00
|
|
|
|
2016-09-25 21:44:22 +02:00
|
|
|
browser-asmjs.test: browser-asmjs
|
2016-11-25 21:51:38 +01:00
|
|
|
cp -r test browser-asmjs/
|
2016-11-29 02:01:39 +01:00
|
|
|
$(DOCKER) run $(RM) dockcross/browser-asmjs > $(BIN)/dockcross-browser-asmjs && chmod +x $(BIN)/dockcross-browser-asmjs
|
2016-07-19 05:27:51 +02:00
|
|
|
$(BIN)/dockcross-browser-asmjs python test/run.py --exe-suffix ".js"
|
2016-11-25 21:51:38 +01:00
|
|
|
rm -rf browser-asmjs/test
|
2016-07-16 08:45:23 +02:00
|
|
|
|
2016-09-26 00:38:26 +02:00
|
|
|
#
|
|
|
|
# manylinux-x64
|
2016-09-20 17:35:18 +02:00
|
|
|
|
|
|
|
manylinux-x64: manylinux-x64/Dockerfile
|
2016-11-25 21:51:38 +01:00
|
|
|
mkdir -p $@/imagefiles && cp -r imagefiles $@/
|
2017-08-27 05:48:47 +02:00
|
|
|
$(DOCKER) build -t $(ORG)/manylinux-x64:latest \
|
2016-10-31 04:57:04 +01:00
|
|
|
--build-arg IMAGE=$(ORG)/manylinux-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 manylinux-x64/Dockerfile .
|
2018-12-17 04:42:19 +01:00
|
|
|
$(DOCKER) tag $(ORG)/manylinux-x64:latest $(ORG)/manylinux-x64:$(TAG)
|
2016-11-25 21:51:38 +01:00
|
|
|
rm -rf $@/imagefiles
|
2016-09-20 06:35:37 +02:00
|
|
|
|
2016-09-25 21:44:22 +02:00
|
|
|
manylinux-x64.test: manylinux-x64
|
2016-11-29 02:01:39 +01:00
|
|
|
$(DOCKER) run $(RM) dockcross/manylinux-x64 > $(BIN)/dockcross-manylinux-x64 && chmod +x $(BIN)/dockcross-manylinux-x64
|
2016-09-20 17:35:18 +02:00
|
|
|
$(BIN)/dockcross-manylinux-x64 /opt/python/cp35-cp35m/bin/python test/run.py
|
2016-09-20 06:35:37 +02:00
|
|
|
|
2016-09-26 00:38:26 +02:00
|
|
|
#
|
|
|
|
# manylinux-x86
|
|
|
|
#
|
2016-09-25 05:14:33 +02:00
|
|
|
|
|
|
|
manylinux-x86: manylinux-x86/Dockerfile
|
2016-11-25 21:51:38 +01:00
|
|
|
mkdir -p $@/imagefiles && cp -r imagefiles $@/
|
2017-08-27 05:48:47 +02:00
|
|
|
$(DOCKER) build -t $(ORG)/manylinux-x86:latest \
|
2016-10-31 04:57:04 +01:00
|
|
|
--build-arg IMAGE=$(ORG)/manylinux-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 manylinux-x86/Dockerfile .
|
2018-12-17 04:42:19 +01:00
|
|
|
$(DOCKER) tag $(ORG)/manylinux-x86:latest $(ORG)/manylinux-x86:$(TAG)
|
2016-11-25 21:51:38 +01:00
|
|
|
rm -rf $@/imagefiles
|
2016-09-25 05:14:33 +02:00
|
|
|
|
2016-09-25 21:44:22 +02:00
|
|
|
manylinux-x86.test: manylinux-x86
|
2016-11-29 02:01:39 +01:00
|
|
|
$(DOCKER) run $(RM) dockcross/manylinux-x86 > $(BIN)/dockcross-manylinux-x86 && chmod +x $(BIN)/dockcross-manylinux-x86
|
2016-09-25 05:14:33 +02:00
|
|
|
$(BIN)/dockcross-manylinux-x86 /opt/python/cp35-cp35m/bin/python test/run.py
|
|
|
|
|
2016-09-26 00:38:26 +02:00
|
|
|
#
|
|
|
|
# base
|
|
|
|
#
|
2016-09-20 06:35:37 +02:00
|
|
|
|
2016-11-17 04:02:55 +01:00
|
|
|
base: Dockerfile imagefiles/
|
2017-08-27 05:48:47 +02:00
|
|
|
$(DOCKER) build -t $(ORG)/base:latest \
|
2016-10-31 04:57:04 +01:00
|
|
|
--build-arg IMAGE=$(ORG)/base \
|
|
|
|
--build-arg VCS_URL=`git config --get remote.origin.url` \
|
|
|
|
.
|
2015-02-01 04:18:38 +01:00
|
|
|
|
2016-09-25 21:44:22 +02:00
|
|
|
base.test: base
|
2016-11-29 02:01:39 +01:00
|
|
|
$(DOCKER) run $(RM) dockcross/base > $(BIN)/dockcross-base && chmod +x $(BIN)/dockcross-base
|
2016-07-16 08:45:23 +02:00
|
|
|
|
2016-09-26 01:46:49 +02:00
|
|
|
#
|
|
|
|
# display
|
|
|
|
#
|
2016-09-26 05:28:23 +02:00
|
|
|
display_images:
|
|
|
|
for image in $(IMAGES); do echo $$image; done
|
2016-09-26 01:46:49 +02:00
|
|
|
|
2016-09-26 05:28:23 +02:00
|
|
|
$(VERBOSE).SILENT: display_images
|
2016-09-26 01:46:49 +02:00
|
|
|
|
2016-09-26 00:38:26 +02:00
|
|
|
#
|
|
|
|
# build implicit rule
|
|
|
|
#
|
2017-04-26 21:21:27 +02:00
|
|
|
|
|
|
|
$(STANDARD_IMAGES): %: %/Dockerfile base
|
2016-11-25 21:51:38 +01:00
|
|
|
mkdir -p $@/imagefiles && cp -r imagefiles $@/
|
2017-08-27 05:48:47 +02:00
|
|
|
$(DOCKER) build -t $(ORG)/$@:latest \
|
2016-10-31 04:57:04 +01:00
|
|
|
--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"` \
|
|
|
|
$@
|
2018-12-17 04:42:19 +01:00
|
|
|
$(DOCKER) tag $(ORG)/$@:latest $(ORG)/$@:$(TAG)
|
2016-11-25 21:51:38 +01:00
|
|
|
rm -rf $@/imagefiles
|
2016-09-26 00:38:26 +02:00
|
|
|
|
|
|
|
#
|
|
|
|
# testing implicit rule
|
|
|
|
#
|
|
|
|
.SECONDEXPANSION:
|
|
|
|
$(addsuffix .test,$(STANDARD_IMAGES)): $$(basename $$@)
|
2016-11-29 02:01:39 +01:00
|
|
|
$(DOCKER) run $(RM) dockcross/$(basename $@) > $(BIN)/dockcross-$(basename $@) && chmod +x $(BIN)/dockcross-$(basename $@)
|
2016-09-26 00:38:26 +02:00
|
|
|
$(BIN)/dockcross-$(basename $@) python test/run.py $($@_ARGS)
|
|
|
|
|
2016-09-26 06:21:16 +02:00
|
|
|
#
|
|
|
|
# testing prerequisites implicit rule
|
|
|
|
#
|
|
|
|
test.prerequisites:
|
|
|
|
mkdir -p $(BIN)
|
|
|
|
|
2016-09-26 17:38:43 +02:00
|
|
|
$(addsuffix .test,base $(IMAGES)): test.prerequisites
|
2016-09-26 06:21:16 +02:00
|
|
|
|
2016-09-26 05:28:23 +02:00
|
|
|
.PHONY: base images $(IMAGES) test %.test
|