OK. I will separate this patch to 3 commits and post a public branch for them.
Steven Shi Intel\SSG\STO\UEFI Firmware Tel: +86 021-61166522 iNet: 821-6522 > -----Original Message----- > From: Justen, Jordan L > Sent: Thursday, June 30, 2016 4:55 AM > To: Shi, Steven <steven....@intel.com>; edk2-devel@lists.01.org; Gao, > Liming <liming....@intel.com> > Cc: Kinney, Michael D <michael.d.kin...@intel.com>; af...@apple.com > Subject: Re: [edk2] [PATCH 1/7] BaseTools: Enable three new toolchains > > This should be 3 separate commits. It should be obvious in the commit > subject line what toolchain is being added. > > Can you post a public branch with your commits? Maybe on a personal > github fork of the edk2 repo. > > On 2016-06-28 08:18:55, Shi, Steven wrote: > > Enable three new toolchains: CLANG38, CLANGSCAN38 and GCC53. > > (1)CLANG38 uses Clang3.8.0, enable LLVM Link Time Optimization (LTO) > > and code size optimization flag (-Oz) by default for aggressive code > > size improvement. CLANG38 X64 code is small code model + PIE. > > (2)CLANGSCAN38 is based on CLANG38 to seamlessly integrate Clang > > scan-build analyzer infrastructure into edk2 build infrastructure. > > I'm not sure we should add a separate toolchain for this. > > > (3)GCC53 use gcc 5.3, enable GCC Link Time Optimization (LTO) and > > code size optimization (–Os) for aggressive code size improvement. > > GCC53 X64 code is also small + PIE. > > As of GCC 5.0, the minor releases have been bumped left. Essentially, > GCC51, GCC52, etc don't make sense, and GCC5 or GCC6 should be used > now. > > https://gcc.gnu.org/releases.html > > So, will this work with all versions of GCC 5.*? If not, I suggest we > consider starting this support at GCC6. > > -Jordan > > > > > Contributed-under: TianoCore Contribution Agreement 1.0 > > Signed-off-by: Steven Shi <steven....@intel.com> > > --- > > BaseTools/Conf/build_rule.template | 17 ++- > > BaseTools/Conf/tools_def.template | 267 > +++++++++++++++++++++++++++++++++++++ > > 2 files changed, 283 insertions(+), 1 deletion(-) > > mode change 100644 => 100755 BaseTools/Conf/build_rule.template > > mode change 100644 => 100755 BaseTools/Conf/tools_def.template > > > > diff --git a/BaseTools/Conf/build_rule.template > b/BaseTools/Conf/build_rule.template > > old mode 100644 > > new mode 100755 > > index 91bcc18..7f21813 > > --- a/BaseTools/Conf/build_rule.template > > +++ b/BaseTools/Conf/build_rule.template > > @@ -137,6 +137,9 @@ > > <Command.XCODE> > > "$(CC)" $(CC_FLAGS) -o ${dst} $(INC) ${src} > > > > + <Command.CLANGSCAN38> > > + "$(SCAN)" $(SCAN_FLAGS) -o $(SCAN_DST) "$(CC)" $(CC_FLAGS) -o > ${dst} $(INC) ${src} > > + > > [C-Code-File.COMMON.IPF] > > <InputFile> > > ?.c > > @@ -267,7 +270,10 @@ > > > > <Command.GCC> > > "$(SLINK)" -cr ${dst} $(SLINK_FLAGS) @$(OBJECT_FILES_LIST) > > - > > + > > + <Command.CLANG38, Command.CLANGSCAN38> > > + "$(SLINK)" cr ${dst} $(SLINK_FLAGS) @$(OBJECT_FILES_LIST) > > + > > <Command.RVCT> > > "$(SLINK)" $(SLINK_FLAGS) ${dst} --via $(OBJECT_FILES_LIST) > > > > @@ -295,6 +301,10 @@ > > "$(DLINK)" -o ${dst} $(DLINK_FLAGS) --start-group $(DLINK_SPATH) > @$(STATIC_LIBRARY_FILES_LIST) --end-group $(DLINK2_FLAGS) > > "$(OBJCOPY)" $(OBJCOPY_FLAGS) ${dst} > > > > + <Command.GCC53, Command.CLANG38, Command.CLANGSCAN38> > > + "$(DLINK)" -o ${dst} $(DLINK_FLAGS) -Wl,--start- > group,$(DLINK_SPATH),@$(STATIC_LIBRARY_FILES_LIST) -Wl,--end-group > $(DLINK2_FLAGS) > > + "$(OBJCOPY)" $(OBJCOPY_FLAGS) ${dst} > > + > > <Command.RVCT> > > "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) --via > $(STATIC_LIBRARY_FILES_LIST) $(DLINK2_FLAGS) > > > > @@ -448,6 +458,11 @@ > > "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll > $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj > > "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll > $(GENFW_FLAGS) > > > > + <Command.GCC53> > > + "$(ASLCC)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj > $(ASLCC_FLAGS) $(INC) ${src} > > + "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll > $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj > > + "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll > $(GENFW_FLAGS) > > + > > <Command.XCODE> > > "$(ASLCC)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj > $(ASLCC_FLAGS) $(INC) ${src} > > "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll > $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj > > diff --git a/BaseTools/Conf/tools_def.template > b/BaseTools/Conf/tools_def.template > > old mode 100644 > > new mode 100755 > > index 2065fa3..d401031 > > --- a/BaseTools/Conf/tools_def.template > > +++ b/BaseTools/Conf/tools_def.template > > @@ -366,12 +366,30 @@ DEFINE SOURCERY_CYGWIN_TOOLS = > /cygdrive/c/Program Files/CodeSourcery/Sourcery G > > # Required to build platforms or ACPI tables: > > # Intel(r) ACPI Compiler from > > # https://acpica.org/downloads > > +# GCC53 -Linux- Requires: > > +# GCC 5.3 targeting x86_64-linux-gnu > > +# Optional: > > +# Required to build platforms or ACPI tables: > > +# Intel(r) ACPI Compiler from > > +# https://acpica.org/downloads > > # CLANG35 -Linux,Windows- Requires: > > # Clang v3.5 or later, and GNU binutils > > targeting aarch64- > linux-gnu or arm-linux-gnueabi > > # Optional: > > # Required to build platforms or ACPI tables: > > # Intel(r) ACPI Compiler from > > # https://acpica.org/downloads > > +# CLANG38 -Linux- Requires: > > +# Clang v3.8 or later, LLVMgold plugin and GNU > > binutils > 2.26 targeting x86_64-linux-gnu > > +# Optional: > > +# Required to build platforms or ACPI tables: > > +# Intel(r) ACPI Compiler from > > +# https://acpica.org/downloads > > +# CLANGSCAN38 -Linux- Requires: > > +# Clang v3.8 or later, and GNU binutils 2.26 > > targeting > x86_64-linux-gnu > > +# Optional: > > +# Required to build platforms or ACPI tables: > > +# Intel(r) ACPI Compiler from > > +# https://acpica.org/downloads > > # ELFGCC -Linux- Requires: > > # GCC(this tool chain uses whatever version of > > gcc and > binutils that is installed in /usr/bin) > > # Optional: > > @@ -7410,3 +7428,252 @@ RELEASE_RVCTCYGWIN_ARM_CC_FLAGS = > "$(CCPATH_FLAG)" $(ARCHCC_FLAGS) $(PLATFORM_F > > # Build rule order > > ################# > > *_*_*_*_BUILDRULEORDER = nasm asm Asm ASM S s > > + > > > +############################################################# > ####################### > > +# > > +# Clang 3.8 - This configuration is used to compile under Linux to produce > > +# PE/COFF binaries using LLVM/Clang 3.8 with Link Time Optimization > enabled > > +# > > > +############################################################# > ####################### > > + > > +*_CLANG38_*_*_FAMILY = GCC > > +*_CLANG38_*_*_BUILDRULEFAMILY = CLANG38 > > +*_CLANG38_*_MAKE_PATH = DEF(GCC49_IA32_PREFIX)make > > +*_CLANG38_*_*_DLL = ENV(CLANG38_DLL) > > +*_CLANG38_*_ASL_PATH = DEF(UNIX_IASL_BIN) > > + > > +*_CLANG38_*_PP_FLAGS = DEF(GCC_PP_FLAGS) -target x86_64- > pc-linux-gnu > > +*_CLANG38_*_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) -target > x86_64-pc-linux-gnu > > +*_CLANG38_*_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) -target > x86_64-pc-linux-gnu > > +*_CLANG38_*_APP_FLAGS = > > +*_CLANG38_*_ASL_FLAGS = DEF(IASL_FLAGS) > > +*_CLANG38_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) > > + > > +DEFINE CLANG38_IA32_PREFIX = ENV(CLANG38_BIN) > > +DEFINE CLANG38_X64_PREFIX = ENV(CLANG38_BIN) > > + > > +DEFINE CLANG38_ALL_CC_FLAGS = -c -fshort-wchar -fno-strict-aliasing > -Wall -Werror -Wno-array-bounds -Wno-empty-body -ffunction-sections - > fdata-sections -include AutoGen.h - > DSTRING_ARRAY_NAME=$(BASE_NAME)Strings -fno-stack-protector -fno- > builtin -mms-bitfields -Wno-address -Wno-shift-negative-value -Wno- > parentheses-equality -Wno-unknown-pragmas -Wno-tautological-constant- > out-of-range-compare -Wno-incompatible-library-redeclaration -target > x86_64-pc-linux-gnu -fno-asynchronous-unwind-tables -mno-sse -mno-mmx > -msoft-float -mno-implicit-float -ftrap- > function=undefined_behavior_has_been_optimized_away_by_clang - > funsigned-char -fno-ms-extensions -fno-common -Wno-null-dereference - > Wno-tautological-compare > > + > > +DEFINE CLANG38_ALL_DLINK_FLAGS = -flto -nostdlib -Wl,-n -Wl,-q -Wl,-- > gc-sections -z common-page-size=0x40 -Wl,--entry,$(IMAGE_ENTRY_POINT) > -Wl,-u,$(IMAGE_ENTRY_POINT) -Wl,- > Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map > > +DEFINE CLANG38_IA32_DLINK2_FLAGS = -Wl,-- > defsym=PECOFF_HEADER_SIZE=0x220 -Wl,-- > script=$(EDK_TOOLS_PATH)/Scripts/GccBase.lds > > +DEFINE CLANG38_X64_DLINK2_FLAGS = -Wl,-- > defsym=PECOFF_HEADER_SIZE=0x228 -Wl,-- > script=$(EDK_TOOLS_PATH)/Scripts/GccBase.lds > > + > > +########################### > > +# CLANG38 IA32 definitions > > +########################### > > +*_CLANG38_IA32_OBJCOPY_PATH = > DEF(GCC49_IA32_PREFIX)objcopy > > +*_CLANG38_IA32_CC_PATH = DEF(CLANG38_IA32_PREFIX)clang > > +*_CLANG38_IA32_SLINK_PATH = DEF(CLANG38_IA32_PREFIX)llvm- > ar > > +*_CLANG38_IA32_DLINK_PATH = DEF(CLANG38_IA32_PREFIX)clang > > +*_CLANG38_IA32_ASLDLINK_PATH = > DEF(CLANG38_IA32_PREFIX)clang > > +*_CLANG38_IA32_ASM_PATH = DEF(CLANG38_IA32_PREFIX)clang > > +*_CLANG38_IA32_PP_PATH = DEF(CLANG38_IA32_PREFIX)clang > > +*_CLANG38_IA32_VFRPP_PATH = DEF(CLANG38_IA32_PREFIX)clang > > +*_CLANG38_IA32_ASLCC_PATH = DEF(CLANG38_IA32_PREFIX)clang > > +*_CLANG38_IA32_ASLPP_PATH = DEF(CLANG38_IA32_PREFIX)clang > > +*_CLANG38_IA32_RC_PATH = DEF(GCC49_IA32_PREFIX)objcopy > > + > > +*_CLANG38_IA32_ASLCC_FLAGS = -x c -Os -m32 -target x86_64-pc- > linux-gnu -flto > > +*_CLANG38_IA32_ASLDLINK_FLAGS = > DEF(CLANG38_ALL_DLINK_FLAGS) -Wl,-Oz -Wl,-melf_i386 -Wl,-- > entry,ReferenceAcpiTable -Wl,-u,ReferenceAcpiTable > > +*_CLANG38_IA32_ASM_FLAGS = DEF(GCC49_ASM_FLAGS) -m32 - > march=i386 > > +DEBUG_CLANG38_IA32_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) - > m32 -D EFI32 -Oz -flto -march=i586 -g > > +RELEASE_CLANG38_IA32_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) > -m32 -D EFI32 -Oz -flto -march=i586 > > +*_CLANG38_IA32_DLINK_FLAGS = DEF(CLANG38_ALL_DLINK_FLAGS) > -Wl,-Oz -Wl,-melf_i386 -Wl,--oformat=elf32-i386 > > +*_CLANG38_IA32_DLINK2_FLAGS = > DEF(CLANG38_IA32_DLINK2_FLAGS) > > +*_CLANG38_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS) > > +*_CLANG38_IA32_OBJCOPY_FLAGS = > > +*_CLANG38_IA32_NASM_FLAGS = -f elf32 > > + > > +########################## > > +# CLANG38 X64 definitions > > +########################## > > +*_CLANG38_X64_OBJCOPY_PATH = DEF(GCC49_X64_PREFIX)objcopy > > +*_CLANG38_X64_CC_PATH = DEF(CLANG38_X64_PREFIX)clang > > +*_CLANG38_X64_SLINK_PATH = DEF(CLANG38_X64_PREFIX)llvm-ar > > +*_CLANG38_X64_DLINK_PATH = DEF(CLANG38_X64_PREFIX)clang > > +*_CLANG38_X64_ASLDLINK_PATH = DEF(CLANG38_X64_PREFIX)clang > > +*_CLANG38_X64_ASM_PATH = DEF(CLANG38_X64_PREFIX)clang > > +*_CLANG38_X64_PP_PATH = DEF(CLANG38_X64_PREFIX)clang > > +*_CLANG38_X64_VFRPP_PATH = DEF(CLANG38_X64_PREFIX)clang > > +*_CLANG38_X64_ASLCC_PATH = DEF(CLANG38_X64_PREFIX)clang > > +*_CLANG38_X64_ASLPP_PATH = DEF(CLANG38_X64_PREFIX)clang > > +*_CLANG38_X64_RC_PATH = DEF(GCC49_X64_PREFIX)objcopy > > + > > +*_CLANG38_X64_ASLCC_FLAGS = -x c -Os -m64 -target x86_64-pc- > linux-gnu -flto > > +*_CLANG38_X64_ASLDLINK_FLAGS = > DEF(CLANG38_ALL_DLINK_FLAGS) -Wl,-Oz -Wl,-melf_x86_64 -Wl,-- > entry,ReferenceAcpiTable -Wl,-u,ReferenceAcpiTable -Wl,-pie - > mcmodel=small > > +*_CLANG38_X64_ASM_FLAGS = DEF(GCC49_ASM_FLAGS) -m64 - > target x86_64-pc-linux-gnu > > +DEBUG_CLANG38_X64_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) - > m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small - > fpie -g -Oz -flto > > +RELEASE_CLANG38_X64_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) - > m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small - > fpie -Oz -flto > > +*_CLANG38_X64_DLINK_FLAGS = DEF(CLANG38_ALL_DLINK_FLAGS) > -Wl,-Oz -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie - > mcmodel=small > > +*_CLANG38_X64_DLINK2_FLAGS = > DEF(CLANG38_X64_DLINK2_FLAGS) > > +*_CLANG38_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS) > > +*_CLANG38_X64_OBJCOPY_FLAGS = > > +*_CLANG38_X64_NASM_FLAGS = -f elf64 > > + > > > +############################################################# > ####################### > > +# > > +# ClangScan 3.8 - This configuration is used to base on CLANG38 build tool > chain to > > +# run the clang static analyzer (scan-build) over edk2 codebase > > +# > > > +############################################################# > ####################### > > + > > +*_CLANGSCAN38_*_*_FAMILY = GCC > > +*_CLANGSCAN38_*_*_BUILDRULEFAMILY = CLANGSCAN38 > > +*_CLANGSCAN38_*_MAKE_PATH = > DEF(GCC49_IA32_PREFIX)make > > +*_CLANGSCAN38_*_*_DLL = ENV(CLANG38_DLL) > > +*_CLANGSCAN38_*_ASL_PATH = DEF(UNIX_IASL_BIN) > > + > > +*_CLANGSCAN38_*_PP_FLAGS = DEF(GCC_PP_FLAGS) -target > x86_64-pc-linux-gnu > > +*_CLANGSCAN38_*_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) - > target x86_64-pc-linux-gnu > > +*_CLANGSCAN38_*_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) - > target x86_64-pc-linux-gnu > > +*_CLANGSCAN38_*_APP_FLAGS = > > +*_CLANGSCAN38_*_ASL_FLAGS = DEF(IASL_FLAGS) > > +*_CLANGSCAN38_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) > > + > > +DEFINE CLANGSCAN38_ALL_CHECKER_FLAGS = -enable-checker > alpha.security.MallocOverflow -enable-checker > alpha.security.ReturnPtrRange -enable-checker > alpha.security.taint.TaintPropagation -disable-checker > deadcode.DeadStores -disable-checker core.NullDereference > > +DEFINE SCAN_OUTPUT_PATH = ~/ClangReport > > + > > +############################### > > +# CLANGSCAN38 IA32 definitions > > +############################### > > +*_CLANGSCAN38_IA32_OBJCOPY_PATH = > DEF(GCC49_IA32_PREFIX)objcopy > > +*_CLANGSCAN38_IA32_SCAN_PATH = > DEF(CLANG38_IA32_PREFIX)scan-build > > +*_CLANGSCAN38_IA32_SCAN_DST = DEF(SCAN_OUTPUT_PATH) > > +*_CLANGSCAN38_IA32_CC_PATH = > DEF(CLANG38_IA32_PREFIX)clang > > +*_CLANGSCAN38_IA32_SLINK_PATH = > DEF(CLANG38_IA32_PREFIX)llvm-ar > > +*_CLANGSCAN38_IA32_DLINK_PATH = > DEF(CLANG38_IA32_PREFIX)clang > > +*_CLANGSCAN38_IA32_ASLDLINK_PATH = > DEF(CLANG38_IA32_PREFIX)clang > > +*_CLANGSCAN38_IA32_ASM_PATH = > DEF(CLANG38_IA32_PREFIX)clang > > +*_CLANGSCAN38_IA32_PP_PATH = > DEF(CLANG38_IA32_PREFIX)clang > > +*_CLANGSCAN38_IA32_VFRPP_PATH = > DEF(CLANG38_IA32_PREFIX)clang > > +*_CLANGSCAN38_IA32_ASLCC_PATH = > DEF(CLANG38_IA32_PREFIX)clang > > +*_CLANGSCAN38_IA32_ASLPP_PATH = > DEF(CLANG38_IA32_PREFIX)clang > > +*_CLANGSCAN38_IA32_RC_PATH = > DEF(GCC49_IA32_PREFIX)objcopy > > + > > +*_CLANGSCAN38_IA32_ASLCC_FLAGS = -x c -Os -m32 -target > x86_64-pc-linux-gnu -flto > > +*_CLANGSCAN38_IA32_ASLDLINK_FLAGS = > DEF(CLANG38_ALL_DLINK_FLAGS) -Wl,-Oz -Wl,-melf_i386 -Wl,-- > entry,ReferenceAcpiTable -Wl,-u,ReferenceAcpiTable > > +*_CLANGSCAN38_IA32_ASM_FLAGS = DEF(GCC49_ASM_FLAGS) - > m32 -march=i386 > > +*_CLANGSCAN38_IA32_SCAN_FLAGS = > DEF(CLANGSCAN38_ALL_CHECKER_FLAGS) > > +DEBUG_CLANGSCAN38_IA32_CC_FLAGS = > DEF(CLANG38_ALL_CC_FLAGS) -m32 -D EFI32 -Oz -flto -march=i586 -g > > +RELEASE_CLANGSCAN38_IA32_CC_FLAGS = > DEF(CLANG38_ALL_CC_FLAGS) -m32 -D EFI32 -Oz -flto -march=i586 > > +*_CLANGSCAN38_IA32_DLINK_FLAGS = > DEF(CLANG38_ALL_DLINK_FLAGS) -Wl,-Oz -Wl,-melf_i386 -Wl,-- > oformat=elf32-i386 > > +*_CLANGSCAN38_IA32_DLINK2_FLAGS = > DEF(CLANG38_IA32_DLINK2_FLAGS) > > +*_CLANGSCAN38_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS) > > +*_CLANGSCAN38_IA32_OBJCOPY_FLAGS = > > +*_CLANGSCAN38_IA32_NASM_FLAGS = -f elf32 > > + > > +############################## > > +# CLANGSCAN38 X64 definitions > > +############################## > > + > > +*_CLANGSCAN38_X64_OBJCOPY_PATH = > DEF(GCC49_X64_PREFIX)objcopy > > +*_CLANGSCAN38_X64_SCAN_PATH = > DEF(CLANG38_X64_PREFIX)scan-build > > +*_CLANGSCAN38_X64_SCAN_DST = DEF(SCAN_OUTPUT_PATH) > > +*_CLANGSCAN38_X64_CC_PATH = > DEF(CLANG38_X64_PREFIX)clang > > +*_CLANGSCAN38_X64_SLINK_PATH = > DEF(CLANG38_X64_PREFIX)llvm-ar > > +*_CLANGSCAN38_X64_DLINK_PATH = > DEF(CLANG38_X64_PREFIX)clang > > +*_CLANGSCAN38_X64_ASLDLINK_PATH = > DEF(CLANG38_X64_PREFIX)clang > > +*_CLANGSCAN38_X64_ASM_PATH = > DEF(CLANG38_X64_PREFIX)clang > > +*_CLANGSCAN38_X64_PP_PATH = > DEF(CLANG38_X64_PREFIX)clang > > +*_CLANGSCAN38_X64_VFRPP_PATH = > DEF(CLANG38_X64_PREFIX)clang > > +*_CLANGSCAN38_X64_ASLCC_PATH = > DEF(CLANG38_X64_PREFIX)clang > > +*_CLANGSCAN38_X64_ASLPP_PATH = > DEF(CLANG38_X64_PREFIX)clang > > +*_CLANGSCAN38_X64_RC_PATH = > DEF(GCC49_X64_PREFIX)objcopy > > + > > +*_CLANGSCAN38_X64_ASLCC_FLAGS = -x c -Os -m64 -target x86_64- > pc-linux-gnu -flto > > +*_CLANGSCAN38_X64_ASLDLINK_FLAGS = > DEF(CLANG38_ALL_DLINK_FLAGS) -Wl,-Oz -Wl,-melf_x86_64 -Wl,-- > entry,ReferenceAcpiTable -Wl,-u,ReferenceAcpiTable -Wl,-pie - > mcmodel=small > > +*_CLANGSCAN38_X64_ASM_FLAGS = DEF(GCC49_ASM_FLAGS) - > m64 -target x86_64-pc-linux-gnu > > +*_CLANGSCAN38_X64_SCAN_FLAGS = > DEF(CLANGSCAN38_ALL_CHECKER_FLAGS) > > +DEBUG_CLANGSCAN38_X64_CC_FLAGS = > DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" - > mno-red-zone -mcmodel=small -fpie -g -Oz -flto > > +RELEASE_CLANGSCAN38_X64_CC_FLAGS = > DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" - > mno-red-zone -mcmodel=small -fpie -Oz -flto > > +*_CLANGSCAN38_X64_DLINK_FLAGS = > DEF(CLANG38_ALL_DLINK_FLAGS) -Wl,-Oz -Wl,-melf_x86_64 -Wl,-- > oformat=elf64-x86-64 -Wl,-pie -mcmodel=small > > +*_CLANGSCAN38_X64_DLINK2_FLAGS = > DEF(CLANG38_X64_DLINK2_FLAGS) > > +*_CLANGSCAN38_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS) > > +*_CLANGSCAN38_X64_OBJCOPY_FLAGS = > > +*_CLANGSCAN38_X64_NASM_FLAGS = -f elf64 > > + > > > +############################################################# > ############################# > > +# > > +# GCC 5.3 - This configuration is used to compile under Linux to produce > > +# PE/COFF binaries using GCC 5.3 with link-time optimization and image > size optimization. > > +# Tested with GNU Binutils 2.26, e.g. ld 2.26 and gcc-ar 2.26 > > +# > > > +############################################################# > ############################# > > +DEFINE GCC53_IA32_PREFIX = ENV(GCC53_BIN) > > +DEFINE GCC53_X64_PREFIX = ENV(GCC53_BIN) > > + > > +*_GCC53_*_*_FAMILY = GCC > > +*_GCC53_*_*_BUILDRULEFAMILY = GCC53 > > +*_GCC53_*_MAKE_PATH = DEF(GCC53_IA32_PREFIX)make > > +*_GCC53_*_*_DLL = ENV(GCC53_DLL) > > +*_GCC53_*_ASL_PATH = DEF(UNIX_IASL_BIN) > > + > > +*_GCC53_*_PP_FLAGS = DEF(GCC_PP_FLAGS) > > +*_GCC53_*_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) > > +*_GCC53_*_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) > > +*_GCC53_*_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) > > +*_GCC53_*_APP_FLAGS = > > +*_GCC53_*_ASL_FLAGS = DEF(IASL_FLAGS) > > +*_GCC53_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) > > + > > +DEFINE GCC53_ALL_CC_FLAGS = -fshort-wchar -fno-strict-aliasing - > Wall -Werror -Wno-array-bounds -Wno-address -ffunction-sections -fdata- > sections -fno-stack-protector -c -include AutoGen.h -fno-common -fno- > builtin -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings -Wno-unused-but- > set-variable > > +DEFINE GCC53_IA32_CC_FLAGS = DEF(GCC53_ALL_CC_FLAGS) -m32 - > march=i586 -malign-double -D EFI32 -fno-asynchronous-unwind-tables > > +DEFINE GCC53_X64_CC_FLAGS = DEF(GCC53_ALL_CC_FLAGS) -m64 "- > DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fno- > asynchronous-unwind-tables -fpie > > + > > +DEFINE GCC53_ALL_DLINK_FLAGS = -Os -flto -nostdlib -Wl,-n -Wl,-q - > Wl,--gc-sections -z common-page-size=0x40 -Wl,-- > entry,$(IMAGE_ENTRY_POINT) -Wl,-u,$(IMAGE_ENTRY_POINT) -Wl,- > Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map > > +DEFINE GCC53_X64_DLINK2_FLAGS = -Wl,-- > defsym=PECOFF_HEADER_SIZE=0x228 -Wl,-- > script=$(EDK_TOOLS_PATH)/Scripts/GccBase.lds > > +DEFINE GCC53_IA32_DLINK2_FLAGS = -Wl,-- > defsym=PECOFF_HEADER_SIZE=0x220 -Wl,-- > script=$(EDK_TOOLS_PATH)/Scripts/GccBase.lds > > + > > +############################ > > +# GCC53 IA32 definitions > > +############################ > > +*_GCC53_IA32_OBJCOPY_PATH = DEF(GCC53_IA32_PREFIX)objcopy > > +*_GCC53_IA32_CC_PATH = DEF(GCC53_IA32_PREFIX)gcc > > +*_GCC53_IA32_SLINK_PATH = DEF(GCC53_IA32_PREFIX)gcc-ar > > +*_GCC53_IA32_DLINK_PATH = DEF(GCC53_IA32_PREFIX)gcc > > +*_GCC53_IA32_ASLDLINK_PATH = DEF(GCC53_IA32_PREFIX)ld > > +*_GCC53_IA32_ASM_PATH = DEF(GCC53_IA32_PREFIX)gcc > > +*_GCC53_IA32_PP_PATH = DEF(GCC53_IA32_PREFIX)gcc > > +*_GCC53_IA32_VFRPP_PATH = DEF(GCC53_IA32_PREFIX)gcc > > +*_GCC53_IA32_ASLCC_PATH = DEF(GCC53_IA32_PREFIX)gcc > > +*_GCC53_IA32_ASLPP_PATH = DEF(GCC53_IA32_PREFIX)gcc > > +*_GCC53_IA32_RC_PATH = DEF(GCC53_IA32_PREFIX)objcopy > > + > > +*_GCC53_IA32_ASLCC_FLAGS = DEF(GCC53_IA32_CC_FLAGS) -x c - > m32 > > +*_GCC53_IA32_ASLDLINK_FLAGS = > DEF(GCC49_IA32_X64_ASLDLINK_FLAGS) -m elf_i386 > > +*_GCC53_IA32_ASM_FLAGS = DEF(GCC49_ASM_FLAGS) -m32 - > march=i386 > > +*_GCC53_IA32_DLINK_FLAGS = DEF(GCC53_ALL_DLINK_FLAGS) -Wl,- > melf_i386 -Wl,--oformat=elf32-i386 > > +*_GCC53_IA32_DLINK2_FLAGS = DEF(GCC53_IA32_DLINK2_FLAGS) > > +*_GCC53_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS) > > +*_GCC53_IA32_OBJCOPY_FLAGS = > > +*_GCC53_IA32_NASM_FLAGS = -f elf32 > > + > > +DEBUG_GCC53_IA32_CC_FLAGS = DEF(GCC53_IA32_CC_FLAGS) -flto > -Os -g > > +RELEASE_GCC53_IA32_CC_FLAGS = DEF(GCC53_IA32_CC_FLAGS) -flto > -Os > > + > > +########################### > > +# GCC53 X64 definitions > > +########################### > > +*_GCC53_X64_OBJCOPY_PATH = DEF(GCC53_X64_PREFIX)objcopy > > +*_GCC53_X64_CC_PATH = DEF(GCC53_X64_PREFIX)gcc > > +*_GCC53_X64_SLINK_PATH = DEF(GCC53_X64_PREFIX)gcc-ar > > +*_GCC53_X64_DLINK_PATH = DEF(GCC53_X64_PREFIX)gcc > > +*_GCC53_X64_ASLDLINK_PATH = DEF(GCC53_X64_PREFIX)ld > > +*_GCC53_X64_ASM_PATH = DEF(GCC53_X64_PREFIX)gcc > > +*_GCC53_X64_PP_PATH = DEF(GCC53_X64_PREFIX)gcc > > +*_GCC53_X64_VFRPP_PATH = DEF(GCC53_X64_PREFIX)gcc > > +*_GCC53_X64_ASLCC_PATH = DEF(GCC53_X64_PREFIX)gcc > > +*_GCC53_X64_ASLPP_PATH = DEF(GCC53_X64_PREFIX)gcc > > +*_GCC53_X64_RC_PATH = DEF(GCC53_X64_PREFIX)objcopy > > + > > +*_GCC53_X64_ASLCC_FLAGS = DEF(GCC53_X64_CC_FLAGS) -x c - > m64 -Os > > +*_GCC53_X64_ASLDLINK_FLAGS = > DEF(GCC49_IA32_X64_ASLDLINK_FLAGS) -m elf_x86_64 -pie -Os > > +*_GCC53_X64_ASM_FLAGS = DEF(GCC49_ASM_FLAGS) -m64 > > +*_GCC53_X64_DLINK_FLAGS = DEF(GCC53_ALL_DLINK_FLAGS) -pie - > mcmodel=small -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 > > +*_GCC53_X64_DLINK2_FLAGS = DEF(GCC53_X64_DLINK2_FLAGS) > > +*_GCC53_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS) > > +*_GCC53_X64_OBJCOPY_FLAGS = > > +*_GCC53_X64_NASM_FLAGS = -f elf64 > > + > > +DEBUG_GCC53_X64_CC_FLAGS = DEF(GCC53_X64_CC_FLAGS) -flto - > Os -g > > +RELEASE_GCC53_X64_CC_FLAGS = DEF(GCC53_X64_CC_FLAGS) -flto - > Os > > -- > > 2.7.4 > > > > _______________________________________________ > > edk2-devel mailing list > > edk2-devel@lists.01.org > > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel