That toolset is defined as the current coreboot toolchain[0] at commit time. Right now this is gcc 6.3, iasl and GNU make, with minor patches as deemed necessary for firmware development by the coreboot maintainers.
COREBOOT is primarily supposed to build CorebootPayloadPkg (and its dependencies), but should be suitable for other builds as well. It's tested to build a usable Ovmf image. For now, COREBOOT is a copy of the GCC5 rules, but it may diverge over time. [0] As built by https://review.coreboot.org/cgit/coreboot.git/tree/util/crossgcc Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Patrick Georgi <[email protected]> --- BaseTools/Conf/tools_def.template | 181 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 181 insertions(+) diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template index 65f21061e6..08adb32e38 100755 --- a/BaseTools/Conf/tools_def.template +++ b/BaseTools/Conf/tools_def.template @@ -199,6 +199,12 @@ DEFINE GCC49_X64_PREFIX = ENV(GCC49_BIN) DEFINE GCC5_IA32_PREFIX = ENV(GCC5_BIN) DEFINE GCC5_X64_PREFIX = ENV(GCC5_BIN) +DEFINE COREBOOT_PREFIX = ENV(COREBOOT_SDK_PATH) +DEFINE COREBOOT_IA32_PREFIX = DEF(COREBOOT_PREFIX)i386-elf- +DEFINE COREBOOT_X64_PREFIX = DEF(COREBOOT_PREFIX)x86_64-elf- +DEFINE COREBOOT_ARM_PREFIX = DEF(COREBOOT_PREFIX)arm-eabi- +DEFINE COREBOOT_AARCH64_PREFIX = DEF(COREBOOT_PREFIX)aarch64-elf- + DEFINE UNIX_IASL_BIN = ENV(IASL_PREFIX)iasl DEFINE WIN_IASL_BIN = ENV(IASL_PREFIX)iasl.exe DEFINE WIN_ASL_BIN = ENV(IASL_PREFIX)asl.exe @@ -4493,6 +4499,28 @@ DEFINE GCC5_AARCH64_DLINK2_FLAGS = DEF(GCC49_AARCH64_DLINK2_FLAGS) -Wno-erro DEFINE GCC5_ARM_ASLDLINK_FLAGS = DEF(GCC49_ARM_ASLDLINK_FLAGS) DEFINE GCC5_AARCH64_ASLDLINK_FLAGS = DEF(GCC49_AARCH64_ASLDLINK_FLAGS) +DEFINE COREBOOT_IA32_CC_FLAGS = DEF(GCC5_IA32_CC_FLAGS) +DEFINE COREBOOT_X64_CC_FLAGS = DEF(GCC5_X64_CC_FLAGS) +DEFINE COREBOOT_IA32_X64_DLINK_COMMON = DEF(GCC5_IA32_X64_DLINK_COMMON) +DEFINE COREBOOT_IA32_X64_ASLDLINK_FLAGS = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) +DEFINE COREBOOT_IA32_X64_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) +DEFINE COREBOOT_IA32_DLINK2_FLAGS = DEF(GCC5_IA32_DLINK2_FLAGS) +DEFINE COREBOOT_X64_DLINK_FLAGS = DEF(GCC5_X64_DLINK_FLAGS) +DEFINE COREBOOT_X64_DLINK2_FLAGS = DEF(GCC5_X64_DLINK2_FLAGS) +DEFINE COREBOOT_ASM_FLAGS = DEF(GCC5_ASM_FLAGS) +DEFINE COREBOOT_ARM_ASM_FLAGS = DEF(GCC5_ARM_ASM_FLAGS) +DEFINE COREBOOT_AARCH64_ASM_FLAGS = DEF(GCC5_AARCH64_ASM_FLAGS) +DEFINE COREBOOT_ARM_CC_FLAGS = DEF(GCC5_ARM_CC_FLAGS) +DEFINE COREBOOT_ARM_CC_XIPFLAGS = DEF(GCC5_ARM_CC_XIPFLAGS) +DEFINE COREBOOT_AARCH64_CC_FLAGS = DEF(GCC5_AARCH64_CC_FLAGS) +DEFINE COREBOOT_AARCH64_CC_XIPFLAGS = DEF(GCC5_AARCH64_CC_XIPFLAGS) +DEFINE COREBOOT_ARM_DLINK_FLAGS = DEF(GCC5_ARM_DLINK_FLAGS) +DEFINE COREBOOT_ARM_DLINK2_FLAGS = DEF(GCC5_ARM_DLINK2_FLAGS) +DEFINE COREBOOT_AARCH64_DLINK_FLAGS = DEF(GCC5_AARCH64_DLINK_FLAGS) +DEFINE COREBOOT_AARCH64_DLINK2_FLAGS = DEF(GCC5_AARCH64_DLINK2_FLAGS) +DEFINE COREBOOT_ARM_ASLDLINK_FLAGS = DEF(GCC5_ARM_ASLDLINK_FLAGS) +DEFINE COREBOOT_AARCH64_ASLDLINK_FLAGS = DEF(GCC5_AARCH64_ASLDLINK_FLAGS) + #################################################################################### # # Unix GCC And Intel Linux ACPI Compiler @@ -5413,6 +5441,159 @@ RELEASE_GCC5_AARCH64_DLINK_FLAGS = DEF(GCC5_AARCH64_DLINK_FLAGS) -flto -Os -L$(W NOOPT_GCC5_AARCH64_DLINK_FLAGS = DEF(GCC5_AARCH64_DLINK_FLAGS) -z common-page-size=0x1000 -O0 NOOPT_GCC5_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20 -O0 +#################################################################################### +# +# COREBOOT - This configuration is used to compile under Linux to produce +# PE/COFF binaries using coreboot's toolchain +# +#################################################################################### +*_COREBOOT_*_*_FAMILY = GCC + +*_COREBOOT_*_MAKE_PATH = DEF(COREBOOT_PREFIX)make +*_COREBOOT_*_*_DLL = ENV(COREBOOT_DLL) +*_COREBOOT_*_ASL_PATH = DEF(COREBOOT_PREFIX)iasl + +*_COREBOOT_*_PP_FLAGS = DEF(GCC_PP_FLAGS) +*_COREBOOT_*_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) +*_COREBOOT_*_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) +*_COREBOOT_*_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) +*_COREBOOT_*_APP_FLAGS = +*_COREBOOT_*_ASL_FLAGS = DEF(IASL_FLAGS) +*_COREBOOT_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) + +################## +# COREBOOT IA32 definitions +################## +*_COREBOOT_IA32_OBJCOPY_PATH = DEF(COREBOOT_IA32_PREFIX)objcopy +*_COREBOOT_IA32_CC_PATH = DEF(COREBOOT_IA32_PREFIX)gcc +*_COREBOOT_IA32_SLINK_PATH = DEF(COREBOOT_IA32_PREFIX)gcc-ar +*_COREBOOT_IA32_DLINK_PATH = DEF(COREBOOT_IA32_PREFIX)gcc +*_COREBOOT_IA32_ASLDLINK_PATH = DEF(COREBOOT_IA32_PREFIX)gcc +*_COREBOOT_IA32_ASM_PATH = DEF(COREBOOT_IA32_PREFIX)gcc +*_COREBOOT_IA32_PP_PATH = DEF(COREBOOT_IA32_PREFIX)gcc +*_COREBOOT_IA32_VFRPP_PATH = DEF(COREBOOT_IA32_PREFIX)gcc +*_COREBOOT_IA32_ASLCC_PATH = DEF(COREBOOT_IA32_PREFIX)gcc +*_COREBOOT_IA32_ASLPP_PATH = DEF(COREBOOT_IA32_PREFIX)gcc +*_COREBOOT_IA32_RC_PATH = DEF(COREBOOT_IA32_PREFIX)objcopy + +*_COREBOOT_IA32_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -m32 -fno-lto +*_COREBOOT_IA32_ASLDLINK_FLAGS = DEF(COREBOOT_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386 +*_COREBOOT_IA32_ASM_FLAGS = DEF(COREBOOT_ASM_FLAGS) -m32 -march=i386 +*_COREBOOT_IA32_DLINK2_FLAGS = DEF(COREBOOT_IA32_DLINK2_FLAGS) +*_COREBOOT_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS) +*_COREBOOT_IA32_OBJCOPY_FLAGS = +*_COREBOOT_IA32_NASM_FLAGS = -f elf32 + + DEBUG_COREBOOT_IA32_CC_FLAGS = DEF(COREBOOT_IA32_CC_FLAGS) -flto -Os + DEBUG_COREBOOT_IA32_DLINK_FLAGS = DEF(COREBOOT_IA32_X64_DLINK_FLAGS) -flto -Os -Wl,-m,elf_i386,--oformat=elf32-i386 + +RELEASE_COREBOOT_IA32_CC_FLAGS = DEF(COREBOOT_IA32_CC_FLAGS) -flto -Os -Wno-unused-but-set-variable +RELEASE_COREBOOT_IA32_DLINK_FLAGS = DEF(COREBOOT_IA32_X64_DLINK_FLAGS) -flto -Os -Wl,-m,elf_i386,--oformat=elf32-i386 + + NOOPT_COREBOOT_IA32_CC_FLAGS = DEF(COREBOOT_IA32_CC_FLAGS) -O0 + NOOPT_COREBOOT_IA32_DLINK_FLAGS = DEF(COREBOOT_IA32_X64_DLINK_FLAGS) -Wl,-m,elf_i386,--oformat=elf32-i386 -O0 + +################## +# COREBOOT X64 definitions +################## +*_COREBOOT_X64_OBJCOPY_PATH = DEF(COREBOOT_X64_PREFIX)objcopy +*_COREBOOT_X64_CC_PATH = DEF(COREBOOT_X64_PREFIX)gcc +*_COREBOOT_X64_SLINK_PATH = DEF(COREBOOT_X64_PREFIX)gcc-ar +*_COREBOOT_X64_DLINK_PATH = DEF(COREBOOT_X64_PREFIX)gcc +*_COREBOOT_X64_ASLDLINK_PATH = DEF(COREBOOT_X64_PREFIX)gcc +*_COREBOOT_X64_ASM_PATH = DEF(COREBOOT_X64_PREFIX)gcc +*_COREBOOT_X64_PP_PATH = DEF(COREBOOT_X64_PREFIX)gcc +*_COREBOOT_X64_VFRPP_PATH = DEF(COREBOOT_X64_PREFIX)gcc +*_COREBOOT_X64_ASLCC_PATH = DEF(COREBOOT_X64_PREFIX)gcc +*_COREBOOT_X64_ASLPP_PATH = DEF(COREBOOT_X64_PREFIX)gcc +*_COREBOOT_X64_RC_PATH = DEF(COREBOOT_X64_PREFIX)objcopy + +*_COREBOOT_X64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -m64 -fno-lto +*_COREBOOT_X64_ASLDLINK_FLAGS = DEF(COREBOOT_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64 +*_COREBOOT_X64_ASM_FLAGS = DEF(COREBOOT_ASM_FLAGS) -m64 +*_COREBOOT_X64_DLINK2_FLAGS = DEF(COREBOOT_X64_DLINK2_FLAGS) +*_COREBOOT_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS) +*_COREBOOT_X64_OBJCOPY_FLAGS = +*_COREBOOT_X64_NASM_FLAGS = -f elf64 + + DEBUG_COREBOOT_X64_CC_FLAGS = DEF(COREBOOT_X64_CC_FLAGS) -flto -DUSING_LTO -Os + DEBUG_COREBOOT_X64_DLINK_FLAGS = DEF(COREBOOT_X64_DLINK_FLAGS) -flto -Os + +RELEASE_COREBOOT_X64_CC_FLAGS = DEF(COREBOOT_X64_CC_FLAGS) -flto -DUSING_LTO -Os -Wno-unused-but-set-variable +RELEASE_COREBOOT_X64_DLINK_FLAGS = DEF(COREBOOT_X64_DLINK_FLAGS) -flto -Os + + NOOPT_COREBOOT_X64_CC_FLAGS = DEF(COREBOOT_X64_CC_FLAGS) -O0 + NOOPT_COREBOOT_X64_DLINK_FLAGS = DEF(COREBOOT_X64_DLINK_FLAGS) -O0 + +################## +# COREBOOT ARM definitions +################## +*_COREBOOT_ARM_CC_PATH = ENV(COREBOOT_ARM_PREFIX)gcc +*_COREBOOT_ARM_SLINK_PATH = ENV(COREBOOT_ARM_PREFIX)gcc-ar +*_COREBOOT_ARM_DLINK_PATH = ENV(COREBOOT_ARM_PREFIX)gcc +*_COREBOOT_ARM_ASLDLINK_PATH = ENV(COREBOOT_ARM_PREFIX)gcc +*_COREBOOT_ARM_ASM_PATH = ENV(COREBOOT_ARM_PREFIX)gcc +*_COREBOOT_ARM_PP_PATH = ENV(COREBOOT_ARM_PREFIX)gcc +*_COREBOOT_ARM_VFRPP_PATH = ENV(COREBOOT_ARM_PREFIX)gcc +*_COREBOOT_ARM_ASLCC_PATH = ENV(COREBOOT_ARM_PREFIX)gcc +*_COREBOOT_ARM_ASLPP_PATH = ENV(COREBOOT_ARM_PREFIX)gcc +*_COREBOOT_ARM_RC_PATH = ENV(COREBOOT_ARM_PREFIX)objcopy + +*_COREBOOT_ARM_ARCHCC_FLAGS = -mthumb +*_COREBOOT_ARM_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) +*_COREBOOT_ARM_ASLDLINK_FLAGS = DEF(COREBOOT_ARM_ASLDLINK_FLAGS) +*_COREBOOT_ARM_ASM_FLAGS = DEF(COREBOOT_ARM_ASM_FLAGS) +*_COREBOOT_ARM_DLINK2_FLAGS = DEF(COREBOOT_ARM_DLINK2_FLAGS) +*_COREBOOT_ARM_PLATFORM_FLAGS = -march=armv7-a +*_COREBOOT_ARM_PP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS) +*_COREBOOT_ARM_RC_FLAGS = DEF(GCC_ARM_RC_FLAGS) +*_COREBOOT_ARM_VFRPP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS) +*_COREBOOT_ARM_CC_XIPFLAGS = DEF(COREBOOT_ARM_CC_XIPFLAGS) + + DEBUG_COREBOOT_ARM_CC_FLAGS = DEF(COREBOOT_ARM_CC_FLAGS) -O0 + DEBUG_COREBOOT_ARM_DLINK_FLAGS = DEF(COREBOOT_ARM_DLINK_FLAGS) + +RELEASE_COREBOOT_ARM_CC_FLAGS = DEF(COREBOOT_ARM_CC_FLAGS) -flto -Wno-unused-but-set-variable +RELEASE_COREBOOT_ARM_DLINK_FLAGS = DEF(COREBOOT_ARM_DLINK_FLAGS) -flto -Os -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=-pass-through=-llto-arm + + NOOPT_COREBOOT_ARM_CC_FLAGS = DEF(COREBOOT_ARM_CC_FLAGS) -O0 + NOOPT_COREBOOT_ARM_DLINK_FLAGS = DEF(COREBOOT_ARM_DLINK_FLAGS) -O0 + +################## +# COREBOOT AARCH64 definitions +################## +*_COREBOOT_AARCH64_CC_PATH = ENV(COREBOOT_AARCH64_PREFIX)gcc +*_COREBOOT_AARCH64_SLINK_PATH = ENV(COREBOOT_AARCH64_PREFIX)gcc-ar +*_COREBOOT_AARCH64_DLINK_PATH = ENV(COREBOOT_AARCH64_PREFIX)gcc +*_COREBOOT_AARCH64_ASLDLINK_PATH = ENV(COREBOOT_AARCH64_PREFIX)gcc +*_COREBOOT_AARCH64_ASM_PATH = ENV(COREBOOT_AARCH64_PREFIX)gcc +*_COREBOOT_AARCH64_PP_PATH = ENV(COREBOOT_AARCH64_PREFIX)gcc +*_COREBOOT_AARCH64_VFRPP_PATH = ENV(COREBOOT_AARCH64_PREFIX)gcc +*_COREBOOT_AARCH64_ASLCC_PATH = ENV(COREBOOT_AARCH64_PREFIX)gcc +*_COREBOOT_AARCH64_ASLPP_PATH = ENV(COREBOOT_AARCH64_PREFIX)gcc +*_COREBOOT_AARCH64_RC_PATH = ENV(COREBOOT_AARCH64_PREFIX)objcopy + +*_COREBOOT_AARCH64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) +*_COREBOOT_AARCH64_ASLDLINK_FLAGS = DEF(COREBOOT_AARCH64_ASLDLINK_FLAGS) +*_COREBOOT_AARCH64_ASM_FLAGS = DEF(COREBOOT_AARCH64_ASM_FLAGS) +*_COREBOOT_AARCH64_DLINK2_FLAGS = DEF(COREBOOT_AARCH64_DLINK2_FLAGS) +*_COREBOOT_AARCH64_PLATFORM_FLAGS = +*_COREBOOT_AARCH64_PP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS) +*_COREBOOT_AARCH64_RC_FLAGS = DEF(GCC_AARCH64_RC_FLAGS) +*_COREBOOT_AARCH64_VFRPP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS) +*_COREBOOT_AARCH64_CC_XIPFLAGS = DEF(COREBOOT_AARCH64_CC_XIPFLAGS) + + DEBUG_COREBOOT_AARCH64_CC_FLAGS = DEF(COREBOOT_AARCH64_CC_FLAGS) -O0 -mcmodel=small + DEBUG_COREBOOT_AARCH64_DLINK_FLAGS = DEF(COREBOOT_AARCH64_DLINK_FLAGS) -z common-page-size=0x1000 + DEBUG_COREBOOT_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20 + +RELEASE_COREBOOT_AARCH64_CC_FLAGS = DEF(COREBOOT_AARCH64_CC_FLAGS) -flto -Wno-unused-but-set-variable -mcmodel=tiny -fomit-frame-pointer +RELEASE_COREBOOT_AARCH64_DLINK_FLAGS = DEF(COREBOOT_AARCH64_DLINK_FLAGS) -flto -Os -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin-opt=-pass-through=-llto-aarch64 -Wno-lto-type-mismatch + + NOOPT_COREBOOT_AARCH64_CC_FLAGS = DEF(COREBOOT_AARCH64_CC_FLAGS) -O0 -mcmodel=small + NOOPT_COREBOOT_AARCH64_DLINK_FLAGS = DEF(COREBOOT_AARCH64_DLINK_FLAGS) -z common-page-size=0x1000 -O0 + NOOPT_COREBOOT_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20 -O0 + #################################################################################### # # CLANG35 - This configuration is used to compile under Linux to produce -- 2.13.2.725.g09c95d1e9-goog _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

