]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/AutoGen/BuildEngine.py
BaseTools: AutoGen - refactor function to remove extra variables
[mirror_edk2.git] / BaseTools / Source / Python / AutoGen / BuildEngine.py
index 1663ddd21bb03ec03563053b836ec0873de98d3b..dd6301b01fce4dc3499b7847ae2b0a43631ae8c5 100644 (file)
@@ -1,7 +1,7 @@
 ## @file\r
 # The engine for building files\r
 #\r
-# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
 # This program and the accompanying materials\r
 # are licensed and made available under the terms and conditions of the BSD License\r
 # which accompanies this distribution.  The full text of the license may be found at\r
@@ -47,21 +47,10 @@ def ListFileMacro(FileType):
     return "%s_LIST" % FileListMacro(FileType)\r
 \r
 class TargetDescBlock(object):\r
-    _Cache_ = {}    # {TargetFile : TargetDescBlock object}\r
-\r
-    # Factory method\r
-    def __new__(Class, Inputs, Outputs, Commands, Dependencies):\r
-        if Outputs[0] in Class._Cache_:\r
-            Tdb = Class._Cache_[Outputs[0]]\r
-            for File in Inputs:\r
-                Tdb.AddInput(File)\r
-        else:\r
-            Tdb = super(TargetDescBlock, Class).__new__(Class)\r
-            Tdb._Init(Inputs, Outputs, Commands, Dependencies)\r
-            #Class._Cache_[Outputs[0]] = Tdb\r
-        return Tdb\r
+    def __init__(self, Inputs, Outputs, Commands, Dependencies):\r
+        self.InitWorker(Inputs, Outputs, Commands, Dependencies)\r
 \r
-    def _Init(self, Inputs, Outputs, Commands, Dependencies):\r
+    def InitWorker(self, Inputs, Outputs, Commands, Dependencies):\r
         self.Inputs = Inputs\r
         self.Outputs = Outputs\r
         self.Commands = Commands\r
@@ -90,10 +79,6 @@ class TargetDescBlock(object):
     def IsMultipleInput(self):\r
         return len(self.Inputs) > 1\r
 \r
-    @staticmethod\r
-    def Renew():\r
-        TargetDescBlock._Cache_ = {}\r
-\r
 ## Class for one build rule\r
 #\r
 # This represents a build rule which can give out corresponding command list for\r
@@ -278,7 +263,7 @@ class FileBuildRule:
                         # Command line should be regenerated since some macros are different\r
                         #\r
                         CommandList = self._BuildCommand(BuildRulePlaceholderDict)\r
-                        TargetDesc._Init([SourceFile], DstFile, CommandList, self.ExtraSourceFileList)\r
+                        TargetDesc.InitWorker([SourceFile], DstFile, CommandList, self.ExtraSourceFileList)\r
                         break\r
             else:\r
                 TargetDesc.AddInput(SourceFile)\r
@@ -364,7 +349,7 @@ class BuildRule:
         self.Parse()\r
 \r
         # some intrinsic rules\r
-        self.RuleDatabase[TAB_DEFAULT_BINARY_FILE, "COMMON", "COMMON", "COMMON"] = self._BinaryFileRule\r
+        self.RuleDatabase[TAB_DEFAULT_BINARY_FILE, TAB_COMMON, TAB_COMMON, TAB_COMMON] = self._BinaryFileRule\r
         self.FileTypeList.add(TAB_DEFAULT_BINARY_FILE)\r
 \r
     ## Parse the build rule strings\r
@@ -424,8 +409,8 @@ class BuildRule:
     def EndOfSection(self):\r
         Database = self.RuleDatabase\r
         # if there's specific toochain family, 'COMMON' doesn't make sense any more\r
-        if len(self._TotalToolChainFamilySet) > 1 and 'COMMON' in self._TotalToolChainFamilySet:\r
-            self._TotalToolChainFamilySet.remove('COMMON')\r
+        if len(self._TotalToolChainFamilySet) > 1 and TAB_COMMON in self._TotalToolChainFamilySet:\r
+            self._TotalToolChainFamilySet.remove(TAB_COMMON)\r
         for Family in self._TotalToolChainFamilySet:\r
             Input = self._RuleInfo[Family, self._InputFile]\r
             Output = self._RuleInfo[Family, self._OutputFile]\r
@@ -452,8 +437,8 @@ class BuildRule:
         FileType = ''\r
         RuleNameList = self.RuleContent[LineIndex][1:-1].split(',')\r
         for RuleName in RuleNameList:\r
-            Arch = 'COMMON'\r
-            BuildType = 'COMMON'\r
+            Arch = TAB_COMMON\r
+            BuildType = TAB_COMMON\r
             TokenList = [Token.strip().upper() for Token in RuleName.split('.')]\r
             # old format: Build.File-Type\r
             if TokenList[0] == "BUILD":\r
@@ -486,12 +471,12 @@ class BuildRule:
             self._BuildTypeList.add(BuildType)\r
             self._ArchList.add(Arch)\r
 \r
-        if 'COMMON' in self._BuildTypeList and len(self._BuildTypeList) > 1:\r
+        if TAB_COMMON in self._BuildTypeList and len(self._BuildTypeList) > 1:\r
             EdkLogger.error("build", FORMAT_INVALID,\r
                             "Specific build types must not be mixed with common one",\r
                             File=self.RuleFile, Line=LineIndex + 1,\r
                             ExtraData=self.RuleContent[LineIndex])\r
-        if 'COMMON' in self._ArchList and len(self._ArchList) > 1:\r
+        if TAB_COMMON in self._ArchList and len(self._ArchList) > 1:\r
             EdkLogger.error("build", FORMAT_INVALID,\r
                             "Specific ARCH must not be mixed with common one",\r
                             File=self.RuleFile, Line=LineIndex + 1,\r
@@ -524,7 +509,7 @@ class BuildRule:
             if len(TokenList) > 1:\r
                 Family = TokenList[1].strip().upper()\r
             else:\r
-                Family = "COMMON"\r
+                Family = TAB_COMMON\r
 \r
             if Family not in FamilyList:\r
                 FamilyList.append(Family)\r
@@ -532,7 +517,7 @@ class BuildRule:
         self._FamilyList = FamilyList\r
         self._TotalToolChainFamilySet.update(FamilyList)\r
         self._State = SectionType.upper()\r
-        if 'COMMON' in FamilyList and len(FamilyList) > 1:\r
+        if TAB_COMMON in FamilyList and len(FamilyList) > 1:\r
             EdkLogger.error("build", FORMAT_INVALID,\r
                             "Specific tool chain family should not be mixed with general one",\r
                             File=self.RuleFile, Line=LineIndex + 1,\r
@@ -612,11 +597,11 @@ if __name__ == '__main__':
     EdkLogger.Initialize()\r
     if len(sys.argv) > 1:\r
         Br = BuildRule(sys.argv[1])\r
-        print str(Br[".c", "DXE_DRIVER", "IA32", "MSFT"][1])\r
+        print str(Br[".c", SUP_MODULE_DXE_DRIVER, "IA32", "MSFT"][1])\r
         print\r
-        print str(Br[".c", "DXE_DRIVER", "IA32", "INTEL"][1])\r
+        print str(Br[".c", SUP_MODULE_DXE_DRIVER, "IA32", "INTEL"][1])\r
         print\r
-        print str(Br[".c", "DXE_DRIVER", "IA32", "GCC"][1])\r
+        print str(Br[".c", SUP_MODULE_DXE_DRIVER, "IA32", "GCC"][1])\r
         print\r
         print str(Br[".ac", "ACPI_TABLE", "IA32", "MSFT"][1])\r
         print\r
@@ -624,7 +609,7 @@ if __name__ == '__main__':
         print\r
         print str(Br[".ac", "ACPI_TABLE", "IA32", "MSFT"][1])\r
         print\r
-        print str(Br[".s", "SEC", "IPF", "COMMON"][1])\r
+        print str(Br[".s", SUP_MODULE_SEC, "IPF", "COMMON"][1])\r
         print\r
-        print str(Br[".s", "SEC"][1])\r
+        print str(Br[".s", SUP_MODULE_SEC][1])\r
 \r