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..77213c51c7 100644 --- a/makefiles/buildtests.inc.mk +++ b/makefiles/buildtests.inc.mk @@ -1,4 +1,4 @@ -.PHONY: buildtest +.PHONY: buildtest buildtest-indocker BUILDTEST_MAKE_REDIRECT ?= >/dev/null 2>&1 @@ -25,3 +25,17 @@ buildtest: done ; \ $${RESULT} endif # BUILD_IN_DOCKER + +# 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..d2a8ee5d77 100644 --- a/makefiles/docker.inc.mk +++ b/makefiles/docker.inc.mk @@ -6,6 +6,7 @@ export DOCKER_FLAGS ?= --rm export DOCKER_MAKECMDGOALS_POSSIBLE = \ all \ buildtest \ + buildtest-indocker \ scan-build \ scan-build-analyze \ tests-% \