]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/AutoGen/BuildEngine.py
BaseTools: Singleton the object to handle build conf file
[mirror_edk2.git] / BaseTools / Source / Python / AutoGen / BuildEngine.py
index 14e61140e7bad23727d1209be998a918722e7080..bb915344779338541949dec4ae80c7233daf920a 100644 (file)
@@ -20,6 +20,9 @@ from Common.BuildToolError import *
 from Common.Misc import tdict, PathClass\r
 from Common.StringUtils import NormPath\r
 from Common.DataType import *\r
+from Common.TargetTxtClassObject import TargetTxt\r
+gDefaultBuildRuleFile = 'build_rule.txt'\r
+AutoGenReqBuildRuleVerNum = '0.1'\r
 \r
 import Common.EdkLogger as EdkLogger\r
 \r
@@ -583,6 +586,25 @@ class BuildRule:
         _UnknownSection    : SkipSection,\r
     }\r
 \r
+def GetBuildRule():\r
+    BuildRuleFile = None\r
+    if TAB_TAT_DEFINES_BUILD_RULE_CONF in TargetTxt.TargetTxtDictionary:\r
+        BuildRuleFile = TargetTxt.TargetTxtDictionary[TAB_TAT_DEFINES_BUILD_RULE_CONF]\r
+    if not BuildRuleFile:\r
+        BuildRuleFile = gDefaultBuildRuleFile\r
+    RetVal = BuildRule(BuildRuleFile)\r
+    if RetVal._FileVersion == "":\r
+        RetVal._FileVersion = AutoGenReqBuildRuleVerNum\r
+    else:\r
+        if RetVal._FileVersion < AutoGenReqBuildRuleVerNum :\r
+            # If Build Rule's version is less than the version number required by the tools, halting the build.\r
+            EdkLogger.error("build", AUTOGEN_ERROR,\r
+                            ExtraData="The version number [%s] of build_rule.txt is less than the version number required by the AutoGen.(the minimum required version number is [%s])"\\r
+                             % (RetVal._FileVersion, AutoGenReqBuildRuleVerNum))\r
+    return RetVal\r
+\r
+BuildRuleObj = GetBuildRule()\r
+\r
 # This acts like the main() function for the script, unless it is 'import'ed into another\r
 # script.\r
 if __name__ == '__main__':\r