]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/build/BuildReport.py
BaseTools: Fix bug about *M value not display decimal and hexadecimal
[mirror_edk2.git] / BaseTools / Source / Python / build / BuildReport.py
index 1555ec3c211f60f29b3a35bf3ae5bd6aff25acff..5709cde9d6ca9b14b859779ba1c4f3dc3cee22a2 100644 (file)
@@ -280,7 +280,12 @@ class DepexParser(object):
                 for Guid in Package.Guids:\r
                     GuidValue = GuidStructureStringToGuidString(Package.Guids[Guid])\r
                     self._GuidDb[GuidValue.upper()] = Guid\r
-\r
+            for Ma in Pa.ModuleAutoGenList:\r
+                for Pcd in Ma.FixedVoidTypePcds:\r
+                    PcdValue = Ma.FixedVoidTypePcds[Pcd]\r
+                    if len(PcdValue.split(',')) == 16:\r
+                        GuidValue = GuidStructureByteArrayToGuidString(PcdValue)\r
+                        self._GuidDb[GuidValue.upper()] = Pcd\r
     ##\r
     # Parse the binary dependency expression files.\r
     #\r
@@ -958,6 +963,11 @@ class PcdReport(object):
                 DecDefaultValue = self.DecPcdDefault.get((Pcd.TokenCName, Pcd.TokenSpaceGuidCName, DecType))\r
                 DscDefaultValue = self.DscPcdDefault.get((Pcd.TokenCName, Pcd.TokenSpaceGuidCName))\r
                 DscDefaultValBak = DscDefaultValue\r
+                Field = ''\r
+                for (CName, Guid, Field) in self.FdfPcdSet:\r
+                    if CName == PcdTokenCName and Guid == Key:\r
+                        DscDefaultValue = self.FdfPcdSet[(CName, Guid, Field)]\r
+                        break\r
                 DscDefaultValue = self.FdfPcdSet.get((Pcd.TokenCName, Key), DscDefaultValue)\r
                 if DscDefaultValue != DscDefaultValBak:\r
                     try:\r
@@ -970,13 +980,14 @@ class PcdReport(object):
                 PcdValue = DecDefaultValue\r
                 if DscDefaultValue:\r
                     PcdValue = DscDefaultValue\r
+                Pcd.DefaultValue = PcdValue\r
                 if ModulePcdSet is not None:\r
                     if (Pcd.TokenCName, Pcd.TokenSpaceGuidCName, Type) not in ModulePcdSet:\r
                         continue\r
-                    InfDefault, PcdValue = ModulePcdSet[Pcd.TokenCName, Pcd.TokenSpaceGuidCName, Type]\r
+                    InfDefaultValue, PcdValue = ModulePcdSet[Pcd.TokenCName, Pcd.TokenSpaceGuidCName, Type]\r
                     Pcd.DefaultValue = PcdValue\r
-                    if InfDefault == "":\r
-                        InfDefault = None\r
+                    if InfDefaultValue == "":\r
+                        InfDefaultValue = None\r
 \r
                 BuildOptionMatch = False\r
                 if GlobalData.BuildOptionPcd:\r
@@ -1079,13 +1090,15 @@ class PcdReport(object):
                 #\r
                 # Report PCD item according to their override relationship\r
                 #\r
-                if DecMatch and InfMatch:\r
+                if DecMatch:\r
                     self.PrintPcdValue(File, Pcd, PcdTokenCName, TypeName, IsStructure, DscMatch, DscDefaultValBak, InfMatch, InfDefaultValue, DecMatch, DecDefaultValue, '  ')\r
+                elif InfDefaultValue and InfMatch:\r
+                    self.PrintPcdValue(File, Pcd, PcdTokenCName, TypeName, IsStructure, DscMatch, DscDefaultValBak, InfMatch, InfDefaultValue, DecMatch, DecDefaultValue, '*M')\r
                 elif BuildOptionMatch:\r
                     self.PrintPcdValue(File, Pcd, PcdTokenCName, TypeName, IsStructure, DscMatch, DscDefaultValBak, InfMatch, InfDefaultValue, DecMatch, DecDefaultValue, '*B')\r
                 else:\r
-                    if DscMatch:\r
-                        if (Pcd.TokenCName, Key) in self.FdfPcdSet:\r
+                    if DscDefaultValue and DscMatch:\r
+                        if (Pcd.TokenCName, Key, Field) in self.FdfPcdSet:\r
                             self.PrintPcdValue(File, Pcd, PcdTokenCName, TypeName, IsStructure, DscMatch, DscDefaultValBak, InfMatch, InfDefaultValue, DecMatch, DecDefaultValue, '*F')\r
                         else:\r
                             self.PrintPcdValue(File, Pcd, PcdTokenCName, TypeName, IsStructure, DscMatch, DscDefaultValBak, InfMatch, InfDefaultValue, DecMatch, DecDefaultValue, '*P')\r
@@ -1114,7 +1127,13 @@ class PcdReport(object):
                                 for Array in ArrayList:\r
                                     FileWrite(File, Array)\r
                             else:\r
-                                FileWrite(File, ' *M     %-*s = %s' % (self.MaxLen + 15, ModulePath, ModuleDefault.strip()))\r
+                                Value =  ModuleDefault.strip()\r
+                                if Pcd.DatumType in TAB_PCD_CLEAN_NUMERIC_TYPES:\r
+                                    if Value.startswith(('0x', '0X')):\r
+                                        Value = '{} ({:d})'.format(Value, int(Value, 0))\r
+                                    else:\r
+                                        Value = "0x{:X} ({})".format(int(Value, 0), Value)\r
+                                FileWrite(File, ' *M     %-*s = %s' % (self.MaxLen + 15, ModulePath, Value))\r
 \r
         if ModulePcdSet is None:\r
             FileWrite(File, gSectionEnd)\r
@@ -1331,6 +1350,9 @@ class PcdReport(object):
             for Key, Values in OverrideStruct.items():\r
                 if Values[1] and Values[1].endswith('.dsc'):\r
                     OverrideFieldStruct[Key] = Values\r
+        if Pcd.PcdFieldValueFromFdf:\r
+            for Key, Values in Pcd.PcdFieldValueFromFdf.items():\r
+                OverrideFieldStruct[Key] = Values\r
         if Pcd.PcdFieldValueFromComm:\r
             for Key, Values in Pcd.PcdFieldValueFromComm.items():\r
                 OverrideFieldStruct[Key] = Values\r