[coreboot-gerrit] Patch set updated for coreboot: Makefile: Add toolchain version check

Martin Roth (martinroth@google.com) gerrit at coreboot.org
Mon Jan 11 18:31:10 CET 2016


Martin Roth (martinroth at google.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/12846

-gerrit

commit 0d0f7fec77ae8566dd0d0e83ba1b1917c5bbb540
Author: Martin Roth <martinroth at google.com>
Date:   Tue Jan 5 16:07:42 2016 -0700

    Makefile: Add toolchain version check
    
    This is an initial check for the coreboot toolchain versions.  It
    currently checks binutils, gcc, clang, and iasl.  The other components
    are slightly more difficult to test, but should follow on shortly.
    
    If the toolchain is not the correct version, make will halt with
    an error.
    
    Change-Id: I41daf6c4545c01dc21231d78fd081bbcf77c4726
    Signed-off-by: Martin Roth <martinroth at google.com>
---
 Makefile.inc  |  9 +++++++++
 toolchain.inc | 15 +++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/Makefile.inc b/Makefile.inc
index 3b2a75b..d7bb018 100644
--- a/Makefile.inc
+++ b/Makefile.inc
@@ -488,6 +488,7 @@ help_toolchain help::
 	@echo  '  crossgcc-clean  - Remove all built coreboot cross-compilers'
 	@echo  '  iasl            - Build coreboot IASL compiler (built by all cross targets)'
 	@echo  '  clang           - Build coreboot clang compiler'
+	@echo  '  test-toolchain  - Reports if toolchain components are out of date'
 	@echo  '  crossgcc-ARCH   - Build cross-compiler for specific architecture'
 	@echo  '  crosstools-ARCH - Build cross-compiler with GDB for specific architecture'
 	@echo  '  ARCH can be "i386", "x64", "arm", "aarch64", "mips", "riscv", or "power8"'
@@ -561,6 +562,14 @@ crossgcc-clean: clean-for-update
 
 tools: $(objutil)/kconfig/conf $(CBFSTOOL) $(FMAPTOOL) $(RMODTOOL) $(objutil)/nvramtool/nvramtool $(ROMCC_BIN) $(objutil)/sconfig/sconfig $(IFDTOOL) $(IFDFAKE) $(CBOOTIMAGE) $(AMDFWTOOL)
 
+test-toolchain:
+ifeq ($(COMPILER_OUT_OF_DATE),1)
+	echo "The coreboot toolchain is not the current version."
+	$(error )
+else
+	echo "The coreboot toolchain is the current version."
+endif # ifeq ($(COMPILER_OUT_OF_DATE),1)
+
 ###########################################################################
 # Common recipes for all stages
 ###########################################################################
diff --git a/toolchain.inc b/toolchain.inc
index 5836a19..8bb0aae 100644
--- a/toolchain.inc
+++ b/toolchain.inc
@@ -193,3 +193,18 @@ $(error Halting the build)
 endif #($(COMPILERFAIL),1)
 
 endif #($(NOCOMPILE),1)
+
+ifneq ($(MAKECMDGOALS),)
+ifneq ($(filter test-toolchain,$(MAKECMDGOALS)),)
+$(foreach arch, $(ARCH_SUPPORTED), \
+	$(if $(shell if [ -n "$(GCC_CC_$(arch))" ]; then $(GCC_CC_$(arch)) -v 2>&1 | grep -q "$(shell util/crossgcc/buildgcc -s gcc)" || echo not-current; fi), \
+		$(eval COMPILER_OUT_OF_DATE:=1)$(warning The coreboot toolchain version of gcc for '$(arch)' architecture is not the current version.)) \
+	$(if $(shell if [ -n "$(CLANG_CC_$(arch))" ]; then $(CLANG_CC_$(arch)) -v 2>&1 | grep -q "$(shell util/crossgcc/buildgcc -s clang)" || echo not-current; fi), \
+		$(eval COMPILER_OUT_OF_DATE:=1)$(warning The coreboot toolchain version of clang for '$(arch)' architecture is not the current version.)) \
+	$(if $(shell if [ "$(OBJDUMP_$(arch))" != "invalidobjdump" ]; then $(OBJDUMP_$(arch)) -v 2>&1 | grep -q "$(shell util/crossgcc/buildgcc -s binutils)" || echo not-current; fi), \
+		$(eval COMPILER_OUT_OF_DATE:=1)$(warning The coreboot toolchain version of binutils for '$(arch)' architecture is not the current version.)) \
+)
+$(if $(shell if [ -n "$(IASL)" ]; then $(IASL) -v 2>&1 | grep -q "$(shell util/crossgcc/buildgcc -s iasl)" || echo not-coreboot; fi), \
+	$(eval COMPILER_OUT_OF_DATE:=1)$(warning The coreboot toolchain version of iasl is not the current version))
+endif # ifneq ($(filter crossgcc_check%,$(MAKECMDGOALS)),)
+endif # ifneq ($(MAKECMDGOALS),)



More information about the coreboot-gerrit mailing list