]> git.proxmox.com Git - mirror_edk2.git/blobdiff - UefiPayloadPkg/UniversalPayloadBuild.py
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / UefiPayloadPkg / UniversalPayloadBuild.py
index c71526e0a652bee7c0d8442da5df761cce184c57..522855eba44d54606643c554c948336c5d573d5c 100644 (file)
@@ -31,7 +31,7 @@ class UPLD_INFO_HEADER(LittleEndianStructure):
     def __init__(self):\r
         self.Identifier     =  b'PLDH'\r
         self.HeaderLength   = sizeof(UPLD_INFO_HEADER)\r
-        self.SpecRevision   = 0x0007\r
+        self.SpecRevision   = 0x0009\r
         self.Revision       = 0x0000010105\r
         self.ImageId        = b'UEFI'\r
         self.ProducerId     = b'INTEL'\r
@@ -59,15 +59,16 @@ 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
+    DxeFvOutputDir = os.path.join(BuildDir, "{}_{}".format (BuildTarget, ToolChain), os.path.normpath("FV/DXEFV.Fv"))\r
+    BdsFvOutputDir = os.path.join(BuildDir, "{}_{}".format (BuildTarget, ToolChain), os.path.normpath("FV/BDSFV.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
@@ -94,14 +95,14 @@ 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
@@ -111,6 +112,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
@@ -118,9 +120,27 @@ 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 --remove-section .upld.bds_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={} --add-section .upld.bds_fv={} {}'.format (\r
+                       LlvmObjcopyPath,\r
+                       ObjCopyFlag,\r
+                       ObjCopyFlag,\r
+                       UpldInfoFile,\r
+                       DxeFvOutputDir,\r
+                       BdsFvOutputDir,\r
+                       EntryOutputDir\r
+                       )\r
+    set_section    = '"{}" -I {} -O {} --set-section-alignment .upld_info=4 --set-section-alignment .upld.uefi_fv=16 --set-section-alignment .upld.bds_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