build system: Test gccs that are actually used

Test that the compilers used for the target are
built by our buildgcc utility. Users can override
this test with the ANY_TOOLCHAIN Kconfig variable.

Change-Id: I24adf2c9b83667fd34ce8eb103327c9376765f6d
Signed-off-by: Patrick Georgi <pgeorgi@google.com>
Reviewed-on: http://review.coreboot.org/9055
Tested-by: build bot (Jenkins)
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
Patrick Georgi 2015-03-26 21:39:12 +01:00 committed by Stefan Reinauer
parent a7a3917d48
commit 1053f6571c
2 changed files with 17 additions and 15 deletions

View File

@ -25,21 +25,6 @@ export KERNELVERSION := $(strip $(if $(GIT),\
$(shell git describe --dirty --always || git describe),\ $(shell git describe --dirty --always || git describe),\
4.0$(KERNELREVISION))) 4.0$(KERNELREVISION)))
#######################################################################
# Test for coreboot toolchain (except when explicitely not requested)
ifneq ($(NOCOMPILE),1)
# only run if we're doing a build (not for tests, kconfig, ...), using gcc
# rationale: gcc versions by Linux distributions tend to be quite messed up
ifeq ($(CONFIG_COMPILER_GCC),y)
ifneq ($(CONFIG_ANY_TOOLCHAIN),y)
_toolchain=$(shell $(CC_x86_32) -v 2>&1 |grep -q "gcc version .*coreboot toolchain" && echo coreboot)
ifneq ($(_toolchain),coreboot)
$(error Please use the coreboot toolchain (or prove that your toolchain works))
endif
endif
endif
endif
####################################################################### #######################################################################
# Basic component discovery # Basic component discovery
MAINBOARDDIR=$(call strip_quotes,$(CONFIG_MAINBOARD_DIR)) MAINBOARDDIR=$(call strip_quotes,$(CONFIG_MAINBOARD_DIR))

View File

@ -136,3 +136,20 @@ init_stages = \
$(eval $(call toolchain_to_dir)) $(eval $(call toolchain_to_dir))
$(call init_stages) $(call init_stages)
# Test for coreboot toolchain (except when explicitely not requested)
ifneq ($(NOCOMPILE),1)
# only run if we're doing a build (not for tests, kconfig, ...), using gcc
# rationale: gcc versions by Linux distributions tend to be quite messed up
COMPILERFAIL:=0
ifeq ($(CONFIG_COMPILER_GCC),y)
ifneq ($(CONFIG_ANY_TOOLCHAIN),y)
$(foreach arch,$(sort $(foreach stage,$(COREBOOT_STANDARD_STAGES),$(ARCH-$(stage)-y))), \
$(if $(shell $(CC_$(arch)) -v 2>&1 |grep -q "gcc version .*coreboot toolchain" || echo not-coreboot), \
$(eval COMPILERFAIL:=1)$(warning Please use the coreboot toolchain for '$(arch)' (or prove that your toolchain works))))
endif
endif
endif
ifeq ($(COMPILERFAIL),1)
$(error consider building our compilers: make crossgcc)
endif