Bob:
> -----Original Message----- > From: Feng, Bob C > Sent: Thursday, July 11, 2019 8:13 PM > To: devel@edk2.groups.io; Feng, Bob C <bob.c.f...@intel.com>; Gao, Liming > <liming....@intel.com> > Subject: RE: [edk2-devel] [Patch 1/1] BaseTools: Singleton the object to > handle build conf file > > Liming, > > I tested the cases: > 1. move tool_def.txt and build_rule.txt from Conf to another folder and > update target.txt to set BUILD_RULE_CONF and > TOOL_CHAIN_CONF to point to the new folder. If their file name is also changed in target.txt, does it work in current BaseTools? I just want to make sure keep the same support scope with this change. Thanks Liming > 2. Move Conf folder to a new place and Set WORKSPACE to point the parent > folder of Conf. Append original WORKSPACE folder to > PACKAGES_PATH > > My patch works fine. > > But there is a bug in original code for case 1#, I'll send out another patch > to fix that. > > Thanks, > Bob > > -----Original Message----- > From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of Bob Feng > Sent: Thursday, July 11, 2019 5:27 PM > To: Gao, Liming <liming....@intel.com>; devel@edk2.groups.io > Subject: Re: [edk2-devel] [Patch 1/1] BaseTools: Singleton the object to > handle build conf file > > Liming, > > Thanks for your comments. I'll test the cases you mentioned. > > Thanks, > Bob > > -----Original Message----- > From: Gao, Liming > Sent: Thursday, July 11, 2019 5:11 PM > To: Feng, Bob C <bob.c.f...@intel.com>; devel@edk2.groups.io > Subject: RE: [Patch 1/1] BaseTools: Singleton the object to handle build conf > file > > Bob: > target.txt is from Conf directory. build_rule.txt and tools_def.txt are > specified in target.txt. Please take care this case that they may have > the different file name. > > And, Conf directory is relative to WORKSPACE and PACKAGES_PATH. Does this > patch support it? > > Thanks > Liming > >-----Original Message----- > >From: Feng, Bob C > >Sent: Friday, June 28, 2019 3:07 PM > >To: devel@edk2.groups.io > >Cc: Gao, Liming <liming....@intel.com>; Feng, Bob C > ><bob.c.f...@intel.com> > >Subject: [Patch 1/1] BaseTools: Singleton the object to handle build > >conf file > > > >BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1875 > > > >The build config files are target.txt, build rule, tooldef During a > >build, the config is not changed, so the object to handle them need to > >be singleton. > > > >Cc: Liming Gao <liming....@intel.com> > >Signed-off-by: Bob Feng <bob.c.f...@intel.com> > >--- > > BaseTools/Source/Python/AutoGen/AutoGen.py | 33 ++---------- > > .../Source/Python/AutoGen/BuildEngine.py | 22 ++++++++ > > .../Python/Common/TargetTxtClassObject.py | 2 + > > .../Python/Common/ToolDefClassObject.py | 6 ++- > > BaseTools/Source/Python/GenFds/GenFds.py | 4 +- > > .../Python/GenFds/GenFdsGlobalVariable.py | 54 ++++++++----------- > > .../Source/Python/Workspace/DscBuildData.py | 8 +-- > > BaseTools/Source/Python/build/build.py | 29 +++------- > > 8 files changed, 62 insertions(+), 96 deletions(-) > > > >diff --git a/BaseTools/Source/Python/AutoGen/AutoGen.py > >b/BaseTools/Source/Python/AutoGen/AutoGen.py > >index e8e09dc8a366..a1f7f5641e09 100644 > >--- a/BaseTools/Source/Python/AutoGen/AutoGen.py > >+++ b/BaseTools/Source/Python/AutoGen/AutoGen.py > >@@ -22,11 +22,12 @@ from . import GenC > > from . import GenMake > > from . import GenDepex > > from io import BytesIO > > > > from .StrGather import * > >-from .BuildEngine import BuildRule > >+from .BuildEngine import BuildRuleObj as BuildRule from .BuildEngine > >+import > >gDefaultBuildRuleFile,AutoGenReqBuildRuleVerNum > > import shutil > > from Common.LongFilePathSupport import CopyLongFilePath from > >Common.BuildToolError import * from Common.DataType import * from > >Common.Misc import * @@ -76,16 +77,10 @@ gEfiVarStoreGuidPattern = > >re.compile("\s*guid\s*=\s*({.*?{.*?}\s*})") > > > > ## Mapping Makefile type > > gMakeTypeMap = {TAB_COMPILER_MSFT:"nmake", "GCC":"gmake"} > > > > > >-## Build rule configuration file > >-gDefaultBuildRuleFile = 'build_rule.txt' > >- > >-## Build rule default version > >-AutoGenReqBuildRuleVerNum = "0.1" > >- > > ## default file name for AutoGen > > gAutoGenCodeFileName = "AutoGen.c" > > gAutoGenHeaderFileName = "AutoGen.h" > > gAutoGenStringFileName = "%(module_name)sStrDefs.h" > > gAutoGenStringFormFileName = "%(module_name)sStrDefs.hpk" > >@@ -1964,32 +1959,10 @@ class PlatformAutoGen(AutoGen): > > ## Return the build options specific for EDKII modules in this platform > > @cached_property > > def EdkIIBuildOption(self): > > return self._ExpandBuildOption(self.Platform.BuildOptions, > >EDKII_NAME) > > > >- ## Parse build_rule.txt in Conf Directory. > >- # > >- # @retval BuildRule object > >- # > >- @cached_property > >- def BuildRule(self): > >- BuildRuleFile = None > >- if TAB_TAT_DEFINES_BUILD_RULE_CONF in > >self.Workspace.TargetTxt.TargetTxtDictionary: > >- BuildRuleFile = > >self.Workspace.TargetTxt.TargetTxtDictionary[TAB_TAT_DEFINES_BUILD_RUL > >E_CONF] > >- if not BuildRuleFile: > >- BuildRuleFile = gDefaultBuildRuleFile > >- RetVal = BuildRule(BuildRuleFile) > >- if RetVal._FileVersion == "": > >- RetVal._FileVersion = AutoGenReqBuildRuleVerNum > >- else: > >- if RetVal._FileVersion < AutoGenReqBuildRuleVerNum : > >- # If Build Rule's version is less than the version number > >required by > >the tools, halting the build. > >- EdkLogger.error("build", AUTOGEN_ERROR, > >- ExtraData="The version number [%s] of > >build_rule.txt is less > >than the version number required by the AutoGen.(the minimum required > >version number is [%s])"\ > >- % (RetVal._FileVersion, > >AutoGenReqBuildRuleVerNum)) > >- return RetVal > >- > > ## Summarize the packages used by modules in this platform > > @cached_property > > def PackageList(self): > > RetVal = set() > > for La in self.LibraryAutoGenList: > >@@ -3143,11 +3116,11 @@ class ModuleAutoGen(AutoGen): > > return RetVal > > > > @cached_property > > def BuildRules(self): > > RetVal = {} > >- BuildRuleDatabase = self.PlatformInfo.BuildRule > >+ BuildRuleDatabase = BuildRule > > for Type in BuildRuleDatabase.FileTypeList: > > #first try getting build rule by BuildRuleFamily > > RuleObject = BuildRuleDatabase[Type, self.BuildType, > >self.Arch, self.BuildRuleFamily] > > if not RuleObject: > > # build type is always module type, but ... > >diff --git a/BaseTools/Source/Python/AutoGen/BuildEngine.py > >b/BaseTools/Source/Python/AutoGen/BuildEngine.py > >index 14e61140e7ba..bb9153447793 100644 > >--- a/BaseTools/Source/Python/AutoGen/BuildEngine.py > >+++ b/BaseTools/Source/Python/AutoGen/BuildEngine.py > >@@ -18,10 +18,13 @@ from Common.LongFilePathSupport import > >OpenLongFilePath as open from Common.GlobalData import * from > >Common.BuildToolError import * from Common.Misc import tdict, > >PathClass from Common.StringUtils import NormPath from > >Common.DataType import * > >+from Common.TargetTxtClassObject import TargetTxt > >+gDefaultBuildRuleFile = 'build_rule.txt' > >+AutoGenReqBuildRuleVerNum = '0.1' > > > > import Common.EdkLogger as EdkLogger > > > > ## Convert file type to file list macro name # @@ -581,10 +584,29 @@ > >class BuildRule: > > _ExtraDependency : ParseCommonSubSection, > > _Command : ParseCommonSubSection, > > _UnknownSection : SkipSection, > > } > > > >+def GetBuildRule(): > >+ BuildRuleFile = None > >+ if TAB_TAT_DEFINES_BUILD_RULE_CONF in TargetTxt.TargetTxtDictionary: > >+ BuildRuleFile = > >TargetTxt.TargetTxtDictionary[TAB_TAT_DEFINES_BUILD_RULE_CONF] > >+ if not BuildRuleFile: > >+ BuildRuleFile = gDefaultBuildRuleFile > >+ RetVal = BuildRule(BuildRuleFile) > >+ if RetVal._FileVersion == "": > >+ RetVal._FileVersion = AutoGenReqBuildRuleVerNum > >+ else: > >+ if RetVal._FileVersion < AutoGenReqBuildRuleVerNum : > >+ # If Build Rule's version is less than the version number > >+ required by the > >tools, halting the build. > >+ EdkLogger.error("build", AUTOGEN_ERROR, > >+ ExtraData="The version number [%s] of > >+ build_rule.txt is less > >than the version number required by the AutoGen.(the minimum required > >version number is [%s])"\ > >+ % (RetVal._FileVersion, > >AutoGenReqBuildRuleVerNum)) > >+ return RetVal > >+ > >+BuildRuleObj = GetBuildRule() > >+ > > # This acts like the main() function for the script, unless it is > >'import'ed into another # script. > > if __name__ == '__main__': > > import sys > > EdkLogger.Initialize() > >diff --git a/BaseTools/Source/Python/Common/TargetTxtClassObject.py > >b/BaseTools/Source/Python/Common/TargetTxtClassObject.py > >index 9d7673b41bb5..79a5acc01074 100644 > >--- a/BaseTools/Source/Python/Common/TargetTxtClassObject.py > >+++ b/BaseTools/Source/Python/Common/TargetTxtClassObject.py > >@@ -144,10 +144,12 @@ class TargetTxtClassObject(object): > > def TargetTxtDict(ConfDir): > > Target = TargetTxtClassObject() > > Target.LoadTargetTxtFile(os.path.normpath(os.path.join(ConfDir, > >gDefaultTargetTxtFile))) > > return Target > > > >+TargetTxt = TargetTxtDict(os.path.join(os.getenv("WORKSPACE"),"Conf")) > >+ > > ## > > # > > # This acts like the main() function for the script, unless it is > >'import'ed into another # script. > > # > >diff --git a/BaseTools/Source/Python/Common/ToolDefClassObject.py > >b/BaseTools/Source/Python/Common/ToolDefClassObject.py > >index 5d692ea13cfc..0bfa263270c3 100644 > >--- a/BaseTools/Source/Python/Common/ToolDefClassObject.py > >+++ b/BaseTools/Source/Python/Common/ToolDefClassObject.py > >@@ -12,11 +12,11 @@ from __future__ import absolute_import import > >Common.LongFilePathOs as os import re from . import EdkLogger > > > > from .BuildToolError import * > >-from Common.TargetTxtClassObject import TargetTxtDict > >+from Common.TargetTxtClassObject import TargetTxt > > from Common.LongFilePathSupport import OpenLongFilePath as open from > >Common.Misc import PathClass from Common.StringUtils import NormPath > >import Common.GlobalData as GlobalData from Common import GlobalData > >@@ -261,11 +261,11 @@ class ToolDefClassObject(object): > > # @param ConfDir: Conf dir > > # > > # @retval ToolDef An instance of ToolDefClassObject() with loaded > >tools_def.txt # def ToolDefDict(ConfDir): > >- Target = TargetTxtDict(ConfDir) > >+ Target = TargetTxt > > ToolDef = ToolDefClassObject() > > if TAB_TAT_DEFINES_TOOL_CHAIN_CONF in Target.TargetTxtDictionary: > > ToolsDefFile = > >Target.TargetTxtDictionary[TAB_TAT_DEFINES_TOOL_CHAIN_CONF] > > if ToolsDefFile: > > ToolDef.LoadToolDefFile(os.path.normpath(ToolsDefFile)) > >@@ -273,10 +273,12 @@ def ToolDefDict(ConfDir): > > > >ToolDef.LoadToolDefFile(os.path.normpath(os.path.join(ConfDir, > >gDefaultToolsDefFile))) > > else: > > ToolDef.LoadToolDefFile(os.path.normpath(os.path.join(ConfDir, > >gDefaultToolsDefFile))) > > return ToolDef > > > >+ToolDef = ToolDefDict((os.path.join(os.getenv("WORKSPACE"),"Conf"))) > >+ > > ## > > # > > # This acts like the main() function for the script, unless it is > >'import'ed into another # script. > > # > >diff --git a/BaseTools/Source/Python/GenFds/GenFds.py > >b/BaseTools/Source/Python/GenFds/GenFds.py > >index 5888997761bb..51943411ad1f 100644 > >--- a/BaseTools/Source/Python/GenFds/GenFds.py > >+++ b/BaseTools/Source/Python/GenFds/GenFds.py > >@@ -18,11 +18,11 @@ from glob import glob from struct import unpack > >from linecache import getlines from io import BytesIO > > > > import Common.LongFilePathOs as os > >-from Common.TargetTxtClassObject import TargetTxtClassObject > >+from Common.TargetTxtClassObject import TargetTxt > > from Common.DataType import * > > import Common.GlobalData as GlobalData from Common import EdkLogger > >from Common.StringUtils import NormPath from Common.Misc import > >DirCache, PathClass, GuidStructureStringToGuidString @@ -205,12 +205,10 > >@@ def GenFdsApi(FdsCommandDict, > >WorkSpaceDataBase=None): > > GenFdsGlobalVariable.ConfDir = ConfDirectoryPath > > if not GlobalData.gConfDirectory: > > GlobalData.gConfDirectory = GenFdsGlobalVariable.ConfDir > > BuildConfigurationFile = > >os.path.normpath(os.path.join(ConfDirectoryPath, "target.txt")) > > if os.path.isfile(BuildConfigurationFile) == True: > >- TargetTxt = TargetTxtClassObject() > >- TargetTxt.LoadTargetTxtFile(BuildConfigurationFile) > > # if no build target given in command line, get it from > > target.txt > > if not GenFdsGlobalVariable.TargetName: > > BuildTargetList = > >TargetTxt.TargetTxtDictionary[TAB_TAT_DEFINES_TARGET] > > if len(BuildTargetList) != 1: > > EdkLogger.error("GenFds", OPTION_VALUE_INVALID, > >ExtraData="Only allows one instance for Target.") diff --git > >a/BaseTools/Source/Python/GenFds/GenFdsGlobalVariable.py > >b/BaseTools/Source/Python/GenFds/GenFdsGlobalVariable.py > >index c9c476cf6154..f49af9371b8d 100644 > >--- a/BaseTools/Source/Python/GenFds/GenFdsGlobalVariable.py > >+++ b/BaseTools/Source/Python/GenFds/GenFdsGlobalVariable.py > >@@ -20,13 +20,13 @@ from array import array > > > > from Common.BuildToolError import COMMAND_FAILURE,GENFDS_ERROR from > > Common import EdkLogger from Common.Misc import SaveFileOnChange > > > >-from Common.TargetTxtClassObject import TargetTxtClassObject -from > >Common.ToolDefClassObject import ToolDefClassObject, ToolDefDict -from > >AutoGen.BuildEngine import BuildRule > >+from Common.TargetTxtClassObject import TargetTxt from > >+Common.ToolDefClassObject import ToolDef from AutoGen.BuildEngine > >+import BuildRuleObj > > import Common.DataType as DataType > > from Common.Misc import PathClass > > from Common.LongFilePathSupport import OpenLongFilePath as open from > >Common.MultipleWorkspace import MultipleWorkspace as mws import > >Common.GlobalData as GlobalData @@ -93,35 +93,25 @@ class > >GenFdsGlobalVariable: > > # > > @staticmethod > > def _LoadBuildRule(): > > if GenFdsGlobalVariable.__BuildRuleDatabase: > > return GenFdsGlobalVariable.__BuildRuleDatabase > >- BuildConfigurationFile = > >os.path.normpath(os.path.join(GenFdsGlobalVariable.ConfDir, "target.txt")) > >- TargetTxt = TargetTxtClassObject() > >- if os.path.isfile(BuildConfigurationFile) == True: > >- TargetTxt.LoadTargetTxtFile(BuildConfigurationFile) > >- if DataType.TAB_TAT_DEFINES_BUILD_RULE_CONF in > >TargetTxt.TargetTxtDictionary: > >- BuildRuleFile = > >TargetTxt.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_BUILD_RULE_CO > >NF] > >- if not BuildRuleFile: > >- BuildRuleFile = 'Conf/build_rule.txt' > >- GenFdsGlobalVariable.__BuildRuleDatabase = > >BuildRule(BuildRuleFile) > >- ToolDefinitionFile = > >TargetTxt.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TOOL_CHAIN_C > >ONF] > >- if ToolDefinitionFile == '': > >- ToolDefinitionFile = "Conf/tools_def.txt" > >- if os.path.isfile(ToolDefinitionFile): > >- ToolDef = ToolDefClassObject() > >- ToolDef.LoadToolDefFile(ToolDefinitionFile) > >- ToolDefinition = ToolDef.ToolsDefTxtDatabase > >- if DataType.TAB_TOD_DEFINES_BUILDRULEFAMILY in > >ToolDefinition > >\ > >- and GenFdsGlobalVariable.ToolChainTag in > >ToolDefinition[DataType.TAB_TOD_DEFINES_BUILDRULEFAMILY] \ > >- and > >ToolDefinition[DataType.TAB_TOD_DEFINES_BUILDRULEFAMILY][GenFdsGlo > >balVariable.ToolChainTag]: > >- GenFdsGlobalVariable.BuildRuleFamily = > >ToolDefinition[DataType.TAB_TOD_DEFINES_BUILDRULEFAMILY][GenFdsGlo > >balVariable.ToolChainTag] > >+ GenFdsGlobalVariable.__BuildRuleDatabase = BuildRuleObj > >+ ToolDefinitionFile = > >TargetTxt.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TOOL_CHAIN_C > >ONF] > >+ if ToolDefinitionFile == '': > >+ ToolDefinitionFile = "Conf/tools_def.txt" > >+ if os.path.isfile(ToolDefinitionFile): > >+ ToolDefinition = ToolDef.ToolsDefTxtDatabase > >+ if DataType.TAB_TOD_DEFINES_BUILDRULEFAMILY in ToolDefinition \ > >+ and GenFdsGlobalVariable.ToolChainTag in > >ToolDefinition[DataType.TAB_TOD_DEFINES_BUILDRULEFAMILY] \ > >+ and > >ToolDefinition[DataType.TAB_TOD_DEFINES_BUILDRULEFAMILY][GenFdsGlo > >balVariable.ToolChainTag]: > >+ GenFdsGlobalVariable.BuildRuleFamily = > >ToolDefinition[DataType.TAB_TOD_DEFINES_BUILDRULEFAMILY][GenFdsGlo > >balVariable.ToolChainTag] > > > >- if DataType.TAB_TOD_DEFINES_FAMILY in ToolDefinition \ > >- and GenFdsGlobalVariable.ToolChainTag in > >ToolDefinition[DataType.TAB_TOD_DEFINES_FAMILY] \ > >- and > >ToolDefinition[DataType.TAB_TOD_DEFINES_FAMILY][GenFdsGlobalVariable. > >ToolChainTag]: > >- GenFdsGlobalVariable.ToolChainFamily = > >ToolDefinition[DataType.TAB_TOD_DEFINES_FAMILY][GenFdsGlobalVariable. > >ToolChainTag] > >+ if DataType.TAB_TOD_DEFINES_FAMILY in ToolDefinition \ > >+ and GenFdsGlobalVariable.ToolChainTag in > >ToolDefinition[DataType.TAB_TOD_DEFINES_FAMILY] \ > >+ and > >ToolDefinition[DataType.TAB_TOD_DEFINES_FAMILY][GenFdsGlobalVariable. > >ToolChainTag]: > >+ GenFdsGlobalVariable.ToolChainFamily = > >ToolDefinition[DataType.TAB_TOD_DEFINES_FAMILY][GenFdsGlobalVariable. > >ToolChainTag] > > return GenFdsGlobalVariable.__BuildRuleDatabase > > > > ## GetBuildRules > > # @param Inf: object of InfBuildData > > # @param Arch: current arch > >@@ -834,11 +824,11 @@ class GenFdsGlobalVariable: > > # @param KeyStringList Filter for inputs of section generation > > # @param CurrentArchList Arch list > > # @param NameGuid The Guid name > > # > > def FindExtendTool(KeyStringList, CurrentArchList, NameGuid): > >- ToolDb = ToolDefDict(GenFdsGlobalVariable.ConfDir).ToolsDefTxtDatabase > >+ ToolDb = ToolDef.ToolsDefTxtDatabase > > # if user not specify filter, try to deduce it from global data. > > if KeyStringList is None or KeyStringList == []: > > Target = GenFdsGlobalVariable.TargetName > > ToolChain = GenFdsGlobalVariable.ToolChainTag > > if ToolChain not in ToolDb['TOOL_CHAIN_TAG']: > >@@ -850,19 +840,19 @@ def FindExtendTool(KeyStringList, > >CurrentArchList, > >NameGuid): > > > > if GenFdsGlobalVariable.GuidToolDefinition: > > if NameGuid in GenFdsGlobalVariable.GuidToolDefinition: > > return GenFdsGlobalVariable.GuidToolDefinition[NameGuid] > > > >- ToolDefinition = > >ToolDefDict(GenFdsGlobalVariable.ConfDir).ToolsDefTxtDictionary > >+ ToolDefinition = ToolDef.ToolsDefTxtDictionary > > ToolPathTmp = None > > ToolOption = None > > ToolPathKey = None > > ToolOptionKey = None > > KeyList = None > >- for ToolDef in ToolDefinition.items(): > >- if NameGuid.lower() == ToolDef[1].lower(): > >- KeyList = ToolDef[0].split('_') > >+ for tool_def in ToolDefinition.items(): > >+ if NameGuid.lower() == tool_def[1].lower(): > >+ KeyList = tool_def[0].split('_') > > Key = KeyList[0] + \ > > '_' + \ > > KeyList[1] + \ > > '_' + \ > > KeyList[2] > >diff --git a/BaseTools/Source/Python/Workspace/DscBuildData.py > >b/BaseTools/Source/Python/Workspace/DscBuildData.py > >index 9f65ad54257d..bfd203aee805 100644 > >--- a/BaseTools/Source/Python/Workspace/DscBuildData.py > >+++ b/BaseTools/Source/Python/Workspace/DscBuildData.py > >@@ -17,12 +17,12 @@ from Common.StringUtils import * from > >Common.DataType import * from Common.Misc import * from types import > >* from Common.Expression import * from CommonDataClass.CommonClass > >import SkuInfoClass -from Common.TargetTxtClassObject import > >TargetTxtClassObject -from Common.ToolDefClassObject import > >ToolDefClassObject > >+from Common.TargetTxtClassObject import TargetTxt from > >+Common.ToolDefClassObject import ToolDef > > from .MetaDataTable import * > > from .MetaFileTable import * > > from .MetaFileParser import * > > > > from .WorkspaceCommon import GetDeclaredPcd @@ -3259,19 +3259,15 @@ > >class DscBuildData(PlatformBuildClassObject): > > @property > > def ToolChainFamily(self): > > self._ToolChainFamily = TAB_COMPILER_MSFT > > BuildConfigurationFile = > >os.path.normpath(os.path.join(GlobalData.gConfDirectory, "target.txt")) > > if os.path.isfile(BuildConfigurationFile) == True: > >- TargetTxt = TargetTxtClassObject() > >- TargetTxt.LoadTargetTxtFile(BuildConfigurationFile) > > ToolDefinitionFile = > >TargetTxt.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TOOL_CHAIN_C > >ONF] > > if ToolDefinitionFile == '': > > ToolDefinitionFile = "tools_def.txt" > > ToolDefinitionFile = > >os.path.normpath(mws.join(self.WorkspaceDir, > >'Conf', ToolDefinitionFile)) > > if os.path.isfile(ToolDefinitionFile) == True: > >- ToolDef = ToolDefClassObject() > >- ToolDef.LoadToolDefFile(ToolDefinitionFile) > > ToolDefinition = ToolDef.ToolsDefTxtDatabase > > if TAB_TOD_DEFINES_FAMILY not in ToolDefinition \ > > or self._Toolchain not in > >ToolDefinition[TAB_TOD_DEFINES_FAMILY] > >\ > > or not > > ToolDefinition[TAB_TOD_DEFINES_FAMILY][self._Toolchain]: > > self._ToolChainFamily = TAB_COMPILER_MSFT diff > >--git a/BaseTools/Source/Python/build/build.py > >b/BaseTools/Source/Python/build/build.py > >index 8c3315619afa..5e13453a1254 100644 > >--- a/BaseTools/Source/Python/build/build.py > >+++ b/BaseTools/Source/Python/build/build.py > >@@ -28,12 +28,12 @@ import threading > > from optparse import OptionParser > > from subprocess import * > > from Common import Misc as Utils > > > > from Common.LongFilePathSupport import OpenLongFilePath as open -from > >Common.TargetTxtClassObject import TargetTxtClassObject -from > >Common.ToolDefClassObject import ToolDefClassObject > >+from Common.TargetTxtClassObject import TargetTxt from > >+Common.ToolDefClassObject import ToolDef > > from Common.DataType import * > > from Common.BuildVersion import gBUILD_VERSION from AutoGen.AutoGen > >import * from Common.BuildToolError import * from > >Workspace.WorkspaceDatabase import WorkspaceDatabase @@ -714,12 +714,12 > >@@ class Build(): > > if self.SkuId: > > GlobalData.gSKUID_CMD = self.SkuId > > self.ConfDirectory = BuildOptions.ConfDirectory > > self.SpawnMode = True > > self.BuildReport = BuildReport(BuildOptions.ReportFile, > >BuildOptions.ReportType) > >- self.TargetTxt = TargetTxtClassObject() > >- self.ToolDef = ToolDefClassObject() > >+ self.TargetTxt = TargetTxt > >+ self.ToolDef = ToolDef > > self.AutoGenTime = 0 > > self.MakeTime = 0 > > self.GenFdsTime = 0 > > GlobalData.BuildOptionPcd = BuildOptions.OptionPcd if > >BuildOptions.OptionPcd else [] > > #Set global flag for build mode @@ -813,12 +813,12 @@ class > >Build(): > > EdkLogger.quiet("%-16s = %s" % ("PREBUILD", self.Prebuild)) > > if self.Postbuild: > > EdkLogger.quiet("%-16s = %s" % ("POSTBUILD", self.Postbuild)) > > if self.Prebuild: > > self.LaunchPrebuild() > >- self.TargetTxt = TargetTxtClassObject() > >- self.ToolDef = ToolDefClassObject() > >+ self.TargetTxt = TargetTxt > >+ self.ToolDef = ToolDef > > if not (self.LaunchPrebuildFlag and > >os.path.exists(self.PlatformBuildPath)): > > self.InitBuild() > > > > EdkLogger.info("") > > os.chdir(self.WorkspaceDir) > >@@ -826,27 +826,10 @@ class Build(): > > ## Load configuration > > # > > # This method will parse target.txt and get the build configurations. > > # > > def LoadConfiguration(self): > >- # > >- # Check target.txt and tools_def.txt and Init them > >- # > >- BuildConfigurationFile = > >os.path.normpath(os.path.join(GlobalData.gConfDirectory, > >gBuildConfiguration)) > >- if os.path.isfile(BuildConfigurationFile) == True: > >- StatusCode = > >self.TargetTxt.LoadTargetTxtFile(BuildConfigurationFile) > >- > >- ToolDefinitionFile = > >self.TargetTxt.TargetTxtDictionary[TAB_TAT_DEFINES_TOOL_CHAIN_CONF] > >- if ToolDefinitionFile == '': > >- ToolDefinitionFile = gToolsDefinition > >- ToolDefinitionFile = > >os.path.normpath(mws.join(self.WorkspaceDir, > >'Conf', ToolDefinitionFile)) > >- if os.path.isfile(ToolDefinitionFile) == True: > >- StatusCode = > >self.ToolDef.LoadToolDefFile(ToolDefinitionFile) > >- else: > >- EdkLogger.error("build", FILE_NOT_FOUND, > >ExtraData=ToolDefinitionFile) > >- else: > >- EdkLogger.error("build", FILE_NOT_FOUND, > >ExtraData=BuildConfigurationFile) > > > > # if no ARCH given in command line, get it from target.txt > > if not self.ArchList: > > self.ArchList = > >self.TargetTxt.TargetTxtDictionary[TAB_TAT_DEFINES_TARGET_ARCH] > > self.ArchList = tuple(self.ArchList) > >-- > >2.20.1.windows.1 > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#43607): https://edk2.groups.io/g/devel/message/43607 Mute This Topic: https://groups.io/mt/32239607/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-