From 12f785f106216eedbedb02427255e257d506367f Mon Sep 17 00:00:00 2001 From: Michael D Kinney Date: Wed, 11 Feb 2026 10:00:05 -0800 Subject: [PATCH] Revert "BaseTools: Add support for out-of-tree builds" This reverts commit 3fe1d56cc98e011bbde8348f13dfa5e38c95f49e. PR https://github.com/tianocore/edk2/pull/11757 introduced a "Breaking Change" feature for out of tree builds of tools. This breaking change is blocking testing of edk2-stable202602 due to side effects on building FitGen tool in edk2-platforms. Revert this feature for the edk2-stable202602 release and work on this feature after the release. Signed-off-by: Michael D Kinney --- .../BinWrappers/PosixLike/BrotliCompress | 8 +-- .../BinWrappers/PosixLike/GenericShellWrapper | 8 +-- BaseTools/Source/C/GNUmakefile | 21 +++----- BaseTools/Source/C/Makefiles/app.makefile | 9 ++-- BaseTools/Source/C/Makefiles/footer.makefile | 25 +++------ BaseTools/Source/C/Makefiles/header.makefile | 13 ++--- BaseTools/Source/C/Makefiles/lib.makefile | 8 +-- BaseTools/Source/C/VfrCompile/GNUmakefile | 51 +++++++++---------- .../Source/C/VfrCompile/Pccts/antlr/makefile | 13 +++-- .../Source/C/VfrCompile/Pccts/dlg/makefile | 21 ++++---- .../Source/Python/Workspace/DscBuildData.py | 3 +- 11 files changed, 64 insertions(+), 116 deletions(-) diff --git a/BaseTools/BinWrappers/PosixLike/BrotliCompress b/BaseTools/BinWrappers/PosixLike/BrotliCompress index 725f8e3714..d9898e95e1 100755 --- a/BaseTools/BinWrappers/PosixLike/BrotliCompress +++ b/BaseTools/BinWrappers/PosixLike/BrotliCompress @@ -36,13 +36,7 @@ do done -if [ -n "$WORKSPACE" ] && [ -e "$WORKSPACE/BaseTools/Build/Source/C/bin" ] -then - if [ -e "$WORKSPACE/BaseTools/Build/Source/C/bin/$cmd" ] - then - exec "$WORKSPACE/BaseTools/Build/Source/C/bin/$cmd" $QLT $ARGS - fi -eif [ -n "$EDK_TOOLS_PATH" ] && [ -e "$EDK_TOOLS_PATH/Source/C/bin" ] +if [ -n "$EDK_TOOLS_PATH" ] && [ -e "$EDK_TOOLS_PATH/Source/C/bin" ] then if [ -e "$EDK_TOOLS_PATH/Source/C/bin/$cmd" ] then diff --git a/BaseTools/BinWrappers/PosixLike/GenericShellWrapper b/BaseTools/BinWrappers/PosixLike/GenericShellWrapper index 8aeff63c77..dae593f785 100755 --- a/BaseTools/BinWrappers/PosixLike/GenericShellWrapper +++ b/BaseTools/BinWrappers/PosixLike/GenericShellWrapper @@ -4,13 +4,7 @@ full_cmd=${BASH_SOURCE[-1]:-$0} # see http://mywiki.wooledge.org/BashFAQ/028 for dir=$(dirname "$full_cmd") cmd=${full_cmd##*/} -if [ -n "$WORKSPACE" ] && [ -e "$WORKSPACE/BaseTools/Build/Source/C/bin" ] -then - if [ -e "$WORKSPACE/BaseTools/Build/Source/C/bin/$cmd" ] - then - exec "$WORKSPACE/BaseTools/Build/Source/C/bin/$cmd" "$@" - fi -elif [ -n "$EDK_TOOLS_PATH" ] && [ -e "$EDK_TOOLS_PATH/Source/C/bin" ] +if [ -n "$EDK_TOOLS_PATH" ] && [ -e "$EDK_TOOLS_PATH/Source/C/bin" ] then if [ -e "$EDK_TOOLS_PATH/Source/C/bin/$cmd" ] then diff --git a/BaseTools/Source/C/GNUmakefile b/BaseTools/Source/C/GNUmakefile index 8661165a44..73f4b27eeb 100644 --- a/BaseTools/Source/C/GNUmakefile +++ b/BaseTools/Source/C/GNUmakefile @@ -13,12 +13,6 @@ else MAKEROOT := . endif -ifneq ($(WORKSPACE),) - BUILDROOT=$(WORKSPACE)/BaseTools/Build/Source/C -else - BUILDROOT=$(abspath $(MAKEROOT)) -endif - include Makefiles/header.makefile export PYTHON_COMMAND @@ -44,29 +38,28 @@ APPLICATIONS = \ SUBDIRS := $(LIBRARIES) $(APPLICATIONS) -$(LIBRARIES): $(BUILDROOT)/libs -$(APPLICATIONS): $(LIBRARIES) $(BUILDROOT)/bin +$(LIBRARIES): $(MAKEROOT)/libs +$(APPLICATIONS): $(LIBRARIES) $(MAKEROOT)/bin .PHONY: outputdirs makerootdir: - -$(MD) $(BUILDROOT) + -$(MD) $(MAKEROOT) .PHONY: subdirs $(SUBDIRS) subdirs: $(SUBDIRS) $(SUBDIRS): - -$(MD) $(BUILDROOT)/$@ - $(MAKE) OBJDIR=$(BUILDROOT)/$@ BUILDROOT=$(BUILDROOT) -C $@ + $(MAKE) -C $@ .PHONY: $(patsubst %,%-clean,$(sort $(SUBDIRS))) $(patsubst %,%-clean,$(sort $(SUBDIRS))): - -$(MAKE) OBJDIR=$(BUILDROOT)/$(@:-clean=) BUILDROOT=$(BUILDROOT) -C $(@:-clean=) clean + -$(MAKE) -C $(@:-clean=) clean clean: $(patsubst %,%-clean,$(sort $(SUBDIRS))) clean: localClean localClean: - $(RM) $(BUILDROOT)/bin/* - -$(RD) $(BUILDROOT)/libs $(BUILDROOT)/bin + $(RM) $(MAKEROOT)/bin/* + -$(RD) $(MAKEROOT)/libs $(MAKEROOT)/bin include Makefiles/footer.makefile diff --git a/BaseTools/Source/C/Makefiles/app.makefile b/BaseTools/Source/C/Makefiles/app.makefile index 475cb88d04..b66e564b3b 100644 --- a/BaseTools/Source/C/Makefiles/app.makefile +++ b/BaseTools/Source/C/Makefiles/app.makefile @@ -6,19 +6,16 @@ # MAKEROOT ?= ../.. -BUILDROOT ?= $(MAKEROOT) -OBJDIR ?= . -OBJECTS := $(addprefix $(OBJDIR)/,$(OBJECTS)) include $(MAKEROOT)/Makefiles/header.makefile -APPLICATION = $(BUILDROOT)/bin/$(APPNAME) +APPLICATION = $(MAKEROOT)/bin/$(APPNAME) .PHONY:all -all: $(BUILDROOT)/bin $(APPLICATION) +all: $(MAKEROOT)/bin $(APPLICATION) $(APPLICATION): $(OBJECTS) - $(LINKER) -o $(APPLICATION) $(LDFLAGS) $(OBJECTS) -L$(BUILDROOT)/libs $(LIBS) + $(LINKER) -o $(APPLICATION) $(LDFLAGS) $(OBJECTS) -L$(MAKEROOT)/libs $(LIBS) ifeq (Windows, $(findstring Windows,$(OS))) $(CP) $(APPLICATION).exe $(BIN_PATH) endif diff --git a/BaseTools/Source/C/Makefiles/footer.makefile b/BaseTools/Source/C/Makefiles/footer.makefile index 7d608a5e82..9a3dfcd494 100644 --- a/BaseTools/Source/C/Makefiles/footer.makefile +++ b/BaseTools/Source/C/Makefiles/footer.makefile @@ -7,37 +7,24 @@ DEPFILES = $(OBJECTS:%.o=%.d) -$(BUILDROOT)/libs-$(HOST_ARCH): - $(MD) $(BUILDROOT)/libs-$(HOST_ARCH) +$(MAKEROOT)/libs-$(HOST_ARCH): + $(MD) $(MAKEROOT)/libs-$(HOST_ARCH) .PHONY: install -install: $(BUILDROOT)/libs-$(HOST_ARCH) $(LIBRARY) - $(CP) $(LIBRARY) $(BUILDROOT)/libs-$(HOST_ARCH) +install: $(MAKEROOT)/libs-$(HOST_ARCH) $(LIBRARY) + $(CP) $(LIBRARY) $(MAKEROOT)/libs-$(HOST_ARCH) $(LIBRARY): $(OBJECTS) $(AR) crs $@ $^ -$(OBJDIR)/%.o : %.c - @$(MD) $(@D) +%.o : %.c $(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@ -$(OBJDIR)/%.o : %.cpp - @$(MD) $(@D) +%.o : %.cpp $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $< -o $@ -$(OBJECTS): | $(OBJDIR) - -$(OBJDIR)/%.d : %.c - @set -e; rm -f $@; \ - $(MD) $(@D); \ - $(CC) -M $(CPPFLAGS) $< > $@.$$$$; \ - sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \ - rm -f $@.$$$$ - .PHONY: clean clean: $(RM) $(OBJECTS) $(LIBRARY) $(DEPFILES) -ifneq ($(MAKECMDGOALS), clean) -include $(DEPFILES) -endif diff --git a/BaseTools/Source/C/Makefiles/header.makefile b/BaseTools/Source/C/Makefiles/header.makefile index 286bc5235d..d63f487724 100644 --- a/BaseTools/Source/C/Makefiles/header.makefile +++ b/BaseTools/Source/C/Makefiles/header.makefile @@ -206,16 +206,11 @@ LDFLAGS += $(EXTRA_LDFLAGS) all: -$(BUILDROOT)/libs: - $(MD) $(BUILDROOT)/libs +$(MAKEROOT)/libs: + $(MD) $(MAKEROOT)/libs -$(BUILDROOT)/bin: - $(MD) $(BUILDROOT)/bin +$(MAKEROOT)/bin: + $(MD) $(MAKEROOT)/bin ifeq (Windows, $(findstring Windows,$(OS))) $(MD) $(BIN_PATH) endif - -ifdef OBJDIR -$(OBJDIR): - $(MD) $(OBJDIR) -endif diff --git a/BaseTools/Source/C/Makefiles/lib.makefile b/BaseTools/Source/C/Makefiles/lib.makefile index e2186b6863..2577c15380 100644 --- a/BaseTools/Source/C/Makefiles/lib.makefile +++ b/BaseTools/Source/C/Makefiles/lib.makefile @@ -5,14 +5,10 @@ # SPDX-License-Identifier: BSD-2-Clause-Patent # -BUILDROOT ?= $(MAKEROOT) -OBJDIR ?= . -OBJECTS := $(addprefix $(OBJDIR)/,$(OBJECTS)) - include $(MAKEROOT)/Makefiles/header.makefile -LIBRARY = $(BUILDROOT)/libs/lib$(LIBNAME).a +LIBRARY = $(MAKEROOT)/libs/lib$(LIBNAME).a -all: $(BUILDROOT)/libs $(LIBRARY) +all: $(MAKEROOT)/libs $(LIBRARY) include $(MAKEROOT)/Makefiles/footer.makefile diff --git a/BaseTools/Source/C/VfrCompile/GNUmakefile b/BaseTools/Source/C/VfrCompile/GNUmakefile index 3cdf68298b..b469bd3f30 100644 --- a/BaseTools/Source/C/VfrCompile/GNUmakefile +++ b/BaseTools/Source/C/VfrCompile/GNUmakefile @@ -8,16 +8,14 @@ MAKEROOT ?= .. APPNAME = VfrCompile -BUILDROOT ?= $(MAKEROOT) -OBJDIR ?= $(abspath .) LIBS = -lCommon TOOL_INCLUDE = -I Pccts/h +#OBJECTS = VfrSyntax.o VfrServices.o DLGLexer.o EfiVfrParser.o ATokenBuffer.o DLexerBase.o AParser.o OBJECTS = AParser.o DLexerBase.o ATokenBuffer.o EfiVfrParser.o VfrLexer.o VfrSyntax.o \ VfrFormPkg.o VfrError.o VfrUtilityLib.o VfrCompiler.o -OBJECTS := $(addprefix $(OBJDIR)/,$(OBJECTS)) CLANG := $(findstring clang,$(shell $(CC) --version)) ifneq ($(CLANG),) VFR_CPPFLAGS = -Wno-deprecated-register -std=c++14 -DPCCTS_USE_NAMESPACE_STD $(CPPFLAGS) @@ -32,18 +30,22 @@ VFR_LFLAGS = $(EXTRA_LDFLAGS) LINKER = $(CXX) +EXTRA_CLEAN_OBJECTS = EfiVfrParser.cpp EfiVfrParser.h VfrParser.dlg VfrTokens.h VfrLexer.cpp VfrLexer.h VfrSyntax.cpp tokens.h + +MAKEROOT ?= ../.. + include $(MAKEROOT)/Makefiles/header.makefile -APPLICATION = $(BUILDROOT)/bin/$(APPNAME) +APPLICATION = $(MAKEROOT)/bin/$(APPNAME) -BIN_DIR=$(OBJDIR) +BIN_DIR=. export BIN_DIR .PHONY:all -all: $(BUILDROOT)/bin $(APPLICATION) +all: $(MAKEROOT)/bin $(APPLICATION) $(APPLICATION): $(OBJECTS) - $(LINKER) -o $(APPLICATION) $(VFR_LFLAGS) $(OBJECTS) -L$(BUILDROOT)/libs $(LIBS) + $(LINKER) -o $(APPLICATION) $(VFR_LFLAGS) $(OBJECTS) -L$(MAKEROOT)/libs $(LIBS) ifeq (Windows, $(findstring Windows,$(OS))) $(CP) $(APPLICATION).exe $(BIN_PATH) endif @@ -52,42 +54,35 @@ VfrCompiler.o: ../Include/Common/BuildVersion.h include $(MAKEROOT)/Makefiles/footer.makefile -GEN_SYNTAX_FILES := $(addprefix $(OBJDIR)/,VfrSyntax.cpp EfiVfrParser.cpp EfiVfrParser.h VfrParser.dlg VfrTokens.h) -$(GEN_SYNTAX_FILES): $(OBJDIR)/antlr VfrSyntax.g - $(OBJDIR)/antlr -CC -e3 -ck 3 -k 2 -fl VfrParser.dlg -ft VfrTokens.h -o $(OBJDIR) VfrSyntax.g +VfrSyntax.cpp EfiVfrParser.cpp EfiVfrParser.h VfrParser.dlg VfrTokens.h: Pccts/antlr/antlr VfrSyntax.g + Pccts/antlr/antlr -CC -e3 -ck 3 -k 2 -fl VfrParser.dlg -ft VfrTokens.h -o . VfrSyntax.g -GEN_LEXER_FILES := $(addprefix $(OBJDIR)/,VfrLexer.cpp VfrLexer.h) -$(GEN_LEXER_FILES): $(OBJDIR)/dlg $(OBJDIR)/VfrParser.dlg - $(OBJDIR)/dlg -C2 -i -CC -cl VfrLexer -o $(OBJDIR) $(OBJDIR)/VfrParser.dlg +VfrLexer.cpp VfrLexer.h: Pccts/dlg/dlg VfrParser.dlg + Pccts/dlg/dlg -C2 -i -CC -cl VfrLexer -o . VfrParser.dlg -EXTRA_CLEAN_OBJECTS = $(GEN_SYNTAX_FILES) $(GEN_LEXER_FILES) +Pccts/antlr/antlr: + $(MAKE) -C Pccts/antlr -$(OBJDIR)/Pccts/antlr $(OBJDIR)/Pccts/dlg: - $(MD) $@ +Pccts/dlg/dlg: + $(MAKE) -C Pccts/dlg -$(OBJDIR)/antlr: | $(OBJDIR)/Pccts/antlr - $(MAKE) OBJDIR=$(OBJDIR)/Pccts/antlr -C Pccts/antlr - -$(OBJDIR)/dlg: | $(OBJDIR)/Pccts/dlg - $(MAKE) OBJDIR=$(OBJDIR)/Pccts/dlg -C Pccts/dlg - -$(OBJDIR)/ATokenBuffer.o: Pccts/h/ATokenBuffer.cpp +ATokenBuffer.o: Pccts/h/ATokenBuffer.cpp $(CXX) -c $(VFR_CPPFLAGS) $(INC) $(VFR_CXXFLAGS) $? -o $@ -$(OBJDIR)/DLexerBase.o: Pccts/h/DLexerBase.cpp +DLexerBase.o: Pccts/h/DLexerBase.cpp $(CXX) -c $(VFR_CPPFLAGS) $(INC) $(VFR_CXXFLAGS) $? -o $@ -$(OBJDIR)/AParser.o: Pccts/h/AParser.cpp +AParser.o: Pccts/h/AParser.cpp $(CXX) -c $(VFR_CPPFLAGS) $(INC) $(VFR_CXXFLAGS) $? -o $@ -$(OBJDIR)/VfrSyntax.o: $(OBJDIR)/VfrSyntax.cpp +VfrSyntax.o: VfrSyntax.cpp $(CXX) -c $(VFR_CPPFLAGS) $(INC) $(VFR_CXXFLAGS) $? -o $@ clean: localClean localClean: - $(MAKE) OBJDIR=$(OBJDIR)/Pccts/antlr -C Pccts/antlr clean - $(MAKE) OBJDIR=$(OBJDIR)/Pccts/dlg -C Pccts/dlg clean + $(MAKE) -C Pccts/antlr clean + $(MAKE) -C Pccts/dlg clean $(RM) $(EXTRA_CLEAN_OBJECTS) ifeq (Windows, $(findstring Windows,$(OS))) $(RM) $(BIN_PATH)/$(APPNAME).exe diff --git a/BaseTools/Source/C/VfrCompile/Pccts/antlr/makefile b/BaseTools/Source/C/VfrCompile/Pccts/antlr/makefile index 77a289ef1c..ca0783b52e 100644 --- a/BaseTools/Source/C/VfrCompile/Pccts/antlr/makefile +++ b/BaseTools/Source/C/VfrCompile/Pccts/antlr/makefile @@ -184,7 +184,6 @@ CPPFLAGS= #CFLAGS= -O -I. -I$(SET) -I$(PCCTS_H) -DUSER_ZZSYN -woff 3262 OBJ=antlr.o scan.o err.o bits.o build.o fset2.o fset.o gen.o \ globals.o hash.o lex.o main.o misc.o set.o pred.o egman.o mrhoist.o fcache.o -OBJ := $(addprefix $(OBJDIR)/,$(OBJ)) $(BIN_DIR)/antlr : $(OBJ) $(SRC) $(CC) $(CFLAGS) -o $(BIN_DIR)/antlr $(OBJ) @@ -202,17 +201,17 @@ SRC=antlr.c scan.c err.c bits.c build.c fset2.c fset.c gen.c globals.c \ #antlr.c stdpccts.h parser.dlg tokens.h err.c : antlr.g # $(ANTLR) -gh antlr.g -$(OBJDIR)/antlr.o : antlr.c mode.h tokens.h +antlr.o : antlr.c mode.h tokens.h -$(OBJDIR)/scan.o : scan.c mode.h tokens.h +scan.o : scan.c mode.h tokens.h #scan.c mode.h: parser.dlg # $(DLG) -C2 parser.dlg scan.c -$(OBJDIR)/set.o : $(SET)/set.c - $(CC) $(CFLAGS) -c -o $@ $< +set.o : $(SET)/set.c + $(CC) $(CFLAGS) -c -o set.o $(SET)/set.c -$(OBJDIR)/%.o : %.c +%.o : %.c $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@ # @@ -221,7 +220,7 @@ $(OBJDIR)/%.o : %.c #clean up all the intermediate files clean: - $(RM) $(BIN_DIR)$(SEP)antlr $(OBJDIR)$(SEP)*.$(OBJ_EXT) core + $(RM) $(BIN_DIR)$(SEP)antlr *.$(OBJ_EXT) core #remove everything in clean plus the PCCTS files generated scrub: diff --git a/BaseTools/Source/C/VfrCompile/Pccts/dlg/makefile b/BaseTools/Source/C/VfrCompile/Pccts/dlg/makefile index bd1dfca4c8..4660a8806a 100644 --- a/BaseTools/Source/C/VfrCompile/Pccts/dlg/makefile +++ b/BaseTools/Source/C/VfrCompile/Pccts/dlg/makefile @@ -137,7 +137,6 @@ OBJ_EXT=o OUT_OBJ = -o OBJ = dlg_p.o dlg_a.o main.o err.o set.o support.o output.o \ relabel.o automata.o -OBJ := $(addprefix $(OBJDIR)/,$(OBJ)) $(BIN_DIR)/dlg : $(OBJ) $(SRC) $(CC) $(CFLAGS) -o $(BIN_DIR)/dlg $(OBJ) @@ -151,19 +150,19 @@ SRC = dlg_p.c dlg_a.c main.c err.c $(SET)/set.c support.c output.c \ #dlg_a.c mode.h : parser.dlg # $(DLG) -C2 parser.dlg dlg_a.c -$(OBJDIR)/dlg_p.$(OBJ_EXT) : dlg_p.c dlg.h tokens.h mode.h - $(CC) $(CFLAGS) -o $@ -c dlg_p.c +dlg_p.$(OBJ_EXT) : dlg_p.c dlg.h tokens.h mode.h + $(CC) $(CFLAGS) -c dlg_p.c -$(OBJDIR)/dlg_a.$(OBJ_EXT) : dlg_a.c dlg.h tokens.h mode.h - $(CC) $(CFLAGS) -o $@ -c dlg_a.c +dlg_a.$(OBJ_EXT) : dlg_a.c dlg.h tokens.h mode.h + $(CC) $(CFLAGS) -c dlg_a.c -$(OBJDIR)/main.$(OBJ_EXT) : main.c dlg.h - $(CC) $(CFLAGS) -o $@ -c main.c +main.$(OBJ_EXT) : main.c dlg.h + $(CC) $(CFLAGS) -c main.c -$(OBJDIR)/set.$(OBJ_EXT) : $(SET)/set.c - $(CC) -c $(CFLAGS) -o $@ $(SET)/set.c +set.$(OBJ_EXT) : $(SET)/set.c + $(CC) -c $(CFLAGS) $(SET)/set.c -$(OBJDIR)/%.o : %.c +%.o : %.c $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@ lint: @@ -171,4 +170,4 @@ lint: #clean up all the intermediate files clean: - $(RM) $(BIN_DIR)$(SEP)dlg $(OBJDIR)$(SEP)*.$(OBJ_EXT) core + $(RM) $(BIN_DIR)$(SEP)dlg *.$(OBJ_EXT) core diff --git a/BaseTools/Source/Python/Workspace/DscBuildData.py b/BaseTools/Source/Python/Workspace/DscBuildData.py index ddb576fdeb..014f6d0805 100644 --- a/BaseTools/Source/Python/Workspace/DscBuildData.py +++ b/BaseTools/Source/Python/Workspace/DscBuildData.py @@ -2942,8 +2942,7 @@ class DscBuildData(PlatformBuildClassObject): else: AppSuffix = '.exe' if sys.platform == "win32" else '' MakeApp = MakeApp + PcdGccMakefile - MakeApp = MakeApp + 'OBJDIR = %s\n' % self.OutputPath - MakeApp = MakeApp + 'APPFILE = %s%s%s%s\n' % (self.OutputPath, os.sep, PcdValueInitName, AppSuffix) + 'APPNAME = %s\n' % (PcdValueInitName) + 'OBJECTS = %s.o %s.o\n' % (PcdValueInitName, PcdValueCommonName) + \ + MakeApp = MakeApp + 'APPFILE = %s%s%s%s\n' % (self.OutputPath, os.sep, PcdValueInitName, AppSuffix) + 'APPNAME = %s\n' % (PcdValueInitName) + 'OBJECTS = %s/%s.o %s.o\n' % (self.OutputPath, PcdValueInitName, os.path.join(self.OutputPath, PcdValueCommonName)) + \ 'include $(MAKEROOT)/Makefiles/app.makefile\n' + 'TOOL_INCLUDE +=' IncSearchList = []