]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/build/BuildReport.py
BaseTools: Fix the *B and *F Flag display for Structure Pcd
[mirror_edk2.git] / BaseTools / Source / Python / build / BuildReport.py
index 14143b3396c05e1cba888db05dccf5766d51bb77..de8f0fb087d948d1d7764f8e3f62299ea427aeca 100644 (file)
@@ -1074,9 +1074,13 @@ class PcdReport(object):
                     Pcd.DatumType = Pcd.StructName\r
                     if TypeName in ('DYNVPD', 'DEXVPD'):\r
                         Pcd.SkuInfoList = SkuInfoList\r
-                    if Pcd.PcdFieldValueFromComm:\r
+                    if Pcd.PcdValueFromComm or Pcd.PcdFieldValueFromComm:\r
                         BuildOptionMatch = True\r
                         DecMatch = False\r
+                    elif Pcd.PcdValueFromFdf or Pcd.PcdFieldValueFromFdf:\r
+                        DscDefaultValue = True\r
+                        DscMatch = True\r
+                        DecMatch = False\r
                     elif Pcd.SkuOverrideValues:\r
                         DscOverride = False\r
                         if Pcd.DefaultFromDSC:\r
@@ -1091,10 +1095,11 @@ class PcdReport(object):
                                 if not Pcd.SkuInfoList:\r
                                     OverrideValues = Pcd.SkuOverrideValues\r
                                     if OverrideValues:\r
-                                        Keys = list(OverrideValues.keys())\r
-                                        Data = OverrideValues[Keys[0]]\r
-                                        Struct = list(Data.values())\r
-                                        DscOverride = self.ParseStruct(Struct[0])\r
+                                        for Data in OverrideValues.values():\r
+                                            Struct = list(Data.values())\r
+                                            if Struct:\r
+                                                DscOverride = self.ParseStruct(Struct[0])\r
+                                                break\r
                                 else:\r
                                     SkuList = sorted(Pcd.SkuInfoList.keys())\r
                                     for Sku in SkuList:\r
@@ -1265,14 +1270,19 @@ class PcdReport(object):
                         Value = "0x{:X} ({})".format(int(Value, 0), Value)\r
                 FileWrite(File, ' %-*s   : %6s %10s = %s' % (self.MaxLen, Flag + ' ' + PcdTokenCName, TypeName, '(' + Pcd.DatumType + ')', Value))\r
             if IsStructure:\r
+                FiledOverrideFlag = False\r
                 OverrideValues = Pcd.SkuOverrideValues\r
                 if OverrideValues:\r
-                    Keys = list(OverrideValues.keys())\r
-                    Data = OverrideValues[Keys[0]]\r
-                    Struct = list(Data.values())\r
-                    if Struct:\r
-                        OverrideFieldStruct = self.OverrideFieldValue(Pcd, Struct[0])\r
-                        self.PrintStructureInfo(File, OverrideFieldStruct)\r
+                    for Data in OverrideValues.values():\r
+                        Struct = list(Data.values())\r
+                        if Struct:\r
+                            OverrideFieldStruct = self.OverrideFieldValue(Pcd, Struct[0])\r
+                            self.PrintStructureInfo(File, OverrideFieldStruct)\r
+                            FiledOverrideFlag = True\r
+                            break\r
+                if not FiledOverrideFlag and (Pcd.PcdFieldValueFromComm or Pcd.PcdFieldValueFromFdf):\r
+                    OverrideFieldStruct = self.OverrideFieldValue(Pcd, {})\r
+                    self.PrintStructureInfo(File, OverrideFieldStruct)\r
             self.PrintPcdDefault(File, Pcd, IsStructure, DscMatch, DscDefaultValue, InfMatch, InfDefaultValue, DecMatch, DecDefaultValue)\r
         else:\r
             FirstPrint = True\r
@@ -1392,11 +1402,16 @@ class PcdReport(object):
                     if TypeName in ('DYNVPD', 'DEXVPD'):\r
                         FileWrite(File, '%*s' % (self.MaxLen + 4, SkuInfo.VpdOffset))\r
                     if IsStructure:\r
+                        FiledOverrideFlag = False\r
                         OverrideValues = Pcd.SkuOverrideValues[Sku]\r
                         if OverrideValues:\r
                             Keys = OverrideValues.keys()\r
                             OverrideFieldStruct = self.OverrideFieldValue(Pcd, OverrideValues[Keys[0]])\r
                             self.PrintStructureInfo(File, OverrideFieldStruct)\r
+                            FiledOverrideFlag = True\r
+                        if not FiledOverrideFlag and (Pcd.PcdFieldValueFromComm or Pcd.PcdFieldValueFromFdf):\r
+                            OverrideFieldStruct = self.OverrideFieldValue(Pcd, {})\r
+                            self.PrintStructureInfo(File, OverrideFieldStruct)\r
                     self.PrintPcdDefault(File, Pcd, IsStructure, DscMatch, DscDefaultValue, InfMatch, InfDefaultValue, DecMatch, DecDefaultValue)\r
 \r
     def OverrideFieldValue(self, Pcd, OverrideStruct):\r