81ff33cffc
This file was being written to the root src directory. It is the only file being written to src during a normal build, while all others are being written to $(obj). I added a new variable to allow specifying the xcompile path. This allows generating a single file if building multiple boards. I also moved the default location into $(obj) so we don't pollute the src directory by default. I also cleaned up the generation of xcompile by removing the unnecessary eval and NOCOMPILE check. I also left .xcompile in distclean so it cleans up stale files. Since .xcompile is written into $(obj), `make clean` will now remove it. The tegra Makefiles are outside of the normal build process, so I just updated those Makefiles to point to the default xcompile location of a normal build. The what-jenkins-does target had to be updated to support these special targets. We generate an xcompile specifically for these targets and pass it into the Makefile. Ideally we should get these targets added to the main build. BUG=b:112267918 TEST=ran `emerge-grunt coreboot` and `make what-jenkins-does` Signed-off-by: Raul E Rangel <rrangel@chromium.org> Change-Id: Ia83f234447b977efa824751c9674154b77d606b0 Reviewed-on: https://review.coreboot.org/c/coreboot/+/28101 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Nico Huber <nico.h@gmx.de>
69 lines
3 KiB
Makefile
69 lines
3 KiB
Makefile
## SPDX-License-Identifier: GPL-2.0-only
|
|
|
|
TOOLCHAIN_ARCHES := i386 x64 arm aarch64 riscv ppc64 nds32le
|
|
|
|
help_toolchain help::
|
|
@echo '*** Toolchain targets ***'
|
|
@echo ' crossgcc - Build coreboot cross-compilers for all platforms'
|
|
@echo ' crosstools - Build coreboot cross-compiler and GDB for all platforms'
|
|
@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 ' nasm - Build coreboot nasm'
|
|
@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 "$(subst $(spc),"$(comma) ",$(TOOLCHAIN_ARCHES))"'
|
|
@echo ' Use "make [target] CPUS=#" to build toolchain using multiple cores'
|
|
@echo ' Use "make [target] DEST=some/path" to install toolchain there'
|
|
@echo
|
|
|
|
# For the toolchain builds, use CPUS=x to use multiple processors to build
|
|
# use BUILDGCC_OPTIONS= to set any crossgcc command line options
|
|
# Example: BUILDGCC_OPTIONS='-t' will keep temporary files after build
|
|
crossgcc: clean-for-update
|
|
$(MAKE) -C util/crossgcc all_without_gdb SKIP_CLANG=1
|
|
|
|
.PHONY: crossgcc crossgcc-i386 crossgcc-x64 crossgcc-arm crossgcc-aarch64 \
|
|
crossgcc-riscv crossgcc-power8 crossgcc-clean iasl \
|
|
clang crosstools-i386 crosstools-x64 crosstools-arm \
|
|
crosstools-aarch64 crosstools-riscv crosstools-power8 \
|
|
jenkins-build-toolchain nasm
|
|
|
|
$(foreach arch,$(TOOLCHAIN_ARCHES),crossgcc-$(arch)): clean-for-update
|
|
$(MAKE) -C util/crossgcc $(patsubst crossgcc-%,build-%,$@) build_iasl SKIP_GDB=1
|
|
|
|
crosstools: clean-for-update
|
|
$(MAKE) -C util/crossgcc all_with_gdb SKIP_CLANG=1
|
|
|
|
iasl: clean-for-update
|
|
$(MAKE) -C util/crossgcc build_iasl
|
|
|
|
clang: clean-for-update
|
|
$(MAKE) -C util/crossgcc build_clang
|
|
|
|
nasm: clean-for-update
|
|
$(MAKE) -C util/crossgcc build_nasm
|
|
|
|
$(foreach arch,$(TOOLCHAIN_ARCHES),crosstools-$(arch)): clean-for-update
|
|
$(MAKE) -C util/crossgcc $(patsubst crosstools-%,build-%,$@) build_iasl
|
|
|
|
crossgcc-clean: clean-for-update
|
|
$(MAKE) -C util/crossgcc clean
|
|
|
|
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)
|
|
|
|
# This target controls what the jenkins builder tests
|
|
jenkins-build-toolchain: BUILDGCC_OPTIONS ?= -y --nocolor
|
|
jenkins-build-toolchain:
|
|
$(MAKE) crossgcc clang KEEP_SOURCES=1 BUILDGCC_OPTIONS='$(BUILDGCC_OPTIONS)'
|
|
#TODO: Re-enable gdb build after the builders can build it again.
|
|
#$(MAKE) crosstools clang KEEP_SOURCES=1 BUILDGCC_OPTIONS='$(BUILDGCC_OPTIONS)'
|
|
PATH=$(if $(DEST),$(DEST)/bin,$(top)/util/crossgcc/xgcc/bin):$$PATH; $(MAKE) what-jenkins-does
|
|
PATH=$(if $(DEST),$(DEST)/bin,$(top)/util/crossgcc/xgcc/bin):$$PATH; $(MAKE) test-toolchain
|