diff --git a/Makefile.include b/Makefile.include index d3b2eb8d7c..065326ff07 100644 --- a/Makefile.include +++ b/Makefile.include @@ -110,7 +110,7 @@ include $(RIOTMAKE)/info-nproc.inc.mk # List of boards variables include $(RIOTMAKE)/boards.inc.mk -GLOBAL_GOALS += buildtest info-boards-supported info-boards-features-missing info-buildsizes info-buildsizes-diff +GLOBAL_GOALS += buildtest buildtest-indocker info-boards-supported info-boards-features-missing info-buildsizes info-buildsizes-diff ifneq (, $(filter $(GLOBAL_GOALS), $(MAKECMDGOALS))) BOARD=none endif diff --git a/makefiles/buildtests.inc.mk b/makefiles/buildtests.inc.mk index f980630289..0f9a65b052 100644 --- a/makefiles/buildtests.inc.mk +++ b/makefiles/buildtests.inc.mk @@ -1,10 +1,7 @@ -.PHONY: buildtest +.PHONY: buildtest buildtest-indocker BUILDTEST_MAKE_REDIRECT ?= >/dev/null 2>&1 -ifeq ($(BUILD_IN_DOCKER),1) -buildtest: ..in-docker-container -else buildtest: @ \ RESULT=true ; \ @@ -24,4 +21,17 @@ buildtest: fi; \ done ; \ $${RESULT} + +# Define 'buildtest-indocker' completely executed inside the container. +# It prevents starting one container per compilation wich is slower but it +# could hide errors where the host toolchain would be used +ifeq ($(BUILD_IN_DOCKER),1) + buildtest-indocker: ..in-docker-container +else +ifeq ($(INSIDE_DOCKER),1) + buildtest-indocker: buildtest +else + buildtest-indocker: + $(error $@ must be run with `BUILD_IN_DOCKER=1`) +endif # INSIDE_DOCKER endif # BUILD_IN_DOCKER diff --git a/makefiles/docker.inc.mk b/makefiles/docker.inc.mk index d7249b5f53..c620437aaf 100644 --- a/makefiles/docker.inc.mk +++ b/makefiles/docker.inc.mk @@ -5,7 +5,7 @@ export DOCKER_FLAGS ?= --rm # List of Docker-enabled make goals export DOCKER_MAKECMDGOALS_POSSIBLE = \ all \ - buildtest \ + buildtest-indocker \ scan-build \ scan-build-analyze \ tests-% \