From: Andrew Fish [mailto:af...@apple.com]
Sent: Tuesday, July 14, 2015 05:24 PM
To: Scott Duplichan
Cc: edk2-devel@lists.sourceforge.net
Subject: Re: [edk2] [PATCH] BaseTools: Add mechanism to override or add CC_FLAGS
On Jul 14, 2015, at 9:46 AM, Scott Duplichan <sc...@notabs.org
<mailto:sc...@notabs.org> > wrote:
BaseTools: Add mechanism to override or add CC_FLAGS
If environment variable MSFT_EXTRA_CC_FLAGS exists, its contents
are appended to the C compiler flags string for MSFT and INTEL tool
chains. If environment variable GCC_EXTRA_CC_FLAGS exists, its
contents are appended to the C compiler flags string for GCC and
RVCT tool chains.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Scott Duplichan <sc...@notabs.org <mailto:sc...@notabs.org> >
---
This patch must be applied after the gcc49lto. Setting environment
variable GCC_EXTRA_CC_FLAGS=-Wno-error overrides the gcc warnings as
error option so that gcc lto builds can finish and generate a complete
list of warnings. A similar option is added for Microsoft tool chains.
Set environment variable MSFT_EXTRA_CC_FLAGS=/WX- to override warning
as error for Microsoft tool chains. These settings are also useful for
overnight batch building of many EDK2 projects. By overriding warning as
error, the build will continue after a warning is encountered, allowing
more files to be processed.
BaseTools/Conf/build_rule.template | 4 ++--
BaseTools/Conf/tools_def.template | 30 ++++++++++++++++++------------
2 files changed, 20 insertions(+), 14 deletions(-)
diff --git a/BaseTools/Conf/build_rule.template
b/BaseTools/Conf/build_rule.template
index 86ea464..e9802ea 100644
--- a/BaseTools/Conf/build_rule.template
+++ b/BaseTools/Conf/build_rule.template
@@ -128,11 +128,11 @@
$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
<Command.MSFT, Command.INTEL>
- "$(CC)" /Fo${dst} $(CC_FLAGS) $(INC) ${src}
+ "$(CC)" /Fo${dst} $(CC_FLAGS) $(MSFT_EXTRA_CC_FLAGS) $(INC) ${src}
<Command.GCC, Command.RVCT>
# For RVCTCYGWIN CC_FLAGS must be first to work around pathing issues
- "$(CC)" $(CC_FLAGS) -o ${dst} $(INC) ${src}
+ "$(CC)" $(CC_FLAGS) $(GCC_EXTRA_CC_FLAGS) -o ${dst} $(INC) ${src}
Why do you need to update the rules files? You could just do this in the
tools_def file.
Hello Andrew,
I use a batch file to run overnight test builds using all Microsoft and GCC
tool chains.
I try to run it weekly to find new build failures. I also run it to check my
own patches.
I would like for this batch file to temporarily disable warning as error during
its
builds. With t environment method of this patch, two batch file lines do the
job. To
do it with tools_def.txt might not be easy. For Windows, I would have to use a
sed
port, or learn to use powershell. Then I suppose I could do a global search and
replace
of /WX for the Windows case. For gcc, I could do a global search and replace of
-Werror. So it certainly can be done that way, but it is more complicated.
Thanks,
Scott
PLATFORM_FLAGS is an example of how to do this?
https://svn.code.sf.net/p/edk2/code/trunk/edk2/BaseTools/Conf/tools_def.template
*_GCC46_ARM_PLATFORM_FLAGS = -march=armv7-a
DEFINE GCC46_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS)
DEF(GCC44_ALL_CC_FLAGS) DEF(GCC_ARM_CC_FLAGS) -fstack-protector
DEBUG_GCC46_ARM_CC_FLAGS = DEF(GCC46_ARM_CC_FLAGS) -O0
RELEASE_GCC46_ARM_CC_FLAGS = DEF(GCC46_ARM_CC_FLAGS)
-Wno-unused-but-set-variable
Thanks,
Andrew Fish
<Command.ARMGCC, Command.ARMLINUXGCC, command.XCODE>
"$(CC)" $(CC_FLAGS) -o ${dst} $(INC) ${src}
diff --git a/BaseTools/Conf/tools_def.template
b/BaseTools/Conf/tools_def.template
index 8d1b319..fa98b66 100644
--- a/BaseTools/Conf/tools_def.template
+++ b/BaseTools/Conf/tools_def.template
@@ -4692,9 +4692,9 @@ RELEASE_GCC49_AARCH64_CC_FLAGS =
DEF(GCC49_AARCH64_CC_FLAGS) -Wno-unused-but-s
DEBUG_GCC49LTO_IA32_CC_FLAGS = DEF(GCC49LTO_IA32_BASE_CC_FLAGS)
DEF(GCC49LTO_IA32_DEBUG_FLAGS) -c
RELEASE_GCC49LTO_IA32_CC_FLAGS = DEF(GCC49LTO_IA32_BASE_CC_FLAGS)
DEF(GCC49LTO_IA32_RELEASE_FLAGS) -c
NOOPT_GCC49LTO_IA32_CC_FLAGS = DEF(GCC49LTO_IA32_BASE_CC_FLAGS)
DEF(GCC49LTO_IA32_NOOPT_FLAGS) -c
- DEBUG_GCC49LTO_IA32_DLINK_FLAGS = DEF(GCC49LTO_IA32_DLINK_FLAGS)
DEF(GCC49LTO_IA32_BASE_CC_FLAGS) DEF(GCC49LTO_IA32_DEBUG_FLAGS)
-RELEASE_GCC49LTO_IA32_DLINK_FLAGS = DEF(GCC49LTO_IA32_DLINK_FLAGS)
DEF(GCC49LTO_IA32_BASE_CC_FLAGS) DEF(GCC49LTO_IA32_RELEASE_FLAGS)
- NOOPT_GCC49LTO_IA32_DLINK_FLAGS = DEF(GCC49LTO_IA32_DLINK_FLAGS)
DEF(GCC49LTO_IA32_BASE_CC_FLAGS) DEF(GCC49LTO_IA32_NOOPT_FLAGS)
+ DEBUG_GCC49LTO_IA32_DLINK_FLAGS = DEF(GCC49LTO_IA32_DLINK_FLAGS)
DEF(GCC49LTO_IA32_BASE_CC_FLAGS) DEF(GCC49LTO_IA32_DEBUG_FLAGS)
ENV(GCC_EXTRA_CC_FLAGS)
+RELEASE_GCC49LTO_IA32_DLINK_FLAGS = DEF(GCC49LTO_IA32_DLINK_FLAGS)
DEF(GCC49LTO_IA32_BASE_CC_FLAGS) DEF(GCC49LTO_IA32_RELEASE_FLAGS)
ENV(GCC_EXTRA_CC_FLAGS)
+ NOOPT_GCC49LTO_IA32_DLINK_FLAGS = DEF(GCC49LTO_IA32_DLINK_FLAGS)
DEF(GCC49LTO_IA32_BASE_CC_FLAGS) DEF(GCC49LTO_IA32_NOOPT_FLAGS)
ENV(GCC_EXTRA_CC_FLAGS)
*_GCC49LTO_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS)
*_GCC49LTO_IA32_OBJCOPY_FLAGS =
*_GCC49LTO_IA32_NASM_FLAGS = -f elf32
@@ -4720,9 +4720,9 @@ RELEASE_GCC49LTO_IA32_DLINK_FLAGS =
DEF(GCC49LTO_IA32_DLINK_FLAGS) DEF(GCC49L
DEBUG_GCC49LTO_X64_CC_FLAGS = DEF(GCC49LTO_X64_BASE_CC_FLAGS)
DEF(GCC49LTO_X64_DEBUG_FLAGS) -c
RELEASE_GCC49LTO_X64_CC_FLAGS = DEF(GCC49LTO_X64_BASE_CC_FLAGS)
DEF(GCC49LTO_X64_RELEASE_FLAGS) -c
NOOPT_GCC49LTO_X64_CC_FLAGS = DEF(GCC49LTO_X64_BASE_CC_FLAGS)
DEF(GCC49LTO_X64_NOOPT_FLAGS) -c
- DEBUG_GCC49LTO_X64_DLINK_FLAGS = DEF(GCC49LTO_X64_DLINK_FLAGS)
DEF(GCC49LTO_X64_BASE_CC_FLAGS) DEF(GCC49LTO_X64_DEBUG_FLAGS)
-RELEASE_GCC49LTO_X64_DLINK_FLAGS = DEF(GCC49LTO_X64_DLINK_FLAGS)
DEF(GCC49LTO_X64_BASE_CC_FLAGS) DEF(GCC49LTO_X64_RELEASE_FLAGS)
- NOOPT_GCC49LTO_X64_DLINK_FLAGS = DEF(GCC49LTO_X64_DLINK_FLAGS)
DEF(GCC49LTO_X64_BASE_CC_FLAGS) DEF(GCC49LTO_X64_NOOPT_FLAGS)
+ DEBUG_GCC49LTO_X64_DLINK_FLAGS = DEF(GCC49LTO_X64_DLINK_FLAGS)
DEF(GCC49LTO_X64_BASE_CC_FLAGS) DEF(GCC49LTO_X64_DEBUG_FLAGS)
ENV(GCC_EXTRA_CC_FLAGS)
+RELEASE_GCC49LTO_X64_DLINK_FLAGS = DEF(GCC49LTO_X64_DLINK_FLAGS)
DEF(GCC49LTO_X64_BASE_CC_FLAGS) DEF(GCC49LTO_X64_RELEASE_FLAGS)
ENV(GCC_EXTRA_CC_FLAGS)
+ NOOPT_GCC49LTO_X64_DLINK_FLAGS = DEF(GCC49LTO_X64_DLINK_FLAGS)
DEF(GCC49LTO_X64_BASE_CC_FLAGS) DEF(GCC49LTO_X64_NOOPT_FLAGS)
ENV(GCC_EXTRA_CC_FLAGS)
*_GCC49LTO_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS)
*_GCC49LTO_X64_OBJCOPY_FLAGS =
*_GCC49LTO_X64_NASM_FLAGS = -f elf64
@@ -4756,9 +4756,9 @@ RELEASE_GCC49LTO_X64_DLINK_FLAGS =
DEF(GCC49LTO_X64_DLINK_FLAGS) DEF(GCC49LT
DEBUG_GCC49LTO_ARM_CC_FLAGS = DEF(GCC49LTO_ARM_BASE_CC_FLAGS)
DEF(GCC49LTO_ARM_DEBUG_FLAGS) -c
RELEASE_GCC49LTO_ARM_CC_FLAGS = DEF(GCC49LTO_ARM_BASE_CC_FLAGS)
DEF(GCC49LTO_ARM_RELEASE_FLAGS) -c
NOOPT_GCC49LTO_ARM_CC_FLAGS = DEF(GCC49LTO_ARM_BASE_CC_FLAGS)
DEF(GCC49LTO_ARM_NOOPT_FLAGS) -c
- DEBUG_GCC49LTO_ARM_DLINK_FLAGS = DEF(GCC49LTO_ARM_DLINK_FLAGS)
DEF(GCC49LTO_ARM_BASE_CC_FLAGS) DEF(GCC49LTO_ARM_DEBUG_FLAGS)
-RELEASE_GCC49LTO_ARM_DLINK_FLAGS = DEF(GCC49LTO_ARM_DLINK_FLAGS)
DEF(GCC49LTO_ARM_BASE_CC_FLAGS) DEF(GCC49LTO_ARM_RELEASE_FLAGS)
- NOOPT_GCC49LTO_ARM_DLINK_FLAGS = DEF(GCC49LTO_ARM_DLINK_FLAGS)
DEF(GCC49LTO_ARM_BASE_CC_FLAGS) DEF(GCC49LTO_ARM_NOOPT_FLAGS)
+ DEBUG_GCC49LTO_ARM_DLINK_FLAGS = DEF(GCC49LTO_ARM_DLINK_FLAGS)
DEF(GCC49LTO_ARM_BASE_CC_FLAGS) DEF(GCC49LTO_ARM_DEBUG_FLAGS)
ENV(GCC_EXTRA_CC_FLAGS)
+RELEASE_GCC49LTO_ARM_DLINK_FLAGS = DEF(GCC49LTO_ARM_DLINK_FLAGS)
DEF(GCC49LTO_ARM_BASE_CC_FLAGS) DEF(GCC49LTO_ARM_RELEASE_FLAGS)
ENV(GCC_EXTRA_CC_FLAGS)
+ NOOPT_GCC49LTO_ARM_DLINK_FLAGS = DEF(GCC49LTO_ARM_DLINK_FLAGS)
DEF(GCC49LTO_ARM_BASE_CC_FLAGS) DEF(GCC49LTO_ARM_NOOPT_FLAGS)
ENV(GCC_EXTRA_CC_FLAGS)
##################
# GCC49LTO AARCH64 definitions
@@ -4785,9 +4785,9 @@ RELEASE_GCC49LTO_ARM_DLINK_FLAGS =
DEF(GCC49LTO_ARM_DLINK_FLAGS) DEF(GCC49LT
DEBUG_GCC49LTO_AARCH64_CC_FLAGS = DEF(GCC49LTO_AARCH64_BASE_CC_FLAGS)
DEF(GCC49LTO_AARCH64_DEBUG_FLAGS) -c
RELEASE_GCC49LTO_AARCH64_CC_FLAGS = DEF(GCC49LTO_AARCH64_BASE_CC_FLAGS)
DEF(GCC49LTO_AARCH64_RELEASE_FLAGS) -c
NOOPT_GCC49LTO_AARCH64_CC_FLAGS = DEF(GCC49LTO_AARCH64_BASE_CC_FLAGS)
DEF(GCC49LTO_AARCH64_NOOPT_FLAGS) -c
- DEBUG_GCC49LTO_AARCH64_DLINK_FLAGS = DEF(GCC49LTO_AARCH64_DLINK_FLAGS)
DEF(GCC49LTO_AARCH64_BASE_CC_FLAGS) DEF(GCC49LTO_AARCH64_DEBUG_FLAGS)
-RELEASE_GCC49LTO_AARCH64_DLINK_FLAGS = DEF(GCC49LTO_AARCH64_DLINK_FLAGS)
DEF(GCC49LTO_AARCH64_BASE_CC_FLAGS) DEF(GCC49LTO_AARCH64_RELEASE_FLAGS)
- NOOPT_GCC49LTO_AARCH64_DLINK_FLAGS = DEF(GCC49LTO_AARCH64_DLINK_FLAGS)
DEF(GCC49LTO_AARCH64_BASE_CC_FLAGS) DEF(GCC49LTO_AARCH64_NOOPT_FLAGS)
+ DEBUG_GCC49LTO_AARCH64_DLINK_FLAGS = DEF(GCC49LTO_AARCH64_DLINK_FLAGS)
DEF(GCC49LTO_AARCH64_BASE_CC_FLAGS) DEF(GCC49LTO_AARCH64_DEBUG_FLAGS)
ENV(GCC_EXTRA_CC_FLAGS)
+RELEASE_GCC49LTO_AARCH64_DLINK_FLAGS = DEF(GCC49LTO_AARCH64_DLINK_FLAGS)
DEF(GCC49LTO_AARCH64_BASE_CC_FLAGS) DEF(GCC49LTO_AARCH64_RELEASE_FLAGS)
ENV(GCC_EXTRA_CC_FLAGS)
+ NOOPT_GCC49LTO_AARCH64_DLINK_FLAGS = DEF(GCC49LTO_AARCH64_DLINK_FLAGS)
DEF(GCC49LTO_AARCH64_BASE_CC_FLAGS) DEF(GCC49LTO_AARCH64_NOOPT_FLAGS)
ENV(GCC_EXTRA_CC_FLAGS)
####################################################################################
#
@@ -7129,3 +7129,9 @@ RELEASE_ARMLINUXGCC_AARCH64_CC_FLAGS = $(ARCHCC_FLAGS)
$(PLATFORM_FLAGS) DEF(GCC
# Build rule order
#################
*_*_*_*_BUILDRULEORDER = nasm asm Asm ASM S s
+
+#################
+# Extra C compiler flags
+#################
+*_*_*_*_MSFT_EXTRA_CC_FLAGS = ENV(MSFT_EXTRA_CC_FLAGS)
+*_*_*_*_GCC_EXTRA_CC_FLAGS = ENV(GCC_EXTRA_CC_FLAGS)
------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net <mailto:edk2-devel@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/edk2-devel
------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel