1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/makefiles/buildtests.inc.mk
Gaëtan Harter 7d10da832a
makefiles/buildtest: always execute 'buildtest' loop on host machine
This remove executing buildtest `for` loop in docker.

When building completely in docker, 'buildtest' would hide issues when
the host toolchain would be used when doing `make all` directly.
It has the consequence that it now starts a container for each
compilation which is slower.

The previous behavior can be reproduced by using

    BUILD_IN_DOCKER=1 make buildtest-indocker

A side effect is also that now `BUILDTEST_MAKE_REDIRECT` would work when
doing `buildtest` with docker.
2019-08-14 17:02:34 +02:00

38 lines
1.2 KiB
Makefile

.PHONY: buildtest buildtest-indocker
BUILDTEST_MAKE_REDIRECT ?= >/dev/null 2>&1
buildtest:
@ \
RESULT=true ; \
for board in $(BOARDS); do \
if BOARD=$${board} $(MAKE) check-toolchain-supported > /dev/null 2>&1; then \
$(COLOR_ECHO) -n "Building for $$board ... " ; \
BOARD=$${board} RIOT_CI_BUILD=1 RIOT_VERSION_OVERRIDE=buildtest \
$(MAKE) clean all -j $(NPROC) $(BUILDTEST_MAKE_REDIRECT); \
RES=$$? ; \
if [ $$RES -eq 0 ]; then \
$(COLOR_ECHO) "$(COLOR_GREEN)success.$(COLOR_RESET)" ; \
else \
$(COLOR_ECHO) "$(COLOR_RED)failed!$(COLOR_RESET)" ; \
RESULT=false ; \
fi ; \
BOARD=$${board} $(MAKE) clean-intermediates >/dev/null 2>&1 || true; \
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