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

Reply via email to