BaseTools: Fix incorrect formatting of GenFds command dictionary

GenFdsCommand returned dictionary with elements that
are not compatible with GenFdsApi.
As a result the following options were not processed by GenFdsApi:
-v, -q, -d, --genfds-multi-thread, --ignore-sources
The issue is introduced by commit b3497bad12.

V2: Remove EFI_SOURCE references

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Felix Polyudov <felixp@ami.com>
Reviewed-by: Bob Feng <bob.c.feng@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
Felix Polyudov 2019-01-17 00:51:16 +08:00 committed by Feng, Bob C
parent 3e1ab49481
commit 842695d2ff
1 changed files with 51 additions and 1 deletions

View File

@ -3,6 +3,7 @@
# #
# Copyright (c) 2007 - 2019, Intel Corporation. All rights reserved.<BR> # Copyright (c) 2007 - 2019, Intel Corporation. All rights reserved.<BR>
# Copyright (c) 2018, Hewlett Packard Enterprise Development, L.P.<BR> # Copyright (c) 2018, Hewlett Packard Enterprise Development, L.P.<BR>
# Copyright (c) 2019, American Megatrends, Inc. All rights reserved.<BR>
# #
# This program and the accompanying materials # This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # are licensed and made available under the terms and conditions of the BSD License
@ -935,7 +936,56 @@ class WorkspaceAutoGen(AutoGen):
@property @property
def GenFdsCommandDict(self): def GenFdsCommandDict(self):
return GenMake.TopLevelMakefile(self)._TemplateDict FdsCommandDict = {}
LogLevel = EdkLogger.GetLevel()
if LogLevel == EdkLogger.VERBOSE:
FdsCommandDict["verbose"] = True
elif LogLevel <= EdkLogger.DEBUG_9:
FdsCommandDict["debug"] = LogLevel - 1
elif LogLevel == EdkLogger.QUIET:
FdsCommandDict["quiet"] = True
if GlobalData.gEnableGenfdsMultiThread:
FdsCommandDict["GenfdsMultiThread"] = True
if GlobalData.gIgnoreSource:
FdsCommandDict["IgnoreSources"] = True
FdsCommandDict["OptionPcd"] = []
for pcd in GlobalData.BuildOptionPcd:
if pcd[2]:
pcdname = '.'.join(pcd[0:3])
else:
pcdname = '.'.join(pcd[0:2])
if pcd[3].startswith('{'):
FdsCommandDict["OptionPcd"].append(pcdname + '=' + 'H' + '"' + pcd[3] + '"')
else:
FdsCommandDict["OptionPcd"].append(pcdname + '=' + pcd[3])
MacroList = []
# macros passed to GenFds
MacroDict = {}
MacroDict.update(GlobalData.gGlobalDefines)
MacroDict.update(GlobalData.gCommandLineDefines)
for MacroName in MacroDict:
if MacroDict[MacroName] != "":
MacroList.append('"%s=%s"' % (MacroName, MacroDict[MacroName].replace('\\', '\\\\')))
else:
MacroList.append('"%s"' % MacroName)
FdsCommandDict["macro"] = MacroList
FdsCommandDict["fdf_file"] = [self.FdfFile]
FdsCommandDict["build_target"] = self.BuildTarget
FdsCommandDict["toolchain_tag"] = self.ToolChain
FdsCommandDict["active_platform"] = str(self)
FdsCommandDict["conf_directory"] = GlobalData.gConfDirectory
FdsCommandDict["build_architecture_list"] = ','.join(self.ArchList)
FdsCommandDict["platform_build_directory"] = self.BuildDir
FdsCommandDict["fd"] = self.FdTargetList
FdsCommandDict["fv"] = self.FvTargetList
FdsCommandDict["cap"] = self.CapTargetList
return FdsCommandDict
## Create makefile for the platform and modules in it ## Create makefile for the platform and modules in it
# #