summaryrefslogtreecommitdiff
path: root/toolchain.inc
diff options
context:
space:
mode:
authorPatrick Georgi <pgeorgi@google.com>2015-03-26 21:39:12 +0100
committerStefan Reinauer <stefan.reinauer@coreboot.org>2015-03-26 23:43:42 +0100
commit1053f6571c3487375b80a591fc3dd6c4355162eb (patch)
treeb63e9082ddfc03000fcb51e59aac9175190fb412 /toolchain.inc
parenta7a3917d4839dbb4e2bbc9d452a75fd974e1ac35 (diff)
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>
Diffstat (limited to 'toolchain.inc')
-rw-r--r--toolchain.inc17
1 files changed, 17 insertions, 0 deletions
diff --git a/toolchain.inc b/toolchain.inc
index d69fe26e76..86dd89d57a 100644
--- a/toolchain.inc
+++ b/toolchain.inc
@@ -136,3 +136,20 @@ init_stages = \
$(eval $(call toolchain_to_dir))
$(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