public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Patrick Georgi <pgeorgi@google.com>
To: edk2-devel@lists.01.org
Subject: [PATCH] BaseTools: Add COREBOOT tools definition
Date: Tue,  4 Jul 2017 17:22:41 +0200	[thread overview]
Message-ID: <20170704152241.21177-1-pgeorgi@google.com> (raw)

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 <pgeorgi@google.com>
---
 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



             reply	other threads:[~2017-07-04 15:21 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-04 15:22 Patrick Georgi [this message]
2017-07-10 14:46 ` [PATCH] BaseTools: Add COREBOOT tools definition Gao, Liming
2017-07-10 15:05   ` Patrick Georgi
2017-07-11 14:00     ` Gao, Liming
  -- strict thread matches above, loose matches on Subject: below --
2017-06-30 22:39 Patrick Georgi
2017-07-03  3:08 ` Gao, Liming
2017-07-07  9:16   ` Patrick Georgi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170704152241.21177-1-pgeorgi@google.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox