BaseTools: enable FixedAtBuild (VOID*) PCD use in the [DEPEX] section
V3: Add some invalid type and datum check V2: limit the PCD used in the [Depex] section should be used in the module The PCD item used in INF [Depex] section must be defined as FixedAtBuild type and VOID* datum type, and the size of the PCD must be 16 bytes. Fixes: https://bugzilla.tianocore.org/show_bug.cgi?id=443 Cc: Liming Gao <liming.gao@intel.com> Cc: Yonghong Zhu <yonghong.zhu@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Yunhua Feng <yunhuax.feng@intel.com> Reviewed-by: Yonghong Zhu <yonghong.zhu@intel.com>
This commit is contained in:
committed by
Yonghong Zhu
parent
d9e206d4bf
commit
a10def9165
@ -912,12 +912,22 @@ class InfBuildData(ModuleBuildClassObject):
|
||||
ExtraData=Token, File=self.MetaFile, Line=Record[-1])
|
||||
DepexList.append(Module.Guid)
|
||||
else:
|
||||
# get the GUID value now
|
||||
Value = ProtocolValue(Token, self.Packages, self.MetaFile.Path)
|
||||
if Value is None:
|
||||
Value = PpiValue(Token, self.Packages, self.MetaFile.Path)
|
||||
# it use the Fixed PCD format
|
||||
if '.' in Token:
|
||||
if tuple(Token.split('.')[::-1]) not in self.Pcds:
|
||||
EdkLogger.error('build', RESOURCE_NOT_AVAILABLE, "PCD [{}] used in [Depex] section should be listed in module PCD section".format(Token), File=self.MetaFile, Line=Record[-1])
|
||||
else:
|
||||
if self.Pcds[tuple(Token.split('.')[::-1])].DatumType != TAB_VOID:
|
||||
EdkLogger.error('build', FORMAT_INVALID, "PCD [{}] used in [Depex] section should be VOID* datum type".format(Token), File=self.MetaFile, Line=Record[-1])
|
||||
Value = Token
|
||||
else:
|
||||
# get the GUID value now
|
||||
Value = ProtocolValue(Token, self.Packages, self.MetaFile.Path)
|
||||
if Value is None:
|
||||
Value = GuidValue(Token, self.Packages, self.MetaFile.Path)
|
||||
Value = PpiValue(Token, self.Packages, self.MetaFile.Path)
|
||||
if Value is None:
|
||||
Value = GuidValue(Token, self.Packages, self.MetaFile.Path)
|
||||
|
||||
if Value is None:
|
||||
PackageList = "\n\t".join(str(P) for P in self.Packages)
|
||||
EdkLogger.error('build', RESOURCE_NOT_AVAILABLE,
|
||||
|
Reference in New Issue
Block a user