BaseTools/GenFds: enhance INF built arch filter

The bug is use FILE_GUID override to build the same module more than
once, GenFds report warning "xxx NOT found in DSC file; Is it really
a binary module?". The root cause is the module path with FILE_GUID
overridden has the file name FILE_GUIDmodule.inf, then
PlatformDataBase.Modules use FILE_GUIDmodule.inf as key which cause
__GetPlatformArchList__ return empty.

Cc: Liming Gao <liming.gao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
Yonghong Zhu 2016-05-11 16:09:26 +08:00
parent 518aebe2f7
commit 4ce415e55d
1 changed files with 10 additions and 0 deletions

View File

@ -570,6 +570,16 @@ class FfsInfStatement(FfsInfStatementClassObject):
if PlatformDataBase != None: if PlatformDataBase != None:
if InfFileKey in PlatformDataBase.Modules: if InfFileKey in PlatformDataBase.Modules:
DscArchList.append (Arch) DscArchList.append (Arch)
else:
#
# BaseTools support build same module more than once, the module path with FILE_GUID overridden has
# the file name FILE_GUIDmodule.inf, then PlatformDataBase.Modules use FILE_GUIDmodule.inf as key,
# but the path (self.MetaFile.Path) is the real path
#
for key in PlatformDataBase.Modules.keys():
if InfFileKey == str((PlatformDataBase.Modules[key]).MetaFile.Path):
DscArchList.append (Arch)
break
return DscArchList return DscArchList