]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/Common/TargetTxtClassObject.py
License header updated to match correct format.
[mirror_edk2.git] / BaseTools / Source / Python / Common / TargetTxtClassObject.py
index 89e393708625a7eb4a019db1a0ecdc8f6a8edc08..387e5152309743b36c38b859e00f08c022b4eaa1 100644 (file)
@@ -21,7 +21,7 @@ from BuildToolError import *
 import GlobalData\r
 from Common.LongFilePathSupport import OpenLongFilePath as open\r
 \r
-gDefaultTargetTxtFile = "Conf/target.txt"\r
+gDefaultTargetTxtFile = "target.txt"\r
 \r
 ## TargetTxtClassObject\r
 #\r
@@ -44,6 +44,7 @@ class TargetTxtClassObject(object):
             DataType.TAB_TAT_DEFINES_TARGET_ARCH                                : [],\r
             DataType.TAB_TAT_DEFINES_BUILD_RULE_CONF                            : '',\r
         }\r
+        self.ConfDirectoryPath = ""\r
         if Filename != None:\r
             self.LoadTargetTxtFile(Filename)\r
 \r
@@ -78,7 +79,8 @@ class TargetTxtClassObject(object):
     def ConvertTextFileToDict(self, FileName, CommentCharacter, KeySplitCharacter):\r
         F = None\r
         try:\r
-            F = open(FileName,'r')\r
+            F = open(FileName, 'r')\r
+            self.ConfDirectoryPath = os.path.dirname(FileName)\r
         except:\r
             EdkLogger.error("build", FILE_OPEN_FAILURE, ExtraData=FileName)\r
             if F != None:\r
@@ -99,6 +101,26 @@ class TargetTxtClassObject(object):
             if Key in [DataType.TAB_TAT_DEFINES_ACTIVE_PLATFORM, DataType.TAB_TAT_DEFINES_TOOL_CHAIN_CONF, \\r
                        DataType.TAB_TAT_DEFINES_ACTIVE_MODULE, DataType.TAB_TAT_DEFINES_BUILD_RULE_CONF]:\r
                 self.TargetTxtDictionary[Key] = Value.replace('\\', '/')\r
+                if Key == DataType.TAB_TAT_DEFINES_TOOL_CHAIN_CONF and self.TargetTxtDictionary[Key]:\r
+                    if self.TargetTxtDictionary[Key].startswith("Conf/"):\r
+                        Tools_Def = os.path.join(self.ConfDirectoryPath, self.TargetTxtDictionary[Key].strip())\r
+                        if not os.path.exists(Tools_Def) or not os.path.isfile(Tools_Def):\r
+                            # If Conf/Conf does not exist, try just the Conf/ directory\r
+                            Tools_Def = os.path.join(self.ConfDirectoryPath, self.TargetTxtDictionary[Key].replace("Conf/", "", 1).strip())\r
+                    else:\r
+                        # The File pointed to by TOOL_CHAIN_CONF is not in a Conf/ directory\r
+                        Tools_Def = os.path.join(self.ConfDirectoryPath, self.TargetTxtDictionary[Key].strip())\r
+                    self.TargetTxtDictionary[Key] = Tools_Def\r
+                if Key == DataType.TAB_TAT_DEFINES_BUILD_RULE_CONF and self.TargetTxtDictionary[Key]:\r
+                    if self.TargetTxtDictionary[Key].startswith("Conf/"):\r
+                        Build_Rule = os.path.join(self.ConfDirectoryPath, self.TargetTxtDictionary[Key].strip())\r
+                        if not os.path.exists(Build_Rule) or not os.path.isfile(Build_Rule):\r
+                            # If Conf/Conf does not exist, try just the Conf/ directory\r
+                            Build_Rule = os.path.join(self.ConfDirectoryPath, self.TargetTxtDictionary[Key].replace("Conf/", "", 1).strip())\r
+                    else:\r
+                        # The File pointed to by BUILD_RULE_CONF is not in a Conf/ directory\r
+                        Build_Rule = os.path.join(self.ConfDirectoryPath, self.TargetTxtDictionary[Key].strip())\r
+                    self.TargetTxtDictionary[Key] = Build_Rule\r
             elif Key in [DataType.TAB_TAT_DEFINES_TARGET, DataType.TAB_TAT_DEFINES_TARGET_ARCH, \\r
                          DataType.TAB_TAT_DEFINES_TOOL_CHAIN_TAG]:\r
                 self.TargetTxtDictionary[Key] = Value.split()\r
@@ -144,15 +166,15 @@ class TargetTxtClassObject(object):
                         print Item\r
 ## TargetTxtDict\r
 #\r
-# Load target.txt in input workspace dir\r
+# Load target.txt in input Conf dir\r
 #\r
-# @param WorkSpace:  Workspace dir\r
+# @param ConfDir:  Conf dir\r
 #\r
 # @retval Target An instance of TargetTxtClassObject() with loaded target.txt\r
 #\r
-def TargetTxtDict(WorkSpace):\r
+def TargetTxtDict(ConfDir):\r
     Target = TargetTxtClassObject()\r
-    Target.LoadTargetTxtFile(os.path.normpath(os.path.join(WorkSpace, gDefaultTargetTxtFile)))\r
+    Target.LoadTargetTxtFile(os.path.normpath(os.path.join(ConfDir, gDefaultTargetTxtFile)))\r
     return Target\r
 \r
 ##\r