from io import BytesIO\r
\r
from .StrGather import *\r
-from .BuildEngine import BuildRule\r
+from .BuildEngine import BuildRuleObj as BuildRule\r
+from .BuildEngine import gDefaultBuildRuleFile,AutoGenReqBuildRuleVerNum\r
import shutil\r
from Common.LongFilePathSupport import CopyLongFilePath\r
from Common.BuildToolError import *\r
gMakeTypeMap = {TAB_COMPILER_MSFT:"nmake", "GCC":"gmake"}\r
\r
\r
-## Build rule configuration file\r
-gDefaultBuildRuleFile = 'build_rule.txt'\r
-\r
-## Build rule default version\r
-AutoGenReqBuildRuleVerNum = "0.1"\r
-\r
## default file name for AutoGen\r
gAutoGenCodeFileName = "AutoGen.c"\r
gAutoGenHeaderFileName = "AutoGen.h"\r
def EdkIIBuildOption(self):\r
return self._ExpandBuildOption(self.Platform.BuildOptions, EDKII_NAME)\r
\r
- ## Parse build_rule.txt in Conf Directory.\r
- #\r
- # @retval BuildRule object\r
- #\r
- @cached_property\r
- def BuildRule(self):\r
- BuildRuleFile = None\r
- if TAB_TAT_DEFINES_BUILD_RULE_CONF in self.Workspace.TargetTxt.TargetTxtDictionary:\r
- BuildRuleFile = self.Workspace.TargetTxt.TargetTxtDictionary[TAB_TAT_DEFINES_BUILD_RULE_CONF]\r
- if not BuildRuleFile:\r
- BuildRuleFile = gDefaultBuildRuleFile\r
- RetVal = BuildRule(BuildRuleFile)\r
- if RetVal._FileVersion == "":\r
- RetVal._FileVersion = AutoGenReqBuildRuleVerNum\r
- else:\r
- if RetVal._FileVersion < AutoGenReqBuildRuleVerNum :\r
- # If Build Rule's version is less than the version number required by the tools, halting the build.\r
- EdkLogger.error("build", AUTOGEN_ERROR,\r
- 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])"\\r
- % (RetVal._FileVersion, AutoGenReqBuildRuleVerNum))\r
- return RetVal\r
-\r
## Summarize the packages used by modules in this platform\r
@cached_property\r
def PackageList(self):\r
@cached_property\r
def BuildRules(self):\r
RetVal = {}\r
- BuildRuleDatabase = self.PlatformInfo.BuildRule\r
+ BuildRuleDatabase = BuildRule\r
for Type in BuildRuleDatabase.FileTypeList:\r
#first try getting build rule by BuildRuleFamily\r
RuleObject = BuildRuleDatabase[Type, self.BuildType, self.Arch, self.BuildRuleFamily]\r
from Common.Misc import tdict, PathClass\r
from Common.StringUtils import NormPath\r
from Common.DataType import *\r
+from Common.TargetTxtClassObject import TargetTxt\r
+gDefaultBuildRuleFile = 'build_rule.txt'\r
+AutoGenReqBuildRuleVerNum = '0.1'\r
\r
import Common.EdkLogger as EdkLogger\r
\r
_UnknownSection : SkipSection,\r
}\r
\r
+def GetBuildRule():\r
+ BuildRuleFile = None\r
+ if TAB_TAT_DEFINES_BUILD_RULE_CONF in TargetTxt.TargetTxtDictionary:\r
+ BuildRuleFile = TargetTxt.TargetTxtDictionary[TAB_TAT_DEFINES_BUILD_RULE_CONF]\r
+ if not BuildRuleFile:\r
+ BuildRuleFile = gDefaultBuildRuleFile\r
+ RetVal = BuildRule(BuildRuleFile)\r
+ if RetVal._FileVersion == "":\r
+ RetVal._FileVersion = AutoGenReqBuildRuleVerNum\r
+ else:\r
+ if RetVal._FileVersion < AutoGenReqBuildRuleVerNum :\r
+ # If Build Rule's version is less than the version number required by the tools, halting the build.\r
+ EdkLogger.error("build", AUTOGEN_ERROR,\r
+ 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])"\\r
+ % (RetVal._FileVersion, AutoGenReqBuildRuleVerNum))\r
+ return RetVal\r
+\r
+BuildRuleObj = GetBuildRule()\r
+\r
# This acts like the main() function for the script, unless it is 'import'ed into another\r
# script.\r
if __name__ == '__main__':\r
Target.LoadTargetTxtFile(os.path.normpath(os.path.join(ConfDir, gDefaultTargetTxtFile)))\r
return Target\r
\r
+TargetTxt = TargetTxtDict(os.path.join(os.getenv("WORKSPACE"),"Conf"))\r
+\r
##\r
#\r
# This acts like the main() function for the script, unless it is 'import'ed into another\r
from . import EdkLogger\r
\r
from .BuildToolError import *\r
-from Common.TargetTxtClassObject import TargetTxtDict\r
+from Common.TargetTxtClassObject import TargetTxt\r
from Common.LongFilePathSupport import OpenLongFilePath as open\r
from Common.Misc import PathClass\r
from Common.StringUtils import NormPath\r
# @retval ToolDef An instance of ToolDefClassObject() with loaded tools_def.txt\r
#\r
def ToolDefDict(ConfDir):\r
- Target = TargetTxtDict(ConfDir)\r
+ Target = TargetTxt\r
ToolDef = ToolDefClassObject()\r
if TAB_TAT_DEFINES_TOOL_CHAIN_CONF in Target.TargetTxtDictionary:\r
ToolsDefFile = Target.TargetTxtDictionary[TAB_TAT_DEFINES_TOOL_CHAIN_CONF]\r
ToolDef.LoadToolDefFile(os.path.normpath(os.path.join(ConfDir, gDefaultToolsDefFile)))\r
return ToolDef\r
\r
+ToolDef = ToolDefDict((os.path.join(os.getenv("WORKSPACE"),"Conf")))\r
+\r
##\r
#\r
# This acts like the main() function for the script, unless it is 'import'ed into another\r
from io import BytesIO\r
\r
import Common.LongFilePathOs as os\r
-from Common.TargetTxtClassObject import TargetTxtClassObject\r
+from Common.TargetTxtClassObject import TargetTxt\r
from Common.DataType import *\r
import Common.GlobalData as GlobalData\r
from Common import EdkLogger\r
GlobalData.gConfDirectory = GenFdsGlobalVariable.ConfDir\r
BuildConfigurationFile = os.path.normpath(os.path.join(ConfDirectoryPath, "target.txt"))\r
if os.path.isfile(BuildConfigurationFile) == True:\r
- TargetTxt = TargetTxtClassObject()\r
- TargetTxt.LoadTargetTxtFile(BuildConfigurationFile)\r
# if no build target given in command line, get it from target.txt\r
if not GenFdsGlobalVariable.TargetName:\r
BuildTargetList = TargetTxt.TargetTxtDictionary[TAB_TAT_DEFINES_TARGET]\r
from Common import EdkLogger\r
from Common.Misc import SaveFileOnChange\r
\r
-from Common.TargetTxtClassObject import TargetTxtClassObject\r
-from Common.ToolDefClassObject import ToolDefClassObject, ToolDefDict\r
-from AutoGen.BuildEngine import BuildRule\r
+from Common.TargetTxtClassObject import TargetTxt\r
+from Common.ToolDefClassObject import ToolDef\r
+from AutoGen.BuildEngine import BuildRuleObj\r
import Common.DataType as DataType\r
from Common.Misc import PathClass\r
from Common.LongFilePathSupport import OpenLongFilePath as open\r
def _LoadBuildRule():\r
if GenFdsGlobalVariable.__BuildRuleDatabase:\r
return GenFdsGlobalVariable.__BuildRuleDatabase\r
- BuildConfigurationFile = os.path.normpath(os.path.join(GenFdsGlobalVariable.ConfDir, "target.txt"))\r
- TargetTxt = TargetTxtClassObject()\r
- if os.path.isfile(BuildConfigurationFile) == True:\r
- TargetTxt.LoadTargetTxtFile(BuildConfigurationFile)\r
- if DataType.TAB_TAT_DEFINES_BUILD_RULE_CONF in TargetTxt.TargetTxtDictionary:\r
- BuildRuleFile = TargetTxt.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_BUILD_RULE_CONF]\r
- if not BuildRuleFile:\r
- BuildRuleFile = 'Conf/build_rule.txt'\r
- GenFdsGlobalVariable.__BuildRuleDatabase = BuildRule(BuildRuleFile)\r
- ToolDefinitionFile = TargetTxt.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TOOL_CHAIN_CONF]\r
- if ToolDefinitionFile == '':\r
- ToolDefinitionFile = "Conf/tools_def.txt"\r
- if os.path.isfile(ToolDefinitionFile):\r
- ToolDef = ToolDefClassObject()\r
- ToolDef.LoadToolDefFile(ToolDefinitionFile)\r
- ToolDefinition = ToolDef.ToolsDefTxtDatabase\r
- if DataType.TAB_TOD_DEFINES_BUILDRULEFAMILY in ToolDefinition \\r
- and GenFdsGlobalVariable.ToolChainTag in ToolDefinition[DataType.TAB_TOD_DEFINES_BUILDRULEFAMILY] \\r
- and ToolDefinition[DataType.TAB_TOD_DEFINES_BUILDRULEFAMILY][GenFdsGlobalVariable.ToolChainTag]:\r
- GenFdsGlobalVariable.BuildRuleFamily = ToolDefinition[DataType.TAB_TOD_DEFINES_BUILDRULEFAMILY][GenFdsGlobalVariable.ToolChainTag]\r
-\r
- if DataType.TAB_TOD_DEFINES_FAMILY in ToolDefinition \\r
- and GenFdsGlobalVariable.ToolChainTag in ToolDefinition[DataType.TAB_TOD_DEFINES_FAMILY] \\r
- and ToolDefinition[DataType.TAB_TOD_DEFINES_FAMILY][GenFdsGlobalVariable.ToolChainTag]:\r
- GenFdsGlobalVariable.ToolChainFamily = ToolDefinition[DataType.TAB_TOD_DEFINES_FAMILY][GenFdsGlobalVariable.ToolChainTag]\r
+ GenFdsGlobalVariable.__BuildRuleDatabase = BuildRuleObj\r
+ ToolDefinitionFile = TargetTxt.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TOOL_CHAIN_CONF]\r
+ if ToolDefinitionFile == '':\r
+ ToolDefinitionFile = "Conf/tools_def.txt"\r
+ if os.path.isfile(ToolDefinitionFile):\r
+ ToolDefinition = ToolDef.ToolsDefTxtDatabase\r
+ if DataType.TAB_TOD_DEFINES_BUILDRULEFAMILY in ToolDefinition \\r
+ and GenFdsGlobalVariable.ToolChainTag in ToolDefinition[DataType.TAB_TOD_DEFINES_BUILDRULEFAMILY] \\r
+ and ToolDefinition[DataType.TAB_TOD_DEFINES_BUILDRULEFAMILY][GenFdsGlobalVariable.ToolChainTag]:\r
+ GenFdsGlobalVariable.BuildRuleFamily = ToolDefinition[DataType.TAB_TOD_DEFINES_BUILDRULEFAMILY][GenFdsGlobalVariable.ToolChainTag]\r
+\r
+ if DataType.TAB_TOD_DEFINES_FAMILY in ToolDefinition \\r
+ and GenFdsGlobalVariable.ToolChainTag in ToolDefinition[DataType.TAB_TOD_DEFINES_FAMILY] \\r
+ and ToolDefinition[DataType.TAB_TOD_DEFINES_FAMILY][GenFdsGlobalVariable.ToolChainTag]:\r
+ GenFdsGlobalVariable.ToolChainFamily = ToolDefinition[DataType.TAB_TOD_DEFINES_FAMILY][GenFdsGlobalVariable.ToolChainTag]\r
return GenFdsGlobalVariable.__BuildRuleDatabase\r
\r
## GetBuildRules\r
# @param NameGuid The Guid name\r
#\r
def FindExtendTool(KeyStringList, CurrentArchList, NameGuid):\r
- ToolDb = ToolDefDict(GenFdsGlobalVariable.ConfDir).ToolsDefTxtDatabase\r
+ ToolDb = ToolDef.ToolsDefTxtDatabase\r
# if user not specify filter, try to deduce it from global data.\r
if KeyStringList is None or KeyStringList == []:\r
Target = GenFdsGlobalVariable.TargetName\r
if NameGuid in GenFdsGlobalVariable.GuidToolDefinition:\r
return GenFdsGlobalVariable.GuidToolDefinition[NameGuid]\r
\r
- ToolDefinition = ToolDefDict(GenFdsGlobalVariable.ConfDir).ToolsDefTxtDictionary\r
+ ToolDefinition = ToolDef.ToolsDefTxtDictionary\r
ToolPathTmp = None\r
ToolOption = None\r
ToolPathKey = None\r
ToolOptionKey = None\r
KeyList = None\r
- for ToolDef in ToolDefinition.items():\r
- if NameGuid.lower() == ToolDef[1].lower():\r
- KeyList = ToolDef[0].split('_')\r
+ for tool_def in ToolDefinition.items():\r
+ if NameGuid.lower() == tool_def[1].lower():\r
+ KeyList = tool_def[0].split('_')\r
Key = KeyList[0] + \\r
'_' + \\r
KeyList[1] + \\r
from types import *\r
from Common.Expression import *\r
from CommonDataClass.CommonClass import SkuInfoClass\r
-from Common.TargetTxtClassObject import TargetTxtClassObject\r
-from Common.ToolDefClassObject import ToolDefClassObject\r
+from Common.TargetTxtClassObject import TargetTxt\r
+from Common.ToolDefClassObject import ToolDef\r
from .MetaDataTable import *\r
from .MetaFileTable import *\r
from .MetaFileParser import *\r
self._ToolChainFamily = TAB_COMPILER_MSFT\r
BuildConfigurationFile = os.path.normpath(os.path.join(GlobalData.gConfDirectory, "target.txt"))\r
if os.path.isfile(BuildConfigurationFile) == True:\r
- TargetTxt = TargetTxtClassObject()\r
- TargetTxt.LoadTargetTxtFile(BuildConfigurationFile)\r
ToolDefinitionFile = TargetTxt.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TOOL_CHAIN_CONF]\r
if ToolDefinitionFile == '':\r
ToolDefinitionFile = "tools_def.txt"\r
ToolDefinitionFile = os.path.normpath(mws.join(self.WorkspaceDir, 'Conf', ToolDefinitionFile))\r
if os.path.isfile(ToolDefinitionFile) == True:\r
- ToolDef = ToolDefClassObject()\r
- ToolDef.LoadToolDefFile(ToolDefinitionFile)\r
ToolDefinition = ToolDef.ToolsDefTxtDatabase\r
if TAB_TOD_DEFINES_FAMILY not in ToolDefinition \\r
or self._Toolchain not in ToolDefinition[TAB_TOD_DEFINES_FAMILY] \\r
from Common import Misc as Utils\r
\r
from Common.LongFilePathSupport import OpenLongFilePath as open\r
-from Common.TargetTxtClassObject import TargetTxtClassObject\r
-from Common.ToolDefClassObject import ToolDefClassObject\r
+from Common.TargetTxtClassObject import TargetTxt\r
+from Common.ToolDefClassObject import ToolDef\r
from Common.DataType import *\r
from Common.BuildVersion import gBUILD_VERSION\r
from AutoGen.AutoGen import *\r
self.ConfDirectory = BuildOptions.ConfDirectory\r
self.SpawnMode = True\r
self.BuildReport = BuildReport(BuildOptions.ReportFile, BuildOptions.ReportType)\r
- self.TargetTxt = TargetTxtClassObject()\r
- self.ToolDef = ToolDefClassObject()\r
+ self.TargetTxt = TargetTxt\r
+ self.ToolDef = ToolDef\r
self.AutoGenTime = 0\r
self.MakeTime = 0\r
self.GenFdsTime = 0\r
EdkLogger.quiet("%-16s = %s" % ("POSTBUILD", self.Postbuild))\r
if self.Prebuild:\r
self.LaunchPrebuild()\r
- self.TargetTxt = TargetTxtClassObject()\r
- self.ToolDef = ToolDefClassObject()\r
+ self.TargetTxt = TargetTxt\r
+ self.ToolDef = ToolDef\r
if not (self.LaunchPrebuildFlag and os.path.exists(self.PlatformBuildPath)):\r
self.InitBuild()\r
\r
# This method will parse target.txt and get the build configurations.\r
#\r
def LoadConfiguration(self):\r
- #\r
- # Check target.txt and tools_def.txt and Init them\r
- #\r
- BuildConfigurationFile = os.path.normpath(os.path.join(GlobalData.gConfDirectory, gBuildConfiguration))\r
- if os.path.isfile(BuildConfigurationFile) == True:\r
- StatusCode = self.TargetTxt.LoadTargetTxtFile(BuildConfigurationFile)\r
-\r
- ToolDefinitionFile = self.TargetTxt.TargetTxtDictionary[TAB_TAT_DEFINES_TOOL_CHAIN_CONF]\r
- if ToolDefinitionFile == '':\r
- ToolDefinitionFile = gToolsDefinition\r
- ToolDefinitionFile = os.path.normpath(mws.join(self.WorkspaceDir, 'Conf', ToolDefinitionFile))\r
- if os.path.isfile(ToolDefinitionFile) == True:\r
- StatusCode = self.ToolDef.LoadToolDefFile(ToolDefinitionFile)\r
- else:\r
- EdkLogger.error("build", FILE_NOT_FOUND, ExtraData=ToolDefinitionFile)\r
- else:\r
- EdkLogger.error("build", FILE_NOT_FOUND, ExtraData=BuildConfigurationFile)\r
\r
# if no ARCH given in command line, get it from target.txt\r
if not self.ArchList:\r