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@google.com> Reviewed-on: https://review.coreboot.org/12846 Reviewed-by: Timothy Pearson <tpearson@raptorengineeringinc.com> Tested-by: build bot (Jenkins)
This commit is contained in:
parent
5933814e27
commit
aede3fc828
|
@ -488,6 +488,7 @@ help_toolchain help::
|
||||||
@echo ' crossgcc-clean - Remove all built coreboot cross-compilers'
|
@echo ' crossgcc-clean - Remove all built coreboot cross-compilers'
|
||||||
@echo ' iasl - Build coreboot IASL compiler (built by all cross targets)'
|
@echo ' iasl - Build coreboot IASL compiler (built by all cross targets)'
|
||||||
@echo ' clang - Build coreboot clang compiler'
|
@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 ' crossgcc-ARCH - Build cross-compiler for specific architecture'
|
||||||
@echo ' crosstools-ARCH - Build cross-compiler with GDB 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"'
|
@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)
|
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
|
# Common recipes for all stages
|
||||||
###########################################################################
|
###########################################################################
|
||||||
|
|
|
@ -193,3 +193,18 @@ $(error Halting the build)
|
||||||
endif #($(COMPILERFAIL),1)
|
endif #($(COMPILERFAIL),1)
|
||||||
|
|
||||||
endif #($(NOCOMPILE),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),)
|
||||||
|
|
Loading…
Reference in New Issue