BaseTools: AutoGen - refactor class factory

since instances are not added to cache, the factory does nothing.

Cc: Liming Gao <liming.gao@intel.com>
Cc: Yonghong Zhu <yonghong.zhu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Jaben Carsey <jaben.carsey@intel.com>
Reviewed-by: Yonghong Zhu <yonghong.zhu@intel.com>
This commit is contained in:
Carsey, Jaben 2018-04-28 06:32:23 +08:00 committed by Yonghong Zhu
parent c23ef28c20
commit aaa5a23c95
1 changed files with 4 additions and 19 deletions

View File

@ -47,21 +47,10 @@ def ListFileMacro(FileType):
return "%s_LIST" % FileListMacro(FileType)
class TargetDescBlock(object):
_Cache_ = {} # {TargetFile : TargetDescBlock object}
def __init__(self, Inputs, Outputs, Commands, Dependencies):
self.InitWorker(Inputs, Outputs, Commands, Dependencies)
# Factory method
def __new__(Class, Inputs, Outputs, Commands, Dependencies):
if Outputs[0] in Class._Cache_:
Tdb = Class._Cache_[Outputs[0]]
for File in Inputs:
Tdb.AddInput(File)
else:
Tdb = super(TargetDescBlock, Class).__new__(Class)
Tdb._Init(Inputs, Outputs, Commands, Dependencies)
#Class._Cache_[Outputs[0]] = Tdb
return Tdb
def _Init(self, Inputs, Outputs, Commands, Dependencies):
def InitWorker(self, Inputs, Outputs, Commands, Dependencies):
self.Inputs = Inputs
self.Outputs = Outputs
self.Commands = Commands
@ -90,10 +79,6 @@ class TargetDescBlock(object):
def IsMultipleInput(self):
return len(self.Inputs) > 1
@staticmethod
def Renew():
TargetDescBlock._Cache_ = {}
## Class for one build rule
#
# This represents a build rule which can give out corresponding command list for
@ -278,7 +263,7 @@ class FileBuildRule:
# Command line should be regenerated since some macros are different
#
CommandList = self._BuildCommand(BuildRulePlaceholderDict)
TargetDesc._Init([SourceFile], DstFile, CommandList, self.ExtraSourceFileList)
TargetDesc.InitWorker([SourceFile], DstFile, CommandList, self.ExtraSourceFileList)
break
else:
TargetDesc.AddInput(SourceFile)