summaryrefslogtreecommitdiffstats
path: root/BaseTools
diff options
context:
space:
mode:
Diffstat (limited to 'BaseTools')
-rw-r--r--BaseTools/Source/Python/AutoGen/AutoGen.py20
1 files changed, 12 insertions, 8 deletions
diff --git a/BaseTools/Source/Python/AutoGen/AutoGen.py b/BaseTools/Source/Python/AutoGen/AutoGen.py
index 14d5a94afa..cf58abf251 100644
--- a/BaseTools/Source/Python/AutoGen/AutoGen.py
+++ b/BaseTools/Source/Python/AutoGen/AutoGen.py
@@ -2336,7 +2336,7 @@ class PlatformAutoGen(AutoGen):
# @param ToPcd The PCD to be overrided
# @param FromPcd The PCD overrideing from
#
- def _OverridePcd(self, ToPcd, FromPcd, Module=""):
+ def _OverridePcd(self, ToPcd, FromPcd, Module="", Msg="", Library=""):
#
# in case there's PCDs coming from FDF file, which have no type given.
# at this point, ToPcd.Type has the type found from dependent
@@ -2356,10 +2356,12 @@ class PlatformAutoGen(AutoGen):
ToPcd.Type = FromPcd.Type
elif ToPcd.Type and FromPcd.Type \
and ToPcd.Type != FromPcd.Type:
+ if Library:
+ Module = str(Module) + " 's library file (" + str(Library) + ")"
EdkLogger.error("build", OPTION_CONFLICT, "Mismatched PCD type",
- ExtraData="%s.%s is defined as [%s] in module %s, but as [%s] in platform."\
+ ExtraData="%s.%s is used as [%s] in module %s, but as [%s] in %s."\
% (ToPcd.TokenSpaceGuidCName, TokenCName,
- ToPcd.Type, Module, FromPcd.Type),
+ ToPcd.Type, Module, FromPcd.Type, Msg),
File=self.MetaFile)
if FromPcd.MaxDatumSize:
@@ -2420,7 +2422,7 @@ class PlatformAutoGen(AutoGen):
#
# @retval PCD_list The list PCDs with settings from platform
#
- def ApplyPcdSetting(self, Module, Pcds):
+ def ApplyPcdSetting(self, Module, Pcds, Library=""):
# for each PCD in module
for Name, Guid in Pcds:
PcdInModule = Pcds[Name, Guid]
@@ -2430,7 +2432,7 @@ class PlatformAutoGen(AutoGen):
else:
PcdInPlatform = None
# then override the settings if any
- self._OverridePcd(PcdInModule, PcdInPlatform, Module)
+ self._OverridePcd(PcdInModule, PcdInPlatform, Module, Msg="DSC PCD sections", Library=Library)
# resolve the VariableGuid value
for SkuId in PcdInModule.SkuInfoList:
Sku = PcdInModule.SkuInfoList[SkuId]
@@ -2462,7 +2464,7 @@ class PlatformAutoGen(AutoGen):
Flag = True
break
if Flag:
- self._OverridePcd(ToPcd, PlatformModule.Pcds[Key], Module)
+ self._OverridePcd(ToPcd, PlatformModule.Pcds[Key], Module, Msg="DSC Components Module scoped PCD section", Library=Library)
# use PCD value to calculate the MaxDatumSize when it is not specified
for Name, Guid in Pcds:
Pcd = Pcds[Name, Guid]
@@ -3675,15 +3677,17 @@ class ModuleAutoGen(AutoGen):
Pcds = OrderedDict()
if not self.IsLibrary:
# get PCDs from dependent libraries
+ self._LibraryPcdList = []
for Library in self.DependentLibraryList:
+ PcdsInLibrary = OrderedDict()
self.UpdateComments(self._PcdComments, Library.PcdComments)
for Key in Library.Pcds:
# skip duplicated PCDs
if Key in self.Module.Pcds or Key in Pcds:
continue
Pcds[Key] = copy.copy(Library.Pcds[Key])
- # apply PCD settings from platform
- self._LibraryPcdList = self.PlatformInfo.ApplyPcdSetting(self.Module, Pcds)
+ PcdsInLibrary[Key] = Pcds[Key]
+ self._LibraryPcdList.extend(self.PlatformInfo.ApplyPcdSetting(self.Module, PcdsInLibrary, Library=Library))
else:
self._LibraryPcdList = []
return self._LibraryPcdList