Jordan Justen [mailto:jordan.l.jus...@intel.com]  wrote:

]Sent: Tuesday, May 05, 2015 01:42 AM
]To: edk2-devel@lists.sourceforge.net; Scott Duplichan
]Subject: Re: [edk2] [PATCH] BaseTools: add support for gcc 5.1 tool chain
]
]With the new GCC versioning scheme, we should name it GCC5.
]
]https://gcc.gnu.org/develop.html#num_scheme
]
]On 2015-05-04 20:55:58, Scott Duplichan wrote:
]> BaseTools: Add support for gcc 5.1 tool chains.
]
]Why is this line not used in the subject of the email?
]
]But, I think it should be
]BaseTools: Add GCC5 toolchain

OK, that is good. I left the actual email subject line as-is
to avoid confusion. But the new patch below uses
"BaseTools: Add GCC5 toolchain" as the new single line summary.

]> Contributed-under: TianoCore Contribution Agreement 1.0
]> Signed-off-by: Scott Duplichan <sc...@notabs.org>
]> ---
]> 
]> Build testing with gcc 5.1.0 tool chains from:
]> http://sourceforge.net/projects/edk2developertoolsforwindows/
]> passes for valid combinations of RELEASE/DEBUG, X64/IA32/ARM/AARCH64
]> and Ovmf/App/IntelFsp/Duet/Shell/BeagleBoard/ArmPlatform/Emulator/
]> CorebootPayload packages. The GCC51 build of ArmJunoPkg fails at
]> line 114 of GenericWatchdogDxe.c due to a new warning for
]> discarded-array-qualifiers. Though this warning can be disabled,
]> it probably makes sense to leave it enabled. A separate patch
]> that adds a (VOID *) type cast solves the problem. The unneeded
]> ampersand on the same argument is not triggering a gcc warning.
]> 
]> Boot testing was done for the IA32 and X64 builds of CorebootPayloadPkg
]> using an ECS A780GM-M3 board.
]> 
]> The patch is based on the GCC49 tool chain. The only change is the
]> addition of compile flag -std=gnu89. This flag is added because with
]> gcc 5, the default mode for C is now -std=gnu11 instead of -std=gnu89.
]> Using the new default of gnu11 is undesirable because it would suppress
]> warnings about the use of C language features not supported by
]> Microsoft compilers.
]
]You should add this paragraph to the commit message.

OK, will do.

]Still no git patches?

It looks like EDK2 is planning an official change to git/gerrit
for submitting patches. I was thinking that would be a good time
for people like me (engineer from the PC OEM world) to switch.
Though SVN is losing ground to git in general, I believe a majority
of PC OEMs and IBVs still use SVN internally for EDK2 projects.

]-Jordan

Patch v1 follows...

BaseTools: Add GCC5 toolchain

The patch is based on the GCC49 tool chain. The only change is the
addition of compile flag -std=gnu89. This flag is added because with
gcc 5, the default mode for C is now -std=gnu11 instead of -std=gnu89.
Using the new default of gnu11 is undesirable because it would suppress
warnings about the use of C language features not supported by
Microsoft compilers.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Scott Duplichan <sc...@notabs.org>
---

Index: BaseTools/Conf/tools_def.template
===================================================================
--- BaseTools/Conf/tools_def.template   (revision 17347)
+++ BaseTools/Conf/tools_def.template   (working copy)
@@ -184,6 +184,9 @@
 DEFINE GCC49_IA32_PREFIX       = ENV(GCC49_BIN)
 DEFINE GCC49_X64_PREFIX        = ENV(GCC49_BIN)
 
+DEFINE GCC5_IA32_PREFIX        = ENV(GCC5_BIN)
+DEFINE GCC5_X64_PREFIX         = ENV(GCC5_BIN)
+
 DEFINE UNIX_IASL_BIN           = ENV(IASL_PREFIX)iasl
 DEFINE WIN_ASL_BIN_DIR         = C:\ASL
 DEFINE WIN_IASL_BIN            = DEF(WIN_ASL_BIN_DIR)\iasl.exe
@@ -344,6 +347,12 @@
 #                             Required to build platforms or ACPI tables:
 #                               Intel(r) ACPI Compiler v20101013 from
 #                               
http://www.acpica.org/downloads/previous_releases.php
+#   GCC5        -Linux,Windows-  Requires:
+#                             GCC 5 targeting x86_64-linux-gnu, 
aarch64-linux-gnu, or arm-linux-gnueabi
+#                        Optional:
+#                             Required to build platforms or ACPI tables:
+#                               Intel(r) ACPI Compiler v20101013 from
+#                               
http://www.acpica.org/downloads/previous_releases.php
 #   ELFGCC      -Linux-  Requires:
 #                             GCC(this tool chain uses whatever version of gcc 
and binutils that is installed in /usr/bin)
 #                        Optional:
@@ -3917,6 +3926,22 @@
 DEFINE GCC49_ARM_ASLDLINK_FLAGS      = DEF(GCC48_ARM_ASLDLINK_FLAGS)
 DEFINE GCC49_AARCH64_ASLDLINK_FLAGS  = DEF(GCC_ARM_AARCH64_ASLDLINK_FLAGS)
 
+DEFINE GCC5_IA32_CC_FLAGS            = DEF(GCC49_IA32_CC_FLAGS) -std=gnu89
+DEFINE GCC5_X64_CC_FLAGS             = DEF(GCC49_X64_CC_FLAGS) -std=gnu89
+DEFINE GCC5_IA32_X64_DLINK_COMMON    = -nostdlib -n -q --gc-sections 
--script=$(EDK_TOOLS_PATH)/Scripts/gcc4.9-ld-script
+DEFINE GCC5_IA32_X64_ASLDLINK_FLAGS  = DEF(GCC5_IA32_X64_DLINK_COMMON) --entry 
ReferenceAcpiTable -u ReferenceAcpiTable
+DEFINE GCC5_IA32_X64_DLINK_FLAGS     = DEF(GCC5_IA32_X64_DLINK_COMMON) --entry 
$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Map 
$(DEST_DIR_DEBUG)/$(BASE_NAME).map
+DEFINE GCC5_X64_DLINK_FLAGS          = DEF(GCC5_IA32_X64_DLINK_FLAGS)  
-melf_x86_64 --oformat=elf64-x86-64
+DEFINE GCC5_ASM_FLAGS                = DEF(GCC49_ASM_FLAGS)
+DEFINE GCC5_ARM_ASM_FLAGS            = DEF(GCC49_ARM_ASM_FLAGS)
+DEFINE GCC5_AARCH64_ASM_FLAGS        = DEF(GCC49_AARCH64_ASM_FLAGS)
+DEFINE GCC5_ARM_CC_FLAGS             = DEF(GCC49_ARM_CC_FLAGS)
+DEFINE GCC5_AARCH64_CC_FLAGS         = DEF(GCC49_AARCH64_CC_FLAGS)
+DEFINE GCC5_ARM_DLINK_FLAGS          = DEF(GCC49_ARM_DLINK_FLAGS)
+DEFINE GCC5_AARCH64_DLINK_FLAGS      = DEF(GCC_ARM_AARCH64_DLINK_COMMON)
+DEFINE GCC5_ARM_ASLDLINK_FLAGS       = DEF(GCC49_ARM_ASLDLINK_FLAGS)
+DEFINE GCC5_AARCH64_ASLDLINK_FLAGS   = DEF(GCC_ARM_AARCH64_ASLDLINK_FLAGS)
+
 
####################################################################################
 #
 # Unix GCC And Intel Linux ACPI Compiler
@@ -4610,6 +4635,129 @@
 
 
####################################################################################
 #
+# GCC 5 - This configuration is used to compile under Linux to produce
+#         PE/COFF binaries using GCC 5.
+#
+####################################################################################
+*_GCC5_*_*_FAMILY                = GCC
+
+*_GCC5_*_MAKE_PATH                     = DEF(GCC5_IA32_PREFIX)make
+*_GCC5_*_*_DLL                         = ENV(GCC5_DLL)
+*_GCC5_*_ASL_PATH                      = DEF(UNIX_IASL_BIN)
+
+*_GCC5_*_PP_FLAGS                      = DEF(GCC_PP_FLAGS)
+*_GCC5_*_ASLPP_FLAGS                   = DEF(GCC_ASLPP_FLAGS)
+*_GCC5_*_ASLCC_FLAGS                   = DEF(GCC_ASLCC_FLAGS)
+*_GCC5_*_VFRPP_FLAGS                   = DEF(GCC_VFRPP_FLAGS)
+*_GCC5_*_APP_FLAGS                     =
+*_GCC5_*_ASL_FLAGS                     = DEF(IASL_FLAGS)
+*_GCC5_*_ASL_OUTFLAGS                  = DEF(IASL_OUTFLAGS)
+
+##################
+# GCC5 IA32 definitions
+##################
+*_GCC5_IA32_OBJCOPY_PATH          = DEF(GCC5_IA32_PREFIX)objcopy
+*_GCC5_IA32_CC_PATH               = DEF(GCC5_IA32_PREFIX)gcc
+*_GCC5_IA32_SLINK_PATH            = DEF(GCC5_IA32_PREFIX)ar
+*_GCC5_IA32_DLINK_PATH            = DEF(GCC5_IA32_PREFIX)ld
+*_GCC5_IA32_ASLDLINK_PATH         = DEF(GCC5_IA32_PREFIX)ld
+*_GCC5_IA32_ASM_PATH              = DEF(GCC5_IA32_PREFIX)gcc
+*_GCC5_IA32_PP_PATH               = DEF(GCC5_IA32_PREFIX)gcc
+*_GCC5_IA32_VFRPP_PATH            = DEF(GCC5_IA32_PREFIX)gcc
+*_GCC5_IA32_ASLCC_PATH            = DEF(GCC5_IA32_PREFIX)gcc
+*_GCC5_IA32_ASLPP_PATH            = DEF(GCC5_IA32_PREFIX)gcc
+*_GCC5_IA32_RC_PATH               = DEF(GCC5_IA32_PREFIX)objcopy
+
+*_GCC5_IA32_ASLCC_FLAGS           = DEF(GCC_ASLCC_FLAGS) -m32
+*_GCC5_IA32_ASLDLINK_FLAGS        = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -m 
elf_i386
+*_GCC5_IA32_ASM_FLAGS             = DEF(GCC5_ASM_FLAGS) -m32 -march=i386
+*_GCC5_IA32_CC_FLAGS              = DEF(GCC5_IA32_CC_FLAGS) -Os
+*_GCC5_IA32_DLINK_FLAGS           = DEF(GCC5_IA32_X64_DLINK_FLAGS) -m elf_i386 
--oformat=elf32-i386
+*_GCC5_IA32_RC_FLAGS              = DEF(GCC_IA32_RC_FLAGS)
+*_GCC5_IA32_OBJCOPY_FLAGS         = 
+*_GCC5_IA32_NASM_FLAGS            = -f elf32
+
+##################
+# GCC5 X64 definitions
+##################
+*_GCC5_X64_OBJCOPY_PATH          = DEF(GCC5_X64_PREFIX)objcopy
+*_GCC5_X64_CC_PATH               = DEF(GCC5_X64_PREFIX)gcc
+*_GCC5_X64_SLINK_PATH            = DEF(GCC5_X64_PREFIX)ar
+*_GCC5_X64_DLINK_PATH            = DEF(GCC5_X64_PREFIX)ld
+*_GCC5_X64_ASLDLINK_PATH         = DEF(GCC5_X64_PREFIX)ld
+*_GCC5_X64_ASM_PATH              = DEF(GCC5_X64_PREFIX)gcc
+*_GCC5_X64_PP_PATH               = DEF(GCC5_X64_PREFIX)gcc
+*_GCC5_X64_VFRPP_PATH            = DEF(GCC5_X64_PREFIX)gcc
+*_GCC5_X64_ASLCC_PATH            = DEF(GCC5_X64_PREFIX)gcc
+*_GCC5_X64_ASLPP_PATH            = DEF(GCC5_X64_PREFIX)gcc
+*_GCC5_X64_RC_PATH               = DEF(GCC5_X64_PREFIX)objcopy
+
+*_GCC5_X64_ASLCC_FLAGS           = DEF(GCC_ASLCC_FLAGS) -m64
+*_GCC5_X64_ASLDLINK_FLAGS        = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -m 
elf_x86_64
+*_GCC5_X64_ASM_FLAGS             = DEF(GCC5_ASM_FLAGS) -m64
+*_GCC5_X64_CC_FLAGS              = DEF(GCC5_X64_CC_FLAGS)
+*_GCC5_X64_DLINK_FLAGS           = DEF(GCC5_X64_DLINK_FLAGS)
+*_GCC5_X64_RC_FLAGS              = DEF(GCC_X64_RC_FLAGS)
+*_GCC5_X64_OBJCOPY_FLAGS         = 
+*_GCC5_X64_NASM_FLAGS            = -f elf64
+
+##################
+# GCC5 ARM definitions
+##################
+*_GCC5_ARM_CC_PATH               = ENV(GCC5_ARM_PREFIX)gcc
+*_GCC5_ARM_SLINK_PATH            = ENV(GCC5_ARM_PREFIX)ar
+*_GCC5_ARM_DLINK_PATH            = ENV(GCC5_ARM_PREFIX)ld
+*_GCC5_ARM_ASLDLINK_PATH         = ENV(GCC5_ARM_PREFIX)ld
+*_GCC5_ARM_ASM_PATH              = ENV(GCC5_ARM_PREFIX)gcc
+*_GCC5_ARM_PP_PATH               = ENV(GCC5_ARM_PREFIX)gcc
+*_GCC5_ARM_VFRPP_PATH            = ENV(GCC5_ARM_PREFIX)gcc
+*_GCC5_ARM_ASLCC_PATH            = ENV(GCC5_ARM_PREFIX)gcc
+*_GCC5_ARM_ASLPP_PATH            = ENV(GCC5_ARM_PREFIX)gcc
+*_GCC5_ARM_RC_PATH               = ENV(GCC5_ARM_PREFIX)objcopy
+
+*_GCC5_ARM_ARCHCC_FLAGS          = -mthumb
+*_GCC5_ARM_PLATFORM_FLAGS        = -march=armv7-a
+
+*_GCC5_ARM_ASLCC_FLAGS           = DEF(GCC_ASLCC_FLAGS)
+*_GCC5_ARM_ASLDLINK_FLAGS        = DEF(GCC5_ARM_ASLDLINK_FLAGS)
+*_GCC5_ARM_ASM_FLAGS             = DEF(GCC5_ARM_ASM_FLAGS)
+*_GCC5_ARM_DLINK_FLAGS           = DEF(GCC5_ARM_DLINK_FLAGS)
+*_GCC5_ARM_PLATFORM_FLAGS        = -march=armv7-a
+*_GCC5_ARM_PP_FLAGS              = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) 
DEF(GCC_PP_FLAGS)
+*_GCC5_ARM_RC_FLAGS              = DEF(GCC_ARM_RC_FLAGS)
+*_GCC5_ARM_VFRPP_FLAGS           = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) 
DEF(GCC_VFRPP_FLAGS)
+
+  DEBUG_GCC5_ARM_CC_FLAGS        = DEF(GCC5_ARM_CC_FLAGS) -O0
+RELEASE_GCC5_ARM_CC_FLAGS        = DEF(GCC5_ARM_CC_FLAGS) 
-Wno-unused-but-set-variable
+
+##################
+# GCC5 AARCH64 definitions
+##################
+*_GCC5_AARCH64_CC_PATH           = ENV(GCC5_AARCH64_PREFIX)gcc
+*_GCC5_AARCH64_SLINK_PATH        = ENV(GCC5_AARCH64_PREFIX)ar
+*_GCC5_AARCH64_DLINK_PATH        = ENV(GCC5_AARCH64_PREFIX)ld
+*_GCC5_AARCH64_ASLDLINK_PATH     = ENV(GCC5_AARCH64_PREFIX)ld
+*_GCC5_AARCH64_ASM_PATH          = ENV(GCC5_AARCH64_PREFIX)gcc
+*_GCC5_AARCH64_PP_PATH           = ENV(GCC5_AARCH64_PREFIX)gcc
+*_GCC5_AARCH64_VFRPP_PATH        = ENV(GCC5_AARCH64_PREFIX)gcc
+*_GCC5_AARCH64_ASLCC_PATH        = ENV(GCC5_AARCH64_PREFIX)gcc
+*_GCC5_AARCH64_ASLPP_PATH        = ENV(GCC5_AARCH64_PREFIX)gcc
+*_GCC5_AARCH64_RC_PATH           = ENV(GCC5_AARCH64_PREFIX)objcopy
+
+*_GCC5_AARCH64_ASLCC_FLAGS       = DEF(GCC_ASLCC_FLAGS)
+*_GCC5_AARCH64_ASLDLINK_FLAGS    = DEF(GCC5_AARCH64_ASLDLINK_FLAGS)
+*_GCC5_AARCH64_ASM_FLAGS         = DEF(GCC5_AARCH64_ASM_FLAGS)
+*_GCC5_AARCH64_DLINK_FLAGS       = DEF(GCC5_AARCH64_DLINK_FLAGS)
+*_GCC5_AARCH64_PLATFORM_FLAGS    =
+*_GCC5_AARCH64_PP_FLAGS          = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) 
DEF(GCC_PP_FLAGS)
+*_GCC5_AARCH64_RC_FLAGS          = DEF(GCC_AARCH64_RC_FLAGS)
+*_GCC5_AARCH64_VFRPP_FLAGS       = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) 
DEF(GCC_VFRPP_FLAGS)
+
+  DEBUG_GCC5_AARCH64_CC_FLAGS    = DEF(GCC5_AARCH64_CC_FLAGS) -O0
+RELEASE_GCC5_AARCH64_CC_FLAGS    = DEF(GCC5_AARCH64_CC_FLAGS) 
-Wno-unused-but-set-variable
+
+####################################################################################
+#
 # Cygwin GCC And Intel ACPI Compiler
 #
 
####################################################################################

Attachment: gcc5-v2.patch
Description: Binary data

------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to