]> git.proxmox.com Git - mirror_edk2.git/blobdiff - UefiPayloadPkg/UniversalPayloadBuild.py
CryptoPkg/Library/OpensslLib: update auto-generated files
[mirror_edk2.git] / UefiPayloadPkg / UniversalPayloadBuild.py
index 8af381336df2b6f93e1264140826b31d51fcdb02..6003de36d13915a42e265834ddd0d8969f7ef53a 100644 (file)
@@ -29,9 +29,9 @@ class UPLD_INFO_HEADER(LittleEndianStructure):
         ]\r
 \r
     def __init__(self):\r
-        self.Identifier     =  b'UPLD'\r
+        self.Identifier     =  b'PLDH'\r
         self.HeaderLength   = sizeof(UPLD_INFO_HEADER)\r
-        self.HeaderRevision = 0x0075\r
+        self.SpecRevision   = 0x0007\r
         self.Revision       = 0x0000010105\r
         self.ImageId        = b'UEFI'\r
         self.ProducerId     = b'INTEL'\r
@@ -59,15 +59,15 @@ def BuildUniversalPayload(Args, MacroList):
     if Args.Arch == 'X64':\r
         BuildArch      = "X64"\r
         ObjCopyFlag    = "elf64-x86-64"\r
-        EntryOutputDir = os.path.join(BuildDir, f"{BuildTarget}_{ElfToolChain}", os.path.normpath("X64/UefiPayloadPkg/UefiPayloadEntry/UniversalPayloadEntry/DEBUG/UniversalPayloadEntry.dll"))\r
+        EntryOutputDir = os.path.join(BuildDir, "{}_{}".format (BuildTarget, ElfToolChain), os.path.normpath("X64/UefiPayloadPkg/UefiPayloadEntry/UniversalPayloadEntry/DEBUG/UniversalPayloadEntry.dll"))\r
     else:\r
         BuildArch      = "IA32 -a X64"\r
         ObjCopyFlag    = "elf32-i386"\r
-        EntryOutputDir = os.path.join(BuildDir, f"{BuildTarget}_{ElfToolChain}", os.path.normpath("IA32/UefiPayloadPkg/UefiPayloadEntry/UniversalPayloadEntry/DEBUG/UniversalPayloadEntry.dll"))\r
+        EntryOutputDir = os.path.join(BuildDir, "{}_{}".format (BuildTarget, ElfToolChain), os.path.normpath("IA32/UefiPayloadPkg/UefiPayloadEntry/UniversalPayloadEntry/DEBUG/UniversalPayloadEntry.dll"))\r
 \r
     EntryModuleInf = os.path.normpath("UefiPayloadPkg/UefiPayloadEntry/UniversalPayloadEntry.inf")\r
     DscPath = os.path.normpath("UefiPayloadPkg/UefiPayloadPkg.dsc")\r
-    FvOutputDir = os.path.join(BuildDir, f"{BuildTarget}_{ToolChain}", os.path.normpath("FV/DXEFV.Fv"))\r
+    FvOutputDir = os.path.join(BuildDir, "{}_{}".format (BuildTarget, ToolChain), os.path.normpath("FV/DXEFV.Fv"))\r
     PayloadReportPath = os.path.join(BuildDir, "UefiUniversalPayload.txt")\r
     ModuleReportPath = os.path.join(BuildDir, "UefiUniversalPayloadEntry.txt")\r
     UpldInfoFile = os.path.join(BuildDir, "UniversalPayloadInfo.bin")\r
@@ -82,6 +82,11 @@ def BuildUniversalPayload(Args, MacroList):
         print("- Failed - Please check if LLVM is installed or if CLANG_BIN is set correctly")\r
         sys.exit(1)\r
 \r
+    Pcds = ""\r
+    if (Args.pcd != None):\r
+        for PcdItem in Args.pcd:\r
+            Pcds += " --pcd {}".format (PcdItem)\r
+\r
     Defines = ""\r
     for key in MacroList:\r
         Defines +=" -D {0}={1}".format(key, MacroList[key])\r
@@ -89,13 +94,15 @@ def BuildUniversalPayload(Args, MacroList):
     #\r
     # Building DXE core and DXE drivers as DXEFV.\r
     #\r
-    BuildPayload = f"build -p {DscPath} -b {BuildTarget} -a X64 -t {ToolChain} -y {PayloadReportPath} {Quiet}"\r
+    BuildPayload = "build -p {} -b {} -a X64 -t {} -y {} {}".format (DscPath, BuildTarget, ToolChain, PayloadReportPath, Quiet)\r
+    BuildPayload += Pcds\r
     BuildPayload += Defines\r
     RunCommand(BuildPayload)\r
     #\r
     # Building Universal Payload entry.\r
     #\r
-    BuildModule = f"build -p {DscPath} -b {BuildTarget} -a {BuildArch} -m {EntryModuleInf} -t {ElfToolChain} -y {ModuleReportPath} {Quiet}"\r
+    BuildModule = "build -p {} -b {} -a {} -m {} -t {} -y {} {}".format (DscPath, BuildTarget, BuildArch, EntryModuleInf, ElfToolChain, ModuleReportPath, Quiet)\r
+    BuildModule += Pcds\r
     BuildModule += Defines\r
     RunCommand(BuildModule)\r
 \r
@@ -104,6 +111,7 @@ def BuildUniversalPayload(Args, MacroList):
     #\r
     upld_info_hdr = UPLD_INFO_HEADER()\r
     upld_info_hdr.ImageId = Args.ImageId.encode()[:16]\r
+    upld_info_hdr.Attribute |= 1 if BuildTarget == "DEBUG" else 0\r
     fp = open(UpldInfoFile, 'wb')\r
     fp.write(bytearray(upld_info_hdr))\r
     fp.close()\r
@@ -111,9 +119,26 @@ def BuildUniversalPayload(Args, MacroList):
     #\r
     # Copy the DXEFV as a section in elf format Universal Payload entry.\r
     #\r
-    remove_section = f"{LlvmObjcopyPath} -I {ObjCopyFlag} -O {ObjCopyFlag} --remove-section .upld_info --remove-section .upld.uefi_fv {EntryOutputDir}"\r
-    add_section    = f"{LlvmObjcopyPath} -I {ObjCopyFlag} -O {ObjCopyFlag} --add-section .upld_info={UpldInfoFile} --add-section .upld.uefi_fv={FvOutputDir} {EntryOutputDir}"\r
-    set_section    = f"{LlvmObjcopyPath} -I {ObjCopyFlag} -O {ObjCopyFlag} --set-section-alignment .upld.upld_info=16 --set-section-alignment .upld.uefi_fv=16 {EntryOutputDir}"\r
+    remove_section = '"{}" -I {} -O {} --remove-section .upld_info --remove-section .upld.uefi_fv {}'.format (\r
+                       LlvmObjcopyPath,\r
+                       ObjCopyFlag,\r
+                       ObjCopyFlag,\r
+                       EntryOutputDir\r
+                       )\r
+    add_section    = '"{}" -I {} -O {} --add-section .upld_info={} --add-section .upld.uefi_fv={} {}'.format (\r
+                       LlvmObjcopyPath,\r
+                       ObjCopyFlag,\r
+                       ObjCopyFlag,\r
+                       UpldInfoFile,\r
+                       FvOutputDir,\r
+                       EntryOutputDir\r
+                       )\r
+    set_section    = '"{}" -I {} -O {} --set-section-alignment .upld.upld_info=16 --set-section-alignment .upld.uefi_fv=16 {}'.format (\r
+                       LlvmObjcopyPath,\r
+                       ObjCopyFlag,\r
+                       ObjCopyFlag,\r
+                       EntryOutputDir\r
+                       )\r
     RunCommand(remove_section)\r
     RunCommand(add_section)\r
     RunCommand(set_section)\r
@@ -128,6 +153,7 @@ def main():
     parser.add_argument("-D", "--Macro", action="append", default=["UNIVERSAL_PAYLOAD=TRUE"])\r
     parser.add_argument('-i', '--ImageId', type=str, help='Specify payload ID (16 bytes maximal).', default ='UEFI')\r
     parser.add_argument('-q', '--Quiet', action='store_true', help='Disable all build messages except FATAL ERRORS.')\r
+    parser.add_argument("-p", "--pcd", action="append")\r
     MacroList = {}\r
     args = parser.parse_args()\r
     if args.Macro is not None:\r