# @param ToPcd The PCD to be overrided\r
# @param FromPcd The PCD overrideing from\r
#\r
- def _OverridePcd(self, ToPcd, FromPcd, Module=""):\r
+ def _OverridePcd(self, ToPcd, FromPcd, Module="", Msg="", Library=""):\r
#\r
# in case there's PCDs coming from FDF file, which have no type given.\r
# at this point, ToPcd.Type has the type found from dependent\r
ToPcd.Type = FromPcd.Type\r
elif ToPcd.Type and FromPcd.Type \\r
and ToPcd.Type != FromPcd.Type:\r
+ if Library:\r
+ Module = str(Module) + " 's library file (" + str(Library) + ")"\r
EdkLogger.error("build", OPTION_CONFLICT, "Mismatched PCD type",\r
- ExtraData="%s.%s is defined as [%s] in module %s, but as [%s] in platform."\\r
+ ExtraData="%s.%s is used as [%s] in module %s, but as [%s] in %s."\\r
% (ToPcd.TokenSpaceGuidCName, TokenCName,\r
- ToPcd.Type, Module, FromPcd.Type),\r
+ ToPcd.Type, Module, FromPcd.Type, Msg),\r
File=self.MetaFile)\r
\r
if FromPcd.MaxDatumSize:\r
#\r
# @retval PCD_list The list PCDs with settings from platform\r
#\r
- def ApplyPcdSetting(self, Module, Pcds):\r
+ def ApplyPcdSetting(self, Module, Pcds, Library=""):\r
# for each PCD in module\r
for Name, Guid in Pcds:\r
PcdInModule = Pcds[Name, Guid]\r
else:\r
PcdInPlatform = None\r
# then override the settings if any\r
- self._OverridePcd(PcdInModule, PcdInPlatform, Module)\r
+ self._OverridePcd(PcdInModule, PcdInPlatform, Module, Msg="DSC PCD sections", Library=Library)\r
# resolve the VariableGuid value\r
for SkuId in PcdInModule.SkuInfoList:\r
Sku = PcdInModule.SkuInfoList[SkuId]\r
Flag = True\r
break\r
if Flag:\r
- self._OverridePcd(ToPcd, PlatformModule.Pcds[Key], Module)\r
+ self._OverridePcd(ToPcd, PlatformModule.Pcds[Key], Module, Msg="DSC Components Module scoped PCD section", Library=Library)\r
# use PCD value to calculate the MaxDatumSize when it is not specified\r
for Name, Guid in Pcds:\r
Pcd = Pcds[Name, Guid]\r
Pcds = OrderedDict()\r
if not self.IsLibrary:\r
# get PCDs from dependent libraries\r
+ self._LibraryPcdList = []\r
for Library in self.DependentLibraryList:\r
+ PcdsInLibrary = OrderedDict()\r
self.UpdateComments(self._PcdComments, Library.PcdComments)\r
for Key in Library.Pcds:\r
# skip duplicated PCDs\r
if Key in self.Module.Pcds or Key in Pcds:\r
continue\r
Pcds[Key] = copy.copy(Library.Pcds[Key])\r
- # apply PCD settings from platform\r
- self._LibraryPcdList = self.PlatformInfo.ApplyPcdSetting(self.Module, Pcds)\r
+ PcdsInLibrary[Key] = Pcds[Key]\r
+ self._LibraryPcdList.extend(self.PlatformInfo.ApplyPcdSetting(self.Module, PcdsInLibrary, Library=Library))\r
else:\r
self._LibraryPcdList = []\r
return self._LibraryPcdList\r