from __future__ import absolute_import\r
\r
import Common.LongFilePathOs as os\r
+import sys\r
from sys import stdout\r
from subprocess import PIPE,Popen\r
from struct import Struct\r
from Common import EdkLogger\r
from Common.Misc import SaveFileOnChange\r
\r
-from Common.TargetTxtClassObject import TargetTxt\r
-from Common.ToolDefClassObject import ToolDef\r
-from AutoGen.BuildEngine import BuildRuleObj\r
+from Common.TargetTxtClassObject import TargetTxtDict\r
+from Common.ToolDefClassObject import ToolDefDict\r
+from AutoGen.BuildEngine import ToolBuildRule\r
import Common.DataType as DataType\r
from Common.Misc import PathClass\r
from Common.LongFilePathSupport import OpenLongFilePath as open\r
SecCmdList = []\r
CopyList = []\r
ModuleFile = ''\r
- EnableGenfdsMultiThread = False\r
+ EnableGenfdsMultiThread = True\r
\r
#\r
# The list whose element are flags to indicate if large FFS or SECTION files exist in FV.\r
def _LoadBuildRule():\r
if GenFdsGlobalVariable.__BuildRuleDatabase:\r
return GenFdsGlobalVariable.__BuildRuleDatabase\r
- GenFdsGlobalVariable.__BuildRuleDatabase = BuildRuleObj\r
- ToolDefinitionFile = TargetTxt.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TOOL_CHAIN_CONF]\r
+ BuildRule = ToolBuildRule()\r
+ GenFdsGlobalVariable.__BuildRuleDatabase = BuildRule.ToolBuildRule\r
+ TargetObj = TargetTxtDict()\r
+ ToolDefinitionFile = TargetObj.Target.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
+ ToolDefObj = ToolDefDict((os.path.join(os.getenv("WORKSPACE"), "Conf")))\r
+ ToolDefinition = ToolDefObj.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
"OUTPUT_DIR":os.path.join(BuildDir, "OUTPUT"),\r
"DEBUG_DIR":os.path.join(BuildDir, "DEBUG")\r
}\r
- \r
+\r
BuildRules = {}\r
for Type in BuildRuleDatabase.FileTypeList:\r
#first try getting build rule by BuildRuleFamily\r
\r
SaveFileOnChange(CommandFile, ' '.join(Cmd), False)\r
if IsMakefile:\r
- if GlobalData.gGlobalDefines.get("FAMILY") == "MSFT":\r
+ if sys.platform == "win32":\r
Cmd = ['if', 'exist', Input[0]] + Cmd\r
else:\r
- Cmd = ['test', '-e', Input[0], "&&"] + Cmd\r
+ Cmd = ['-test', '-e', Input[0], "&&"] + Cmd\r
if ' '.join(Cmd).strip() not in GenFdsGlobalVariable.SecCmdList:\r
GenFdsGlobalVariable.SecCmdList.append(' '.join(Cmd).strip())\r
elif GenFdsGlobalVariable.NeedsUpdate(Output, list(Input) + [CommandFile]):\r
# @param MacroDict Dictionary that contains macro value pair\r
#\r
@staticmethod\r
- def MacroExtend (Str, MacroDict={}, Arch=DataType.TAB_COMMON):\r
+ def MacroExtend (Str, MacroDict=None, Arch=DataType.TAB_COMMON):\r
if Str is None:\r
return None\r
\r
# @param NameGuid The Guid name\r
#\r
def FindExtendTool(KeyStringList, CurrentArchList, NameGuid):\r
+ ToolDefObj = ToolDefDict((os.path.join(os.getenv("WORKSPACE"), "Conf")))\r
+ ToolDef = ToolDefObj.ToolDef\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