Proxmox-Port/packages/pve-edk2-firmware/patches/001-add-loongarch-virt-build-on-amd64.patch
2024-11-04 03:24:00 +08:00

141 lines
5.8 KiB
Diff

From 5f3c91a04bc303b216f4462ef2947f922951eac3 Mon Sep 17 00:00:00 2001
From: jiangcuo <jiangcuo@bingsin.com>
Date: Tue, 5 Nov 2024 21:15:21 +0800
Subject: [PATCH] Add loongarch64 build on amd64
---
Makefile | 5 +++--
debian/control | 7 +++++++
debian/pve-edk2-firmware-loongarch64.install | 2 ++
debian/pve-edk2-firmware-loongarch64.links | 2 ++
debian/rules | 22 ++++++++++++++++----
5 files changed, 32 insertions(+), 6 deletions(-)
create mode 100644 debian/pve-edk2-firmware-loongarch64.install
create mode 100644 debian/pve-edk2-firmware-loongarch64.links
diff --git a/Makefile b/Makefile
index 6091ce7..d66e4bc 100644
--- a/Makefile
+++ b/Makefile
@@ -13,8 +13,9 @@ VIRTUAL_DEB = $(PACKAGE)_$(DEB_VERSION)_all.deb
AMD64_DEB = $(PACKAGE)-legacy_$(DEB_VERSION)_all.deb $(PACKAGE)-ovmf_$(DEB_VERSION)_all.deb
AARCH64_DEB = $(PACKAGE)-aarch64_$(DEB_VERSION)_all.deb
RISCV_DEB = $(PACKAGE)-riscv_$(DEB_VERSION)_all.deb
+LOONGARCH64_DEB = $(PACKAGE)-loongarch64_$(DEB_VERSION)_all.deb
-DEBS = $(VIRTUAL_DEB) $(AMD64_DEB) $(AARCH64_DEB) $(RISCV_DEB)
+DEBS = $(VIRTUAL_DEB) $(AMD64_DEB) $(AARCH64_DEB) $(RISCV_DEB) $(LOONGARCH64_DEB)
all: $(DEBS)
@echo $(DEBS)
@@ -29,7 +30,7 @@ $(BUILDDIR): $(SRCDIR)/Readme.md
.PHONY: deb
deb: $(DEBS)
-$(AMD64_DEB) $(AARCH64_DEB) $(RISCV_DEB): $(VIRTUAL_DEB)
+$(AMD64_DEB) $(AARCH64_DEB) $(RISCV_DEB) $(LOONGARCH64_DEB): $(VIRTUAL_DEB)
$(VIRTUAL_DEB): $(BUILDDIR)
cd $(BUILDDIR); dpkg-buildpackage -b -uc -us
lintian $(DEBS)
diff --git a/debian/control b/debian/control
index 3867cd2..92afbe1 100644
--- a/debian/control
+++ b/debian/control
@@ -66,6 +66,13 @@ Description: edk2 based RISC-V UEFI firmware modules for virtual machines
for UEFI, including Secure Boot, allowing use of UEFI in place of a
traditional BIOS in your VM.
+Package: pve-edk2-firmware-loongarch64
+Architecture: all
+Depends: ${misc:Depends},
+Multi-Arch: foreign
+Description: edk2 based loongarch64 UEFI firmware modules for virtual machines
+ A build of EDK II for 64-bit loongarch virtual machines.
+
Package: pve-edk2-firmware-legacy
Architecture: all
Depends: ${misc:Depends},
diff --git a/debian/pve-edk2-firmware-loongarch64.install b/debian/pve-edk2-firmware-loongarch64.install
new file mode 100644
index 0000000..a0dfaf6
--- /dev/null
+++ b/debian/pve-edk2-firmware-loongarch64.install
@@ -0,0 +1,2 @@
+Build/LoongArchVirtQemu/RELEASE_*GCC*/FV/QEMU_EFI.fd /usr/share/pve-edk2-firmware/LOONGARCH64
+Build/LoongArchVirtQemu/RELEASE_*GCC*/FV/QEMU_VARS.fd /usr/share/pve-edk2-firmware/LOONGARCH64
\ No newline at end of file
diff --git a/debian/pve-edk2-firmware-loongarch64.links b/debian/pve-edk2-firmware-loongarch64.links
new file mode 100644
index 0000000..973a78e
--- /dev/null
+++ b/debian/pve-edk2-firmware-loongarch64.links
@@ -0,0 +1,2 @@
+/usr/share/pve-edk2-firmware/LOONGARCH64/QEMU_EFI.fd /usr/share/pve-edk2-firmware/LOONGARCH64_VIRT_CODE.fd
+/usr/share/pve-edk2-firmware/LOONGARCH64/QEMU_VARS.fd /usr/share/pve-edk2-firmware/LOONGARCH64_VIRT_VARS.fd
\ No newline at end of file
diff --git a/debian/rules b/debian/rules
index a47c807..09d6908 100755
--- a/debian/rules
+++ b/debian/rules
@@ -28,7 +28,7 @@ ifeq ($(DEB_BUILD_ARCH),loongarch64)
endif
PCD_RELEASE_DATE = $(shell date -d@$(SOURCE_DATE_EPOCH) "+%m/%d/%Y")
-PCD_FLAGS = --pcd PcdFirmwareVendor=L"Proxmox distribution of EDK II\\0"
+PCD_FLAGS = --pcd PcdFirmwareVendor=L"Proxmox Port distribution of EDK II\\0"
PCD_FLAGS += --pcd PcdFirmwareVersionString=L"$(DEB_VERSION)\\0"
PCD_FLAGS += --pcd PcdFirmwareReleaseDateString=L"$(PCD_RELEASE_DATE)\\0"
COMMON_FLAGS = -DNETWORK_HTTP_BOOT_ENABLE=TRUE
@@ -50,7 +50,9 @@ AAVMF_FLAGS += -DTPM2_CONFIG_ENABLE=TRUE
AAVMF_FLAGS += -DCAVIUM_ERRATUM_27456=TRUE
RISCV64_FLAGS = $(COMMON_FLAGS)
-LOONGARCH64_FLAGS = $(COMMON_FLAGS)
+LOONGARCH64_FLAGS = -DNETWORK_HTTP_BOOT_ENABLE=TRUE
+LOONGARCH64_FLAGS += -DSECURE_BOOT_ENABLE=TRUE
+LOONGARCH64_FLAGS += -DNETWORK_IP6_ENABLE=TRUE
# Clear variables used internally by the edk2 build system
undefine WORKSPACE
@@ -63,7 +65,7 @@ undefine CONF_PATH
%:
dh $@
-override_dh_auto_build: build-qemu-efi-aarch64 build-ovmf build-ovmf32 build-qemu-efi-riscv64
+override_dh_auto_build: build-qemu-efi-aarch64 build-ovmf build-ovmf32 build-qemu-efi-riscv64 build-qemu-efi-loongarch64
debian/setup-build-stamp:
cp -a debian/Logo.bmp MdeModulePkg/Logo/Logo.bmp
@@ -99,6 +101,10 @@ AAVMF_PREENROLLED_VARS = $(addprefix $(AAVMF_BUILD_DIR)/FV/,AAVMF_VARS.ms.fd AAV
RISCV64_BUILD_DIR = Build/RiscVVirtQemu/$(BUILD_TYPE)_$(EDK2_TOOLCHAIN)
RISCV64_IMAGES = $(addprefix $(RISCV64_BUILD_DIR)/FV/,RISCV_VIRT_CODE.fd RISCV_VIRT_VARS.fd)
+
+LOONGARCH64_BUILD_DIR = Build/LoongArchVirtQemu/$(BUILD_TYPE)_$(EDK2_TOOLCHAIN)
+LOONGARCH64_IMAGES = $(addprefix $(LOONGARCH64_BUILD_DIR)/FV/,QEMU_EFI.fd QEMU_VARS.fd)
+
build-ovmf32: $(OVMF32_BINARIES) $(OVMF32_IMAGES)
$(OVMF32_BINARIES) $(OVMF32_IMAGES): debian/setup-build-stamp
rm -rf $(OVMF32_INSTALL_DIR)
@@ -217,6 +223,14 @@ $(RISCV64_IMAGES): debian/setup-build-stamp
truncate -s 32M $(RISCV64_BUILD_DIR)/FV/RISCV_VIRT_CODE.fd
truncate -s 32M $(RISCV64_BUILD_DIR)/FV/RISCV_VIRT_VARS.fd
+build-qemu-efi-loongarch64: $(LOONGARCH64_IMAGES)
+$(LOONGARCH64_IMAGES): debian/setup-build-stamp
+ set -e; . ./edksetup.sh; \
+ build -a LOONGARCH64 \
+ -t $(EDK2_TOOLCHAIN) \
+ -p OvmfPkg/LoongArchVirt/LoongArchVirtQemu.dsc \
+ $(LOONGARCH64_FLAGS) -b $(BUILD_TYPE)
+
override_dh_auto_clean:
-. ./edksetup.sh; build clean
make -C BaseTools clean
@@ -253,4 +267,4 @@ get-orig-source:
edk2-$(DEB_VERSION_UPSTREAM)
rm -rf edk2.tmp edk2-$(DEB_VERSION_UPSTREAM)
-.PHONY: build-ovmf build-ovmf32 build-qemu-efi build-qemu-efi-aarch64 build-qemu-efi-riscv64
+.PHONY: build-ovmf build-ovmf32 build-qemu-efi build-qemu-efi-aarch64 build-qemu-efi-riscv64 build-qemu-efi-loongarch64