]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/UPT/GenMetaFile/GenMetaFileMisc.py
BaseTools: Clean up source files
[mirror_edk2.git] / BaseTools / Source / Python / UPT / GenMetaFile / GenMetaFileMisc.py
index 3c6c9ee2907e7dc0cd7244fc2595daf146b0b78c..da3972ccc33badc5ef2efe4127f12a6f569acccb 100644 (file)
@@ -2,11 +2,11 @@
 #\r
 # This file contained the miscellaneous routines for GenMetaFile usage.\r
 #\r
-# Copyright (c) 2011 - 2017, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>\r
 #\r
-# This program and the accompanying materials are licensed and made available \r
-# under the terms and conditions of the BSD License which accompanies this \r
-# distribution. The full text of the license may be found at \r
+# This program and the accompanying materials are licensed and made available\r
+# under the terms and conditions of the BSD License which accompanies this\r
+# distribution. The full text of the license may be found at\r
 # http://opensource.org/licenses/bsd-license.php\r
 #\r
 # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
@@ -26,7 +26,7 @@ from Parser.DecParser import Dec
 #  @param SectionDict: string of source file path/name\r
 #  @param Arch:     string of source file family field\r
 #  @param ExternList:  string of source file FeatureFlag field\r
-#   \r
+#\r
 def AddExternToDefineSec(SectionDict, Arch, ExternList):\r
     LeftOffset = 31\r
     for ArchList, EntryPoint, UnloadImage, Constructor, Destructor, FFE, HelpStringList in ExternList:\r
@@ -79,6 +79,10 @@ def AddExternToDefineSec(SectionDict, Arch, ExternList):
 # Using TokenSpaceGuidValue and Token to obtain PcdName from DEC file\r
 #\r
 def ObtainPcdName(Packages, TokenSpaceGuidValue, Token):\r
+    TokenSpaceGuidName = ''\r
+    PcdCName = ''\r
+    TokenSpaceGuidNameFound = False\r
+\r
     for PackageDependency in Packages:\r
         #\r
         # Generate generic comment\r
@@ -86,57 +90,75 @@ def ObtainPcdName(Packages, TokenSpaceGuidValue, Token):
         Guid = PackageDependency.GetGuid()\r
         Version = PackageDependency.GetVersion()\r
 \r
+        Path = None\r
         #\r
         # find package path/name\r
-        # \r
+        #\r
         for PkgInfo in GlobalData.gWSPKG_LIST:\r
             if Guid == PkgInfo[1]:\r
                 if (not Version) or (Version == PkgInfo[2]):\r
                     Path = PkgInfo[3]\r
                     break\r
 \r
-        DecFile = None\r
-        if Path not in GlobalData.gPackageDict:\r
-            DecFile = Dec(Path)\r
-            GlobalData.gPackageDict[Path] = DecFile\r
-        else:\r
-            DecFile = GlobalData.gPackageDict[Path]\r
-\r
-        DecGuidsDict = DecFile.GetGuidSectionObject().ValueDict\r
-        DecPcdsDict = DecFile.GetPcdSectionObject().ValueDict\r
-\r
-        TokenSpaceGuidName = ''\r
-        PcdCName = ''\r
-        TokenSpaceGuidNameFound = False\r
-\r
-        #\r
-        # Get TokenSpaceGuidCName from Guids section \r
-        #\r
-        for GuidKey in DecGuidsDict:\r
-            GuidList = DecGuidsDict[GuidKey]\r
-            for GuidItem in GuidList:\r
-                if TokenSpaceGuidValue.upper() == GuidItem.GuidString.upper():\r
-                    TokenSpaceGuidName = GuidItem.GuidCName\r
-                    TokenSpaceGuidNameFound = True\r
+        # The dependency package in workspace\r
+        if Path:\r
+            DecFile = None\r
+            if Path not in GlobalData.gPackageDict:\r
+                DecFile = Dec(Path)\r
+                GlobalData.gPackageDict[Path] = DecFile\r
+            else:\r
+                DecFile = GlobalData.gPackageDict[Path]\r
+\r
+            DecGuidsDict = DecFile.GetGuidSectionObject().ValueDict\r
+            DecPcdsDict = DecFile.GetPcdSectionObject().ValueDict\r
+\r
+            TokenSpaceGuidName = ''\r
+            PcdCName = ''\r
+            TokenSpaceGuidNameFound = False\r
+\r
+            #\r
+            # Get TokenSpaceGuidCName from Guids section\r
+            #\r
+            for GuidKey in DecGuidsDict:\r
+                GuidList = DecGuidsDict[GuidKey]\r
+                for GuidItem in GuidList:\r
+                    if TokenSpaceGuidValue.upper() == GuidItem.GuidString.upper():\r
+                        TokenSpaceGuidName = GuidItem.GuidCName\r
+                        TokenSpaceGuidNameFound = True\r
+                        break\r
+                if TokenSpaceGuidNameFound:\r
                     break\r
-            if TokenSpaceGuidNameFound:\r
-                break\r
-        #\r
-        # Retrieve PcdCName from Pcds Section\r
-        #\r
-        for PcdKey in DecPcdsDict:\r
-            PcdList = DecPcdsDict[PcdKey]\r
-            for PcdItem in PcdList:\r
-                if TokenSpaceGuidName == PcdItem.TokenSpaceGuidCName and Token == PcdItem.TokenValue:\r
-                    PcdCName = PcdItem.TokenCName\r
-                    return TokenSpaceGuidName, PcdCName\r
+            #\r
+            # Retrieve PcdCName from Pcds Section\r
+            #\r
+            for PcdKey in DecPcdsDict:\r
+                PcdList = DecPcdsDict[PcdKey]\r
+                for PcdItem in PcdList:\r
+                    if TokenSpaceGuidName == PcdItem.TokenSpaceGuidCName and Token == PcdItem.TokenValue:\r
+                        PcdCName = PcdItem.TokenCName\r
+                        return TokenSpaceGuidName, PcdCName\r
+\r
+        # The dependency package in ToBeInstalledDist\r
+        else:\r
+            for Dist in GlobalData.gTO_BE_INSTALLED_DIST_LIST:\r
+                for Package in Dist.PackageSurfaceArea.values():\r
+                    if Guid == Package.Guid:\r
+                        for GuidItem in Package.GuidList:\r
+                            if TokenSpaceGuidValue.upper() == GuidItem.Guid.upper():\r
+                                TokenSpaceGuidName = GuidItem.CName\r
+                                TokenSpaceGuidNameFound = True\r
+                                break\r
+                        for PcdItem in Package.PcdList:\r
+                            if TokenSpaceGuidName == PcdItem.TokenSpaceGuidCName and Token == PcdItem.Token:\r
+                                PcdCName = PcdItem.CName\r
+                                return TokenSpaceGuidName, PcdCName\r
 \r
     return TokenSpaceGuidName, PcdCName\r
 \r
 ## _TransferDict\r
-#  transfer dict that using (Statement, SortedArch) as key, \r
+#  transfer dict that using (Statement, SortedArch) as key,\r
 #  (GenericComment, UsageComment) as value into a dict that using SortedArch as\r
-#  key and NewStatement as value \r
+#  key and NewStatement as value\r
 #\r
 def TransferDict(OrigDict, Type=None):\r
     NewDict = {}\r
@@ -149,7 +171,7 @@ def TransferDict(OrigDict, Type=None):
         for Statement, SortedArch in OrigDict:\r
             if len(Statement) > LeftOffset:\r
                 LeftOffset = len(Statement)\r
-        \r
+\r
     for Statement, SortedArch in OrigDict:\r
         Comment = OrigDict[Statement, SortedArch]\r
         #\r