FileWrite(File, gSectionSep)\r
\r
if "PCD" in ReportType:\r
- GlobalPcdReport.GenerateReport(File, self.ModulePcdSet)\r
+ GlobalPcdReport.GenerateReport(File, self.ModulePcdSet,self.FileGuid)\r
\r
if "LIBRARY" in ReportType:\r
self.LibraryReport.GenerateReport(File)\r
if DscDefaultValue:\r
self.DscPcdDefault[(TokenCName, TokenSpaceGuidCName)] = DscDefaultValue\r
\r
- def GenerateReport(self, File, ModulePcdSet):\r
+ def GenerateReport(self, File, ModulePcdSet,ModuleGuid=None):\r
if not ModulePcdSet:\r
if self.ConditionalPcds:\r
self.GenerateReportDetail(File, ModulePcdSet, 1)\r
break\r
if not IsEmpty:\r
self.GenerateReportDetail(File, ModulePcdSet, 2)\r
- self.GenerateReportDetail(File, ModulePcdSet)\r
+ self.GenerateReportDetail(File, ModulePcdSet,ModuleGuid = ModuleGuid)\r
\r
##\r
# Generate report for PCD information\r
# directives section report, 2 means Unused Pcds section report\r
# @param DscOverridePcds Module DSC override PCDs set\r
#\r
- def GenerateReportDetail(self, File, ModulePcdSet, ReportSubType = 0):\r
+ def GenerateReportDetail(self, File, ModulePcdSet, ReportSubType = 0,ModuleGuid=None):\r
PcdDict = self.AllPcds\r
if ReportSubType == 1:\r
PcdDict = self.ConditionalPcds\r
#The DefaultValue of StructurePcd already be the latest, no need to update.\r
if not self.IsStructurePcd(Pcd.TokenCName, Pcd.TokenSpaceGuidCName):\r
Pcd.DefaultValue = PcdValue\r
+ PcdComponentValue = None\r
if ModulePcdSet is not None:\r
if (Pcd.TokenCName, Pcd.TokenSpaceGuidCName, Type) not in ModulePcdSet:\r
continue\r
- InfDefaultValue, PcdValue = ModulePcdSet[Pcd.TokenCName, Pcd.TokenSpaceGuidCName, Type]\r
+ InfDefaultValue, PcdComponentValue = ModulePcdSet[Pcd.TokenCName, Pcd.TokenSpaceGuidCName, Type]\r
+ PcdValue = PcdComponentValue\r
#The DefaultValue of StructurePcd already be the latest, no need to update.\r
if not self.IsStructurePcd(Pcd.TokenCName, Pcd.TokenSpaceGuidCName):\r
Pcd.DefaultValue = PcdValue\r
if TypeName in ('DYNVPD', 'DEXVPD'):\r
SkuInfoList = Pcd.SkuInfoList\r
Pcd = GlobalData.gStructurePcd[self.Arch][(Pcd.TokenCName, Pcd.TokenSpaceGuidCName)]\r
+ if ModulePcdSet and ModulePcdSet.get((Pcd.TokenCName, Pcd.TokenSpaceGuidCName, Type)):\r
+ InfDefaultValue, PcdComponentValue = ModulePcdSet[Pcd.TokenCName, Pcd.TokenSpaceGuidCName, Type]\r
+ DscDefaultValBak = Pcd.DefaultValue\r
+ Pcd.DefaultValue = PcdComponentValue\r
+\r
Pcd.DatumType = Pcd.StructName\r
if TypeName in ('DYNVPD', 'DEXVPD'):\r
Pcd.SkuInfoList = SkuInfoList\r
DscDefaultValue = True\r
DscMatch = True\r
DecMatch = False\r
- elif Pcd.SkuOverrideValues:\r
- DscOverride = False\r
- if Pcd.DefaultFromDSC:\r
- DscOverride = True\r
- else:\r
- DictLen = 0\r
- for item in Pcd.SkuOverrideValues:\r
- DictLen += len(Pcd.SkuOverrideValues[item])\r
- if not DictLen:\r
- DscOverride = False\r
+ else:\r
+ if Pcd.Type in PCD_DYNAMIC_TYPE_SET | PCD_DYNAMIC_EX_TYPE_SET:\r
+ DscOverride = False\r
+ if Pcd.DefaultFromDSC:\r
+ DscOverride = True\r
else:\r
- if not Pcd.SkuInfoList:\r
- OverrideValues = Pcd.SkuOverrideValues\r
- if OverrideValues:\r
- for Data in OverrideValues.values():\r
- Struct = list(Data.values())\r
- if Struct:\r
- DscOverride = self.ParseStruct(Struct[0])\r
- break\r
+ DictLen = 0\r
+ for item in Pcd.SkuOverrideValues:\r
+ DictLen += len(Pcd.SkuOverrideValues[item])\r
+ if not DictLen:\r
+ DscOverride = False\r
else:\r
- SkuList = sorted(Pcd.SkuInfoList.keys())\r
- for Sku in SkuList:\r
- SkuInfo = Pcd.SkuInfoList[Sku]\r
- if SkuInfo.DefaultStoreDict:\r
- DefaultStoreList = sorted(SkuInfo.DefaultStoreDict.keys())\r
- for DefaultStore in DefaultStoreList:\r
- OverrideValues = Pcd.SkuOverrideValues[Sku]\r
- DscOverride = self.ParseStruct(OverrideValues[DefaultStore])\r
- if DscOverride:\r
+ if not Pcd.SkuInfoList:\r
+ OverrideValues = Pcd.SkuOverrideValues\r
+ if OverrideValues:\r
+ for Data in OverrideValues.values():\r
+ Struct = list(Data.values())\r
+ if Struct:\r
+ DscOverride = self.ParseStruct(Struct[0])\r
break\r
- if DscOverride:\r
- break\r
- if DscOverride:\r
- DscDefaultValue = True\r
- DscMatch = True\r
- DecMatch = False\r
+ else:\r
+ SkuList = sorted(Pcd.SkuInfoList.keys())\r
+ for Sku in SkuList:\r
+ SkuInfo = Pcd.SkuInfoList[Sku]\r
+ if SkuInfo.DefaultStoreDict:\r
+ DefaultStoreList = sorted(SkuInfo.DefaultStoreDict.keys())\r
+ for DefaultStore in DefaultStoreList:\r
+ OverrideValues = Pcd.SkuOverrideValues[Sku]\r
+ DscOverride = self.ParseStruct(OverrideValues[DefaultStore])\r
+ if DscOverride:\r
+ break\r
+ if DscOverride:\r
+ break\r
+ if DscOverride:\r
+ DscDefaultValue = True\r
+ DscMatch = True\r
+ DecMatch = False\r
+ else:\r
+ DecMatch = True\r
else:\r
- DecMatch = True\r
- else:\r
- DscDefaultValue = True\r
- DscMatch = True\r
- DecMatch = False\r
+ if Pcd.DscRawValue or (ModuleGuid and ModuleGuid.replace("-","S") in Pcd.PcdValueFromComponents):\r
+ DscDefaultValue = True\r
+ DscMatch = True\r
+ DecMatch = False\r
+ else:\r
+ DscDefaultValue = False\r
+ DecMatch = True\r
\r
#\r
# Report PCD item according to their override relationship\r
elif BuildOptionMatch:\r
self.PrintPcdValue(File, Pcd, PcdTokenCName, TypeName, IsStructure, DscMatch, DscDefaultValBak, InfMatch, InfDefaultValue, DecMatch, DecDefaultValue, '*B')\r
else:\r
- if DscDefaultValue and DscMatch:\r
+ if PcdComponentValue:\r
+ self.PrintPcdValue(File, Pcd, PcdTokenCName, TypeName, IsStructure, DscMatch, DscDefaultValBak, InfMatch, PcdComponentValue, DecMatch, DecDefaultValue, '*M', ModuleGuid)\r
+ elif 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
- else:\r
- self.PrintPcdValue(File, Pcd, PcdTokenCName, TypeName, IsStructure, DscMatch, DscDefaultValBak, InfMatch, InfDefaultValue, DecMatch, DecDefaultValue, '*M')\r
+\r
\r
if ModulePcdSet is None:\r
if IsStructure:\r
for filedvalues in Pcd.DefaultValues.values():\r
self.PrintStructureInfo(File, filedvalues)\r
\r
- def PrintPcdValue(self, File, Pcd, PcdTokenCName, TypeName, IsStructure, DscMatch, DscDefaultValue, InfMatch, InfDefaultValue, DecMatch, DecDefaultValue, Flag = ' '):\r
+ def PrintPcdValue(self, File, Pcd, PcdTokenCName, TypeName, IsStructure, DscMatch, DscDefaultValue, InfMatch, InfDefaultValue, DecMatch, DecDefaultValue, Flag = ' ',ModuleGuid=None):\r
if not Pcd.SkuInfoList:\r
Value = Pcd.DefaultValue\r
IsByteArray, ArrayList = ByteArrayForamt(Value)\r
OverrideValues = GlobalData.gPcdSkuOverrides[(Pcd.TokenCName,Pcd.TokenSpaceGuidCName)]\r
else:\r
OverrideValues = Pcd.SkuOverrideValues\r
+ FieldOverrideValues = None\r
if OverrideValues:\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
+ FieldOverrideValues = Struct[0]\r
FiledOverrideFlag = True\r
break\r
+ if Pcd.PcdFiledValueFromDscComponent and ModuleGuid and ModuleGuid.replace("-","S") in Pcd.PcdFiledValueFromDscComponent:\r
+ FieldOverrideValues = Pcd.PcdFiledValueFromDscComponent[ModuleGuid.replace("-","S")]\r
+ if FieldOverrideValues:\r
+ OverrideFieldStruct = self.OverrideFieldValue(Pcd, FieldOverrideValues)\r
+ self.PrintStructureInfo(File, OverrideFieldStruct)\r
+\r
if not FiledOverrideFlag and (Pcd.PcdFieldValueFromComm or Pcd.PcdFieldValueFromFdf):\r
OverrideFieldStruct = self.OverrideFieldValue(Pcd, {})\r
self.PrintStructureInfo(File, OverrideFieldStruct)\r