From 5825a1b2507e195c40a8655e18c5485c00513445 Mon Sep 17 00:00:00 2001 From: Laszlo Ersek Date: Wed, 29 Aug 2018 17:12:03 +0200 Subject: [PATCH 6/7] BaseTools/VfrCompile: honor EXTRA_LDFLAGS Message-id: <20180829151204.26958-7-lersek@redhat.com> Patchwork-id: 81963 O-Subject: [RHEL8/virt212 edk2 PATCH 6/7] BaseTools/VfrCompile: honor EXTRA_LDFLAGS Bugzilla: 1607906 Acked-by: Thomas Huth Acked-by: Vitaly Kuznetsov In commit 81502cee20ac ("BaseTools/Source/C: take EXTRA_LDFLAGS from the caller", 2018-08-16), I missed that "VfrCompile/GNUmakefile" does not use BUILD_LFLAGS in the APPLICATION linking rule, unlike "app.makefile" does. Instead, "VfrCompile/GNUmakefile" uses the (undefined) LFLAGS macro. Therefore commit 81502cee20ac did not cover the linking step of VfrCompile. Thankfully, the structure of the linking rules is the same, between "app.makefile" and "VfrCompile/GNUmakefile". Rename the undefined LFLAGS macro in "VfrCompile/GNUmakefile" to VFR_LFLAGS (for consistency with VFR_CXXFLAGS), and set it to EXTRA_LDFLAGS. As a result, we have: | compilation | linking -----------+--------------------------------+---------------------- VfrCompile | VFR_CXXFLAGS = | VFR_LFLAGS = | BUILD_OPTFLAGS = | EXTRA_LDFLAGS | '-O2' + EXTRA_OPTFLAGS | -----------+--------------------------------+---------------------- other apps | BUILD_CFLAGS/BUILD_CXXFLAGS = | BUILD_LFLAGS = | [...] + BUILD_OPTFLAGS = | [...] + EXTRA_LDFLAGS | [...] + '-O2' + EXTRA_OPTFLAGS | This table shows - that the VfrCompile compilation and linking flags are always a subset of the corresponding flags used by the other apps, - and that the EXTRA flags are always at the end. Cc: Liming Gao Cc: Yonghong Zhu Ref: https://bugzilla.redhat.com/show_bug.cgi?id=1540244 Fixes: 81502cee20ac4046f08bb4aec754c7091c8808dc Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Laszlo Ersek Reviewed-by: Liming Gao (cherry picked from commit aa4e0df1f0c7ffdff07d7e382c9da89cbe207cdb) --- BaseTools/Source/C/VfrCompile/GNUmakefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/BaseTools/Source/C/VfrCompile/GNUmakefile b/BaseTools/Source/C/VfrCompile/GNUmakefile index bbe562c..9273589 100644 --- a/BaseTools/Source/C/VfrCompile/GNUmakefile +++ b/BaseTools/Source/C/VfrCompile/GNUmakefile @@ -28,6 +28,9 @@ VFR_CPPFLAGS = -DPCCTS_USE_NAMESPACE_STD $(BUILD_CPPFLAGS) # keep BUILD_OPTFLAGS last VFR_CXXFLAGS = $(BUILD_OPTFLAGS) +# keep EXTRA_LDFLAGS last +VFR_LFLAGS = $(EXTRA_LDFLAGS) + LINKER = $(BUILD_CXX) EXTRA_CLEAN_OBJECTS = EfiVfrParser.cpp EfiVfrParser.h VfrParser.dlg VfrTokens.h VfrLexer.cpp VfrLexer.h VfrSyntax.cpp tokens.h @@ -42,7 +45,7 @@ APPLICATION = $(MAKEROOT)/bin/$(APPNAME) all: $(MAKEROOT)/bin $(APPLICATION) $(APPLICATION): $(OBJECTS) - $(LINKER) -o $(APPLICATION) $(LFLAGS) $(OBJECTS) -L$(MAKEROOT)/libs $(LIBS) + $(LINKER) -o $(APPLICATION) $(VFR_LFLAGS) $(OBJECTS) -L$(MAKEROOT)/libs $(LIBS) VfrCompiler.o: ../Include/Common/BuildVersion.h -- 1.8.3.1