UefiPayloadPkg: UniversalPayloadBuild.py to support --pcd feature

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3955

Currently, UPL freezed all PCD and only known UPL hob can hook DXE
Drivers behavior, add optional feature on UniversalPayloadBuild.py to
have another way to hook PCD value.

Cc: Guo Dong <guo.dong@intel.com>
Reviewed-by: : Ray Ni <ray.ni@intel.com>
Signed-off-by: Gua Guo <gua.guo@intel.com>
This commit is contained in:
Gua Guo 2022-06-21 11:52:05 +08:00 committed by mergify[bot]
parent e8034b534a
commit cfe165140a

View File

@ -82,6 +82,11 @@ def BuildUniversalPayload(Args, MacroList):
print("- Failed - Please check if LLVM is installed or if CLANG_BIN is set correctly") print("- Failed - Please check if LLVM is installed or if CLANG_BIN is set correctly")
sys.exit(1) sys.exit(1)
Pcds = ""
if (Args.pcd != None):
for PcdItem in Args.pcd:
Pcds += " --pcd {}".format (PcdItem)
Defines = "" Defines = ""
for key in MacroList: for key in MacroList:
Defines +=" -D {0}={1}".format(key, MacroList[key]) Defines +=" -D {0}={1}".format(key, MacroList[key])
@ -90,12 +95,14 @@ def BuildUniversalPayload(Args, MacroList):
# Building DXE core and DXE drivers as DXEFV. # Building DXE core and DXE drivers as DXEFV.
# #
BuildPayload = f"build -p {DscPath} -b {BuildTarget} -a X64 -t {ToolChain} -y {PayloadReportPath} {Quiet}" BuildPayload = f"build -p {DscPath} -b {BuildTarget} -a X64 -t {ToolChain} -y {PayloadReportPath} {Quiet}"
BuildPayload += Pcds
BuildPayload += Defines BuildPayload += Defines
RunCommand(BuildPayload) RunCommand(BuildPayload)
# #
# Building Universal Payload entry. # Building Universal Payload entry.
# #
BuildModule = f"build -p {DscPath} -b {BuildTarget} -a {BuildArch} -m {EntryModuleInf} -t {ElfToolChain} -y {ModuleReportPath} {Quiet}" BuildModule = f"build -p {DscPath} -b {BuildTarget} -a {BuildArch} -m {EntryModuleInf} -t {ElfToolChain} -y {ModuleReportPath} {Quiet}"
BuildModule += Pcds
BuildModule += Defines BuildModule += Defines
RunCommand(BuildModule) RunCommand(BuildModule)
@ -128,6 +135,7 @@ def main():
parser.add_argument("-D", "--Macro", action="append", default=["UNIVERSAL_PAYLOAD=TRUE"]) parser.add_argument("-D", "--Macro", action="append", default=["UNIVERSAL_PAYLOAD=TRUE"])
parser.add_argument('-i', '--ImageId', type=str, help='Specify payload ID (16 bytes maximal).', default ='UEFI') parser.add_argument('-i', '--ImageId', type=str, help='Specify payload ID (16 bytes maximal).', default ='UEFI')
parser.add_argument('-q', '--Quiet', action='store_true', help='Disable all build messages except FATAL ERRORS.') parser.add_argument('-q', '--Quiet', action='store_true', help='Disable all build messages except FATAL ERRORS.')
parser.add_argument("-p", "--pcd", action="append")
MacroList = {} MacroList = {}
args = parser.parse_args() args = parser.parse_args()
if args.Macro is not None: if args.Macro is not None: