Message ID | 1470148772-15712-2-git-send-email-ard.biesheuvel@linaro.org |
---|---|
State | New |
Headers | show |
On Tue, Aug 02, 2016 at 04:39:30PM +0200, Ard Biesheuvel wrote: > In order to be able to share the compiler flags with the linker (which > is required for LTO since it involves the linker doing code generation > based on the LTO bytecode), move the -c GCC argument to the build rules, > and drop it from the GCC CC_FLAGS definitions in tools_def. > > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> > --- > BaseTools/Conf/build_rule.template | 16 +++++++++------- > BaseTools/Conf/tools_def.template | 10 +++++----- > 2 files changed, 14 insertions(+), 12 deletions(-) > > diff --git a/BaseTools/Conf/build_rule.template b/BaseTools/Conf/build_rule.template > index 9adf3918e42e..7d9f8ca075c2 100644 > --- a/BaseTools/Conf/build_rule.template > +++ b/BaseTools/Conf/build_rule.template > @@ -130,7 +130,10 @@ > <Command.MSFT, Command.INTEL> > "$(CC)" /Fo${dst} $(CC_FLAGS) $(INC) ${src} > > - <Command.GCC, Command.GCCLD, Command.RVCT> > + <Command.GCC, Command.GCCLD> > + "$(CC)" $(CC_FLAGS) -c -o ${dst} $(INC) ${src} > + > + <Command.RVCT> Apart from the slightly larger patch set, is there any reason not to split out the RVCT handling here and fix up tools_def.template for it too? / Leif > # For RVCTCYGWIN CC_FLAGS must be first to work around pathing issues > "$(CC)" $(CC_FLAGS) -o ${dst} $(INC) ${src} > > @@ -156,9 +159,8 @@ > <Command.MSFT, Command.INTEL> > "$(CC)" /Fo${dst} $(CC_FLAGS) $(INC) ${src} > > - <Command.GCC, Command.GCCLD, Command.RVCT> > - # For RVCTCYGWIN CC_FLAGS must be first to work around pathing issues > - "$(CC)" $(CC_FLAGS) -o ${dst} $(INC) ${src} > + <Command.GCC, Command.GCCLD> > + "$(CC)" $(CC_FLAGS) -c -o ${dst} $(INC) ${src} > "$(SYMRENAME)" $(SYMRENAME_FLAGS) ${dst} > > [C-Code-File.BASE.AARCH64,C-Code-File.SEC.AARCH64,C-Code-File.PEI_CORE.AARCH64,C-Code-File.PEIM.AARCH64] > @@ -172,7 +174,7 @@ > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj > > <Command.GCC, Command.GCCLD> > - "$(CC)" $(CC_FLAGS) $(CC_XIPFLAGS) -o ${dst} $(INC) ${src} > + "$(CC)" $(CC_FLAGS) $(CC_XIPFLAGS) -c -o ${dst} $(INC) ${src} > > [C-Header-File] > <InputFile> > @@ -446,7 +448,7 @@ > "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS) > > <Command.GCC, Command.GCCLD> > - "$(ASLCC)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(ASLCC_FLAGS) $(INC) ${src} > + "$(ASLCC)" -c -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(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) > > @@ -466,7 +468,7 @@ > "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS) > > <Command.GCC, Command.GCCLD> > - "$(ASLCC)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(ASLCC_FLAGS) $(INC) ${src} > + "$(ASLCC)" -c -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(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) > > diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template > index fd9eccb9b92a..289e75cc3be6 100644 > --- a/BaseTools/Conf/tools_def.template > +++ b/BaseTools/Conf/tools_def.template > @@ -4330,7 +4330,7 @@ NOOPT_DDK3790xASL_IPF_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF > DEBUG_*_*_OBJCOPY_ADDDEBUGFLAG = --add-gnu-debuglink=$(DEBUG_DIR)/$(MODULE_NAME).debug > RELEASE_*_*_OBJCOPY_ADDDEBUGFLAG = > > -DEFINE GCC_ALL_CC_FLAGS = -g -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -c -include AutoGen.h -fno-common > +DEFINE GCC_ALL_CC_FLAGS = -g -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -include AutoGen.h -fno-common > DEFINE GCC_IA32_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -m32 -malign-double -freorder-blocks -freorder-blocks-and-partition -O2 -mno-stack-arg-probe > DEFINE GCC_X64_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mno-red-zone -Wno-address -mno-stack-arg-probe > DEFINE GCC_IPF_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -minline-int-divide-min-latency > @@ -4362,7 +4362,7 @@ DEFINE GCC_IPF_RC_FLAGS = -I binary -O elf64-ia64-little -B ia64 > DEFINE GCC_ARM_RC_FLAGS = -I binary -O elf32-littlearm -B arm --rename-section .data=.hii > DEFINE GCC_AARCH64_RC_FLAGS = -I binary -O elf64-littleaarch64 -B aarch64 --rename-section .data=.hii > > -DEFINE GCC44_ALL_CC_FLAGS = -g -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -c -include AutoGen.h -fno-common -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings > +DEFINE GCC44_ALL_CC_FLAGS = -g -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -include AutoGen.h -fno-common -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings > DEFINE GCC44_IA32_CC_FLAGS = DEF(GCC44_ALL_CC_FLAGS) -m32 -march=i586 -malign-double -fno-stack-protector -D EFI32 -fno-asynchronous-unwind-tables > DEFINE GCC44_X64_CC_FLAGS = DEF(GCC44_ALL_CC_FLAGS) -m64 -fno-stack-protector "-DEFIAPI=__attribute__((ms_abi))" -Os -maccumulate-outgoing-args -mno-red-zone -Wno-address -mcmodel=small -fpie -fno-asynchronous-unwind-tables > DEFINE GCC44_IA32_X64_DLINK_COMMON = -nostdlib -Wl,-n,-q,--gc-sections -z common-page-size=0x20 > @@ -5677,7 +5677,7 @@ RELEASE_CLANG35_AARCH64_CC_FLAGS = DEF(CLANG35_AARCH64_CC_FLAGS) $(ARCHCC_FLAGS) > *_ELFGCC_IA32_ASLDLINK_PATH = DEF(ELFGCC_BIN)/ld > *_ELFGCC_IA32_RC_PATH = DEF(ELFGCC_BIN)/objcopy > > -*_ELFGCC_IA32_CC_FLAGS = -m32 -g -fshort-wchar -fno-strict-aliasing -Wall -malign-double -c -include $(DEST_DIR_DEBUG)/AutoGen.h -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings > +*_ELFGCC_IA32_CC_FLAGS = -m32 -g -fshort-wchar -fno-strict-aliasing -Wall -malign-double -include $(DEST_DIR_DEBUG)/AutoGen.h -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings > *_ELFGCC_IA32_SLINK_FLAGS = > *_ELFGCC_IA32_DLINK_FLAGS = -melf_i386 -nostdlib --shared --entry $(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map > #*_ELFGCC_IA32_DLINK_FLAGS = -melf_i386 -nostdlib -n -q -Ttext 0x220 --entry $(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) > @@ -5702,7 +5702,7 @@ RELEASE_CLANG35_AARCH64_CC_FLAGS = DEF(CLANG35_AARCH64_CC_FLAGS) $(ARCHCC_FLAGS) > *_ELFGCC_X64_VFRPP_PATH = DEF(ELFGCC_BIN)/gcc > *_ELFGCC_X64_RC_PATH = DEF(ELFGCC_BIN)/objcopy > > -*_ELFGCC_X64_CC_FLAGS = -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-address -Wno-array-bounds -c -include AutoGen.h -D_EFI_P64 > +*_ELFGCC_X64_CC_FLAGS = -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-address -Wno-array-bounds -include AutoGen.h -D_EFI_P64 > *_ELFGCC_X64_DLINK_FLAGS = -nostdlib --shared --entry $(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map > *_ELFGCC_X64_SLINK_FLAGS = > *_ELFGCC_X64_ASM_FLAGS = -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h > @@ -5725,7 +5725,7 @@ RELEASE_CLANG35_AARCH64_CC_FLAGS = DEF(CLANG35_AARCH64_CC_FLAGS) $(ARCHCC_FLAGS) > *_ELFGCC_IPF_VFRPP_PATH = DEF(ELFGCC_BIN)/gcc > *_ELFGCC_IPF_RC_PATH = DEF(ELFGCC_BIN)/objcopy > > -*_ELFGCC_IPF_CC_FLAGS = -Os -fshort-wchar -Wall -Werror -c -include AutoGen.h -D_EFI_P64 > +*_ELFGCC_IPF_CC_FLAGS = -Os -fshort-wchar -Wall -Werror -include AutoGen.h -D_EFI_P64 > *_ELFGCC_IPF_DLINK_FLAGS = -nostdlib --shared --entry $(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map > *_ELFGCC_IPF_SLINK_FLAGS = > *_ELFGCC_IPF_ASM_FLAGS = -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h > -- > 2.7.4 > _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
On 2 August 2016 at 17:01, Leif Lindholm <leif.lindholm@linaro.org> wrote: > On Tue, Aug 02, 2016 at 04:39:30PM +0200, Ard Biesheuvel wrote: >> In order to be able to share the compiler flags with the linker (which >> is required for LTO since it involves the linker doing code generation >> based on the LTO bytecode), move the -c GCC argument to the build rules, >> and drop it from the GCC CC_FLAGS definitions in tools_def. >> >> Contributed-under: TianoCore Contribution Agreement 1.0 >> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> >> --- >> BaseTools/Conf/build_rule.template | 16 +++++++++------- >> BaseTools/Conf/tools_def.template | 10 +++++----- >> 2 files changed, 14 insertions(+), 12 deletions(-) >> >> diff --git a/BaseTools/Conf/build_rule.template b/BaseTools/Conf/build_rule.template >> index 9adf3918e42e..7d9f8ca075c2 100644 >> --- a/BaseTools/Conf/build_rule.template >> +++ b/BaseTools/Conf/build_rule.template >> @@ -130,7 +130,10 @@ >> <Command.MSFT, Command.INTEL> >> "$(CC)" /Fo${dst} $(CC_FLAGS) $(INC) ${src} >> >> - <Command.GCC, Command.GCCLD, Command.RVCT> >> + <Command.GCC, Command.GCCLD> >> + "$(CC)" $(CC_FLAGS) -c -o ${dst} $(INC) ${src} >> + >> + <Command.RVCT> > > Apart from the slightly larger patch set, is there any reason not to > split out the RVCT handling here and fix up tools_def.template for it > too? > In what sense do we need to fix up tools_def for RVCT? _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
On 2 August 2016 at 17:02, Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote: > On 2 August 2016 at 17:01, Leif Lindholm <leif.lindholm@linaro.org> wrote: >> On Tue, Aug 02, 2016 at 04:39:30PM +0200, Ard Biesheuvel wrote: >>> In order to be able to share the compiler flags with the linker (which >>> is required for LTO since it involves the linker doing code generation >>> based on the LTO bytecode), move the -c GCC argument to the build rules, >>> and drop it from the GCC CC_FLAGS definitions in tools_def. >>> >>> Contributed-under: TianoCore Contribution Agreement 1.0 >>> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> >>> --- >>> BaseTools/Conf/build_rule.template | 16 +++++++++------- >>> BaseTools/Conf/tools_def.template | 10 +++++----- >>> 2 files changed, 14 insertions(+), 12 deletions(-) >>> >>> diff --git a/BaseTools/Conf/build_rule.template b/BaseTools/Conf/build_rule.template >>> index 9adf3918e42e..7d9f8ca075c2 100644 >>> --- a/BaseTools/Conf/build_rule.template >>> +++ b/BaseTools/Conf/build_rule.template >>> @@ -130,7 +130,10 @@ >>> <Command.MSFT, Command.INTEL> >>> "$(CC)" /Fo${dst} $(CC_FLAGS) $(INC) ${src} >>> >>> - <Command.GCC, Command.GCCLD, Command.RVCT> >>> + <Command.GCC, Command.GCCLD> >>> + "$(CC)" $(CC_FLAGS) -c -o ${dst} $(INC) ${src} >>> + >>> + <Command.RVCT> >> >> Apart from the slightly larger patch set, is there any reason not to >> split out the RVCT handling here and fix up tools_def.template for it >> too? >> OK, i get it now. That actually simplifies the patch, since I don't need to split off RVCT in build_rules then _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
diff --git a/BaseTools/Conf/build_rule.template b/BaseTools/Conf/build_rule.template index 9adf3918e42e..7d9f8ca075c2 100644 --- a/BaseTools/Conf/build_rule.template +++ b/BaseTools/Conf/build_rule.template @@ -130,7 +130,10 @@ <Command.MSFT, Command.INTEL> "$(CC)" /Fo${dst} $(CC_FLAGS) $(INC) ${src} - <Command.GCC, Command.GCCLD, Command.RVCT> + <Command.GCC, Command.GCCLD> + "$(CC)" $(CC_FLAGS) -c -o ${dst} $(INC) ${src} + + <Command.RVCT> # For RVCTCYGWIN CC_FLAGS must be first to work around pathing issues "$(CC)" $(CC_FLAGS) -o ${dst} $(INC) ${src} @@ -156,9 +159,8 @@ <Command.MSFT, Command.INTEL> "$(CC)" /Fo${dst} $(CC_FLAGS) $(INC) ${src} - <Command.GCC, Command.GCCLD, Command.RVCT> - # For RVCTCYGWIN CC_FLAGS must be first to work around pathing issues - "$(CC)" $(CC_FLAGS) -o ${dst} $(INC) ${src} + <Command.GCC, Command.GCCLD> + "$(CC)" $(CC_FLAGS) -c -o ${dst} $(INC) ${src} "$(SYMRENAME)" $(SYMRENAME_FLAGS) ${dst} [C-Code-File.BASE.AARCH64,C-Code-File.SEC.AARCH64,C-Code-File.PEI_CORE.AARCH64,C-Code-File.PEIM.AARCH64] @@ -172,7 +174,7 @@ $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj <Command.GCC, Command.GCCLD> - "$(CC)" $(CC_FLAGS) $(CC_XIPFLAGS) -o ${dst} $(INC) ${src} + "$(CC)" $(CC_FLAGS) $(CC_XIPFLAGS) -c -o ${dst} $(INC) ${src} [C-Header-File] <InputFile> @@ -446,7 +448,7 @@ "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS) <Command.GCC, Command.GCCLD> - "$(ASLCC)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(ASLCC_FLAGS) $(INC) ${src} + "$(ASLCC)" -c -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(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) @@ -466,7 +468,7 @@ "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS) <Command.GCC, Command.GCCLD> - "$(ASLCC)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(ASLCC_FLAGS) $(INC) ${src} + "$(ASLCC)" -c -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(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) diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template index fd9eccb9b92a..289e75cc3be6 100644 --- a/BaseTools/Conf/tools_def.template +++ b/BaseTools/Conf/tools_def.template @@ -4330,7 +4330,7 @@ NOOPT_DDK3790xASL_IPF_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF DEBUG_*_*_OBJCOPY_ADDDEBUGFLAG = --add-gnu-debuglink=$(DEBUG_DIR)/$(MODULE_NAME).debug RELEASE_*_*_OBJCOPY_ADDDEBUGFLAG = -DEFINE GCC_ALL_CC_FLAGS = -g -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -c -include AutoGen.h -fno-common +DEFINE GCC_ALL_CC_FLAGS = -g -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -include AutoGen.h -fno-common DEFINE GCC_IA32_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -m32 -malign-double -freorder-blocks -freorder-blocks-and-partition -O2 -mno-stack-arg-probe DEFINE GCC_X64_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mno-red-zone -Wno-address -mno-stack-arg-probe DEFINE GCC_IPF_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -minline-int-divide-min-latency @@ -4362,7 +4362,7 @@ DEFINE GCC_IPF_RC_FLAGS = -I binary -O elf64-ia64-little -B ia64 DEFINE GCC_ARM_RC_FLAGS = -I binary -O elf32-littlearm -B arm --rename-section .data=.hii DEFINE GCC_AARCH64_RC_FLAGS = -I binary -O elf64-littleaarch64 -B aarch64 --rename-section .data=.hii -DEFINE GCC44_ALL_CC_FLAGS = -g -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -c -include AutoGen.h -fno-common -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings +DEFINE GCC44_ALL_CC_FLAGS = -g -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -include AutoGen.h -fno-common -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings DEFINE GCC44_IA32_CC_FLAGS = DEF(GCC44_ALL_CC_FLAGS) -m32 -march=i586 -malign-double -fno-stack-protector -D EFI32 -fno-asynchronous-unwind-tables DEFINE GCC44_X64_CC_FLAGS = DEF(GCC44_ALL_CC_FLAGS) -m64 -fno-stack-protector "-DEFIAPI=__attribute__((ms_abi))" -Os -maccumulate-outgoing-args -mno-red-zone -Wno-address -mcmodel=small -fpie -fno-asynchronous-unwind-tables DEFINE GCC44_IA32_X64_DLINK_COMMON = -nostdlib -Wl,-n,-q,--gc-sections -z common-page-size=0x20 @@ -5677,7 +5677,7 @@ RELEASE_CLANG35_AARCH64_CC_FLAGS = DEF(CLANG35_AARCH64_CC_FLAGS) $(ARCHCC_FLAGS) *_ELFGCC_IA32_ASLDLINK_PATH = DEF(ELFGCC_BIN)/ld *_ELFGCC_IA32_RC_PATH = DEF(ELFGCC_BIN)/objcopy -*_ELFGCC_IA32_CC_FLAGS = -m32 -g -fshort-wchar -fno-strict-aliasing -Wall -malign-double -c -include $(DEST_DIR_DEBUG)/AutoGen.h -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings +*_ELFGCC_IA32_CC_FLAGS = -m32 -g -fshort-wchar -fno-strict-aliasing -Wall -malign-double -include $(DEST_DIR_DEBUG)/AutoGen.h -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings *_ELFGCC_IA32_SLINK_FLAGS = *_ELFGCC_IA32_DLINK_FLAGS = -melf_i386 -nostdlib --shared --entry $(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map #*_ELFGCC_IA32_DLINK_FLAGS = -melf_i386 -nostdlib -n -q -Ttext 0x220 --entry $(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) @@ -5702,7 +5702,7 @@ RELEASE_CLANG35_AARCH64_CC_FLAGS = DEF(CLANG35_AARCH64_CC_FLAGS) $(ARCHCC_FLAGS) *_ELFGCC_X64_VFRPP_PATH = DEF(ELFGCC_BIN)/gcc *_ELFGCC_X64_RC_PATH = DEF(ELFGCC_BIN)/objcopy -*_ELFGCC_X64_CC_FLAGS = -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-address -Wno-array-bounds -c -include AutoGen.h -D_EFI_P64 +*_ELFGCC_X64_CC_FLAGS = -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-address -Wno-array-bounds -include AutoGen.h -D_EFI_P64 *_ELFGCC_X64_DLINK_FLAGS = -nostdlib --shared --entry $(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map *_ELFGCC_X64_SLINK_FLAGS = *_ELFGCC_X64_ASM_FLAGS = -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h @@ -5725,7 +5725,7 @@ RELEASE_CLANG35_AARCH64_CC_FLAGS = DEF(CLANG35_AARCH64_CC_FLAGS) $(ARCHCC_FLAGS) *_ELFGCC_IPF_VFRPP_PATH = DEF(ELFGCC_BIN)/gcc *_ELFGCC_IPF_RC_PATH = DEF(ELFGCC_BIN)/objcopy -*_ELFGCC_IPF_CC_FLAGS = -Os -fshort-wchar -Wall -Werror -c -include AutoGen.h -D_EFI_P64 +*_ELFGCC_IPF_CC_FLAGS = -Os -fshort-wchar -Wall -Werror -include AutoGen.h -D_EFI_P64 *_ELFGCC_IPF_DLINK_FLAGS = -nostdlib --shared --entry $(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map *_ELFGCC_IPF_SLINK_FLAGS = *_ELFGCC_IPF_ASM_FLAGS = -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h
In order to be able to share the compiler flags with the linker (which is required for LTO since it involves the linker doing code generation based on the LTO bytecode), move the -c GCC argument to the build rules, and drop it from the GCC CC_FLAGS definitions in tools_def. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> --- BaseTools/Conf/build_rule.template | 16 +++++++++------- BaseTools/Conf/tools_def.template | 10 +++++----- 2 files changed, 14 insertions(+), 12 deletions(-) -- 2.7.4 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel