mirror of
https://github.com/tianocore/edk2
synced 2026-08-27 00:23:19 -04:00
BaseTools: report error if source module INF is only list in FDF file
If source module INF is not listed in DSC, it will not be built. And it is listed in FDF, GenFds will fail to find its build output. To reminder user this issue early, build tool should report failure to user in early phase. 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:
parent
4c53eb72d5
commit
2502b73557
2 changed files with 43 additions and 0 deletions
|
|
@ -329,6 +329,34 @@ class WorkspaceAutoGen(AutoGen):
|
|||
if fvname.upper() not in self.FdfProfile.FvDict:
|
||||
EdkLogger.error("build", OPTION_VALUE_INVALID,
|
||||
"No such an FV in FDF file: %s" % fvname)
|
||||
|
||||
for key in self.FdfProfile.InfDict:
|
||||
if key == 'ArchTBD':
|
||||
Platform_cache = {}
|
||||
for Arch in self.ArchList:
|
||||
Platform_cache[Arch] = self.BuildDatabase[self.MetaFile, Arch, Target, Toolchain]
|
||||
for Inf in self.FdfProfile.InfDict[key]:
|
||||
ModuleFile = PathClass(NormPath(Inf), GlobalData.gWorkspace, Arch)
|
||||
for Arch in self.ArchList:
|
||||
if ModuleFile in Platform_cache[Arch].Modules:
|
||||
break
|
||||
else:
|
||||
ModuleData = self.BuildDatabase[ModuleFile, Arch, Target, Toolchain]
|
||||
if not ModuleData.IsBinaryModule:
|
||||
EdkLogger.error('build', PARSER_ERROR, "Module %s NOT found in DSC file; Is it really a binary module?" % ModuleFile)
|
||||
|
||||
else:
|
||||
for Arch in self.ArchList:
|
||||
if Arch == key:
|
||||
Platform = self.BuildDatabase[self.MetaFile, Arch, Target, Toolchain]
|
||||
for Inf in self.FdfProfile.InfDict[key]:
|
||||
ModuleFile = PathClass(NormPath(Inf), GlobalData.gWorkspace, Arch)
|
||||
if ModuleFile in Platform.Modules:
|
||||
continue
|
||||
ModuleData = self.BuildDatabase[ModuleFile, Arch, Target, Toolchain]
|
||||
if not ModuleData.IsBinaryModule:
|
||||
EdkLogger.error('build', PARSER_ERROR, "Module %s NOT found in DSC file; Is it really a binary module?" % ModuleFile)
|
||||
|
||||
else:
|
||||
PcdSet = {}
|
||||
ModuleList = []
|
||||
|
|
|
|||
|
|
@ -231,6 +231,7 @@ class FileProfile :
|
|||
|
||||
self.PcdDict = {}
|
||||
self.InfList = []
|
||||
self.InfDict = {'ArchTBD':[]}
|
||||
# ECC will use this Dict and List information
|
||||
self.PcdFileLineDict = {}
|
||||
self.InfFileLineList = []
|
||||
|
|
@ -2472,6 +2473,13 @@ class FdfParser:
|
|||
self.Profile.InfList.append(ffsInf.InfFileName)
|
||||
FileLineTuple = GetRealFileLine(self.FileName, self.CurrentLineNumber)
|
||||
self.Profile.InfFileLineList.append(FileLineTuple)
|
||||
if ffsInf.UseArch:
|
||||
if ffsInf.UseArch not in self.Profile.InfDict:
|
||||
self.Profile.InfDict[ffsInf.UseArch] = [ffsInf.InfFileName]
|
||||
else:
|
||||
self.Profile.InfDict[ffsInf.UseArch].append(ffsInf.InfFileName)
|
||||
else:
|
||||
self.Profile.InfDict['ArchTBD'].append(ffsInf.InfFileName)
|
||||
|
||||
if self.__IsToken('|'):
|
||||
if self.__IsKeyword('RELOCS_STRIPPED'):
|
||||
|
|
@ -4351,6 +4359,13 @@ class FdfParser:
|
|||
self.Profile.InfList.append(ffsInf.InfFileName)
|
||||
FileLineTuple = GetRealFileLine(self.FileName, self.CurrentLineNumber)
|
||||
self.Profile.InfFileLineList.append(FileLineTuple)
|
||||
if ffsInf.UseArch:
|
||||
if ffsInf.UseArch not in self.Profile.InfDict:
|
||||
self.Profile.InfDict[ffsInf.UseArch] = [ffsInf.InfFileName]
|
||||
else:
|
||||
self.Profile.InfDict[ffsInf.UseArch].append(ffsInf.InfFileName)
|
||||
else:
|
||||
self.Profile.InfDict['ArchTBD'].append(ffsInf.InfFileName)
|
||||
|
||||
|
||||
self.__GetOptRomOverrides (ffsInf)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue