]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/AutoGen/GenDepex.py
BaseTools: AutoGen - refactor function to remove extra variables
[mirror_edk2.git] / BaseTools / Source / Python / AutoGen / GenDepex.py
index a390d560fc1a7db8834b7de4926aebee2f15a555..100f1250b31f918ffd071b695d61132a191ce5ad 100644 (file)
@@ -24,24 +24,27 @@ from Common.Misc import SaveFileOnChange
 from Common.Misc import GuidStructureStringToGuidString\r
 from Common import EdkLogger as EdkLogger\r
 from Common.BuildVersion import gBUILD_VERSION\r
+from Common.DataType import *\r
 \r
 ## Regular expression for matching "DEPENDENCY_START ... DEPENDENCY_END"\r
 gStartClosePattern = re.compile(".*DEPENDENCY_START(.+)DEPENDENCY_END.*", re.S)\r
 \r
 ## Mapping between module type and EFI phase\r
 gType2Phase = {\r
-    "BASE"              :   None,\r
-    "SEC"               :   "PEI",\r
-    "PEI_CORE"          :   "PEI",\r
-    "PEIM"              :   "PEI",\r
-    "DXE_CORE"          :   "DXE",\r
-    "DXE_DRIVER"        :   "DXE",\r
-    "DXE_SMM_DRIVER"    :   "DXE",\r
-    "DXE_RUNTIME_DRIVER":   "DXE",\r
-    "DXE_SAL_DRIVER"    :   "DXE",\r
-    "UEFI_DRIVER"       :   "DXE",\r
-    "UEFI_APPLICATION"  :   "DXE",\r
-    "SMM_CORE"          :   "DXE",\r
+    SUP_MODULE_BASE              :   None,\r
+    SUP_MODULE_SEC               :   "PEI",\r
+    SUP_MODULE_PEI_CORE          :   "PEI",\r
+    SUP_MODULE_PEIM              :   "PEI",\r
+    SUP_MODULE_DXE_CORE          :   "DXE",\r
+    SUP_MODULE_DXE_DRIVER        :   "DXE",\r
+    SUP_MODULE_DXE_SMM_DRIVER    :   "DXE",\r
+    SUP_MODULE_DXE_RUNTIME_DRIVER:   "DXE",\r
+    SUP_MODULE_DXE_SAL_DRIVER    :   "DXE",\r
+    SUP_MODULE_UEFI_DRIVER       :   "DXE",\r
+    SUP_MODULE_UEFI_APPLICATION  :   "DXE",\r
+    SUP_MODULE_SMM_CORE          :   "DXE",\r
+    SUP_MODULE_MM_STANDALONE     :   "MM",\r
+    SUP_MODULE_MM_CORE_STANDALONE :  "MM",\r
 }\r
 \r
 ## Convert dependency expression string into EFI internal representation\r
@@ -98,6 +101,19 @@ class DependencyExpression:
             "FALSE" :   0x07,\r
             "END"   :   0x08,\r
             "SOR"   :   0x09\r
+        },\r
+\r
+        "MM"   : {\r
+            "BEFORE":   0x00,\r
+            "AFTER" :   0x01,\r
+            "PUSH"  :   0x02,\r
+            "AND"   :   0x03,\r
+            "OR"    :   0x04,\r
+            "NOT"   :   0x05,\r
+            "TRUE"  :   0x06,\r
+            "FALSE" :   0x07,\r
+            "END"   :   0x08,\r
+            "SOR"   :   0x09\r
         }\r
     }\r
 \r
@@ -284,12 +300,12 @@ class DependencyExpression:
             NewOperand.append(Token)\r
 \r
         # don't generate depex if only TRUE operand left\r
-        if self.ModuleType == 'PEIM' and len(NewOperand) == 1 and NewOperand[0] == 'TRUE':\r
+        if self.ModuleType == SUP_MODULE_PEIM and len(NewOperand) == 1 and NewOperand[0] == 'TRUE':\r
             self.PostfixNotation = []\r
-            return            \r
+            return\r
 \r
         # don't generate depex if all operands are architecture protocols\r
-        if self.ModuleType in ['UEFI_DRIVER', 'DXE_DRIVER', 'DXE_RUNTIME_DRIVER', 'DXE_SAL_DRIVER', 'DXE_SMM_DRIVER'] and \\r
+        if self.ModuleType in [SUP_MODULE_UEFI_DRIVER, SUP_MODULE_DXE_DRIVER, SUP_MODULE_DXE_RUNTIME_DRIVER, SUP_MODULE_DXE_SAL_DRIVER, SUP_MODULE_DXE_SMM_DRIVER, SUP_MODULE_MM_STANDALONE] and \\r
            Op == 'AND' and \\r
            self.ArchProtocols == set([GuidStructureStringToGuidString(Guid) for Guid in AllOperand]):\r
             self.PostfixNotation = []\r
@@ -345,7 +361,7 @@ class DependencyExpression:
 \r
         FilePath = ""\r
         FileChangeFlag = True\r
-        if File == None:\r
+        if File is None:\r
             sys.stdout.write(Buffer.getvalue())\r
             FilePath = "STDOUT"\r
         else:\r
@@ -399,13 +415,13 @@ def Main():
         EdkLogger.SetLevel(EdkLogger.QUIET)\r
     elif Option.verbose:\r
         EdkLogger.SetLevel(EdkLogger.VERBOSE)\r
-    elif Option.debug != None:\r
+    elif Option.debug is not None:\r
         EdkLogger.SetLevel(Option.debug + 1)\r
     else:\r
         EdkLogger.SetLevel(EdkLogger.INFO)\r
 \r
     try:\r
-        if Option.ModuleType == None or Option.ModuleType not in gType2Phase:\r
+        if Option.ModuleType is None or Option.ModuleType not in gType2Phase:\r
             EdkLogger.error("GenDepex", OPTION_MISSING, "Module type is not specified or supported")\r
 \r
         DxsFile = ''\r
@@ -422,9 +438,9 @@ def Main():
             EdkLogger.error("GenDepex", OPTION_MISSING, "No expression string or file given")\r
 \r
         Dpx = DependencyExpression(DxsString, Option.ModuleType, Option.Optimize)\r
-        if Option.OutputFile != None:\r
+        if Option.OutputFile is not None:\r
             FileChangeFlag = Dpx.Generate(Option.OutputFile)\r
-            if not FileChangeFlag and DxsFile: \r
+            if not FileChangeFlag and DxsFile:\r
                 #\r
                 # Touch the output file if its time stamp is older than the original\r
                 # DXS file to avoid re-invoke this tool for the dependency check in build rule.\r
@@ -435,7 +451,7 @@ def Main():
             Dpx.Generate()\r
     except BaseException, X:\r
         EdkLogger.quiet("")\r
-        if Option != None and Option.debug != None:\r
+        if Option is not None and Option.debug is not None:\r
             EdkLogger.quiet(traceback.format_exc())\r
         else:\r
             EdkLogger.quiet(str(X))\r