mirror of https://github.com/acidanthera/audk.git
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:
parent
c23ef28c20
commit
aaa5a23c95
|
@ -47,21 +47,10 @@ def ListFileMacro(FileType):
|
||||||
return "%s_LIST" % FileListMacro(FileType)
|
return "%s_LIST" % FileListMacro(FileType)
|
||||||
|
|
||||||
class TargetDescBlock(object):
|
class TargetDescBlock(object):
|
||||||
_Cache_ = {} # {TargetFile : TargetDescBlock object}
|
def __init__(self, Inputs, Outputs, Commands, Dependencies):
|
||||||
|
self.InitWorker(Inputs, Outputs, Commands, Dependencies)
|
||||||
|
|
||||||
# Factory method
|
def InitWorker(self, Inputs, Outputs, Commands, Dependencies):
|
||||||
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):
|
|
||||||
self.Inputs = Inputs
|
self.Inputs = Inputs
|
||||||
self.Outputs = Outputs
|
self.Outputs = Outputs
|
||||||
self.Commands = Commands
|
self.Commands = Commands
|
||||||
|
@ -90,10 +79,6 @@ class TargetDescBlock(object):
|
||||||
def IsMultipleInput(self):
|
def IsMultipleInput(self):
|
||||||
return len(self.Inputs) > 1
|
return len(self.Inputs) > 1
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def Renew():
|
|
||||||
TargetDescBlock._Cache_ = {}
|
|
||||||
|
|
||||||
## Class for one build rule
|
## Class for one build rule
|
||||||
#
|
#
|
||||||
# This represents a build rule which can give out corresponding command list for
|
# 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
|
# Command line should be regenerated since some macros are different
|
||||||
#
|
#
|
||||||
CommandList = self._BuildCommand(BuildRulePlaceholderDict)
|
CommandList = self._BuildCommand(BuildRulePlaceholderDict)
|
||||||
TargetDesc._Init([SourceFile], DstFile, CommandList, self.ExtraSourceFileList)
|
TargetDesc.InitWorker([SourceFile], DstFile, CommandList, self.ExtraSourceFileList)
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
TargetDesc.AddInput(SourceFile)
|
TargetDesc.AddInput(SourceFile)
|
||||||
|
|
Loading…
Reference in New Issue