]> git.proxmox.com Git - pve-edk2-firmware.git/blame - debian/rules
bump version to 4.2023.08-4
[pve-edk2-firmware.git] / debian / rules
CommitLineData
33bf0acc 1#!/usr/bin/make -f
33bf0acc 2
a65627a8 3SHELL=/bin/bash
33bf0acc 4
2b1d392a 5include /usr/share/dpkg/default.mk
33bf0acc 6
1cc8f0e1 7BUILD_TYPE ?= RELEASE
a65627a8 8EDK2_TOOLCHAIN = GCC5
33bf0acc 9export $(EDK2_TOOLCHAIN)_AARCH64_PREFIX=aarch64-linux-gnu-
8ed64dec 10export $(EDK2_TOOLCHAIN)_RISCV64_PREFIX=riscv64-linux-gnu-
33bf0acc 11
1345c3eb 12export PYTHON3_ENABLE=TRUE
1da98c7b 13
33bf0acc
TL
14ifeq ($(DEB_BUILD_ARCH),amd64)
15 EDK2_BUILD_ARCH=X64
33bf0acc 16endif
a65627a8
TL
17ifeq ($(DEB_BUILD_ARCH),i386)
18 EDK2_BUILD_ARCH=IA32
19endif
33bf0acc
TL
20ifeq ($(DEB_BUILD_ARCH),arm64)
21 EDK2_BUILD_ARCH=AARCH64
22endif
a65627a8 23
d7298091
TL
24PCD_RELEASE_DATE = $(shell date -d@$(SOURCE_DATE_EPOCH) "+%m/%d/%Y")
25PCD_FLAGS = --pcd PcdFirmwareVendor=L"Proxmox distribution of EDK II\\0"
26PCD_FLAGS += --pcd PcdFirmwareVersionString=L"$(DEB_VERSION)\\0"
27PCD_FLAGS += --pcd PcdFirmwareReleaseDateString=L"$(PCD_RELEASE_DATE)\\0"
13d9aa9d 28COMMON_FLAGS = -DNETWORK_HTTP_BOOT_ENABLE=TRUE
a2b8eeec 29COMMON_FLAGS += -DNETWORK_IP6_ENABLE=TRUE
13d9aa9d
TL
30COMMON_FLAGS += -DNETWORK_TLS_ENABLE
31COMMON_FLAGS += -DSECURE_BOOT_ENABLE=TRUE
dc578af2 32COMMON_FLAGS += -DPVSCSI_ENABLE=TRUE
d7298091
TL
33COMMON_FLAGS += $(PCD_FLAGS)
34OVMF_COMMON_FLAGS = $(COMMON_FLAGS)
35OVMF_COMMON_FLAGS += -DTPM2_ENABLE=TRUE
a65627a8 36OVMF_4M_FLAGS = $(OVMF_COMMON_FLAGS) -DFD_SIZE_4MB
a65627a8
TL
37OVMF_4M_SMM_FLAGS = $(OVMF_4M_FLAGS) -DSMM_REQUIRE=TRUE
38OVMF32_4M_FLAGS = $(OVMF_COMMON_FLAGS) -DFD_SIZE_4MB
39OVMF32_4M_SMM_FLAGS = $(OVMF32_4M_FLAGS) -DSMM_REQUIRE=TRUE
40
d7298091
TL
41AAVMF_FLAGS = $(COMMON_FLAGS)
42AAVMF_FLAGS += -DTPM2_ENABLE=TRUE
43AAVMF_FLAGS += -DTPM2_CONFIG_ENABLE=TRUE
1cc8f0e1 44AAVMF_FLAGS += -DCAVIUM_ERRATUM_27456=TRUE
a65627a8 45
8ed64dec 46RISCV64_FLAGS = $(COMMON_FLAGS)
8b68f76f 47
33bf0acc
TL
48# Clear variables used internally by the edk2 build system
49undefine WORKSPACE
50undefine ECP_SOURCE
51undefine EDK_SOURCE
52undefine EFI_SOURCE
53undefine EDK_TOOLS_PATH
54undefine CONF_PATH
55
56%:
57 dh $@
58
8ed64dec 59override_dh_auto_build: build-qemu-efi-aarch64 build-ovmf build-ovmf32 build-qemu-efi-riscv64
33bf0acc 60
a65627a8 61debian/setup-build-stamp:
33bf0acc 62 cp -a debian/Logo.bmp MdeModulePkg/Logo/Logo.bmp
a65627a8 63 set -e; . ./edksetup.sh; \
33bf0acc 64 make -C BaseTools ARCH=$(EDK2_BUILD_ARCH)
a65627a8
TL
65 touch $@
66
1cc8f0e1
TL
67OVMF_INSTALL_DIR = debian/ovmf-install
68OVMF_BUILD_DIR = Build/OvmfX64/$(BUILD_TYPE)_$(EDK2_TOOLCHAIN)
69OVMF3264_BUILD_DIR = Build/Ovmf3264/$(BUILD_TYPE)_$(EDK2_TOOLCHAIN)
a65627a8
TL
70OVMF_ENROLL = $(OVMF3264_BUILD_DIR)/X64/EnrollDefaultKeys.efi
71OVMF_SHELL = $(OVMF3264_BUILD_DIR)/X64/Shell.efi
72OVMF_BINARIES = $(OVMF_ENROLL) $(OVMF_SHELL)
8d856e13
TL
73OVMF_IMAGES := $(addprefix $(OVMF_INSTALL_DIR)/,OVMF_CODE_4M.fd OVMF_CODE_4M.secboot.fd OVMF_VARS_4M.fd)
74OVMF_PREENROLLED_VARS := $(addprefix $(OVMF_INSTALL_DIR)/,OVMF_VARS_4M.ms.fd OVMF_VARS_4M.snakeoil.fd)
33bf0acc 75
1cc8f0e1
TL
76OVMF32_INSTALL_DIR = debian/ovmf32-install
77OVMF32_BUILD_DIR = Build/OvmfIa32/$(BUILD_TYPE)_$(EDK2_TOOLCHAIN)
a65627a8
TL
78OVMF32_SHELL = $(OVMF32_BUILD_DIR)/IA32/Shell.efi
79OVMF32_BINARIES = $(OVMF32_SHELL)
d7298091 80OVMF32_IMAGES := $(addprefix $(OVMF32_INSTALL_DIR)/,OVMF32_CODE_4M.secboot.fd OVMF32_VARS_4M.fd)
a65627a8 81
1cc8f0e1
TL
82QEMU_EFI_BUILD_DIR = Build/ArmVirtQemu-$(EDK2_HOST_ARCH)/$(BUILD_TYPE)_$(EDK2_TOOLCHAIN)
83AAVMF_BUILD_DIR = Build/ArmVirtQemu-AARCH64/$(BUILD_TYPE)_$(EDK2_TOOLCHAIN)
a65627a8
TL
84AAVMF_ENROLL = $(AAVMF_BUILD_DIR)/AARCH64/EnrollDefaultKeys.efi
85AAVMF_SHELL = $(AAVMF_BUILD_DIR)/AARCH64/Shell.efi
86AAVMF_BINARIES = $(AAVMF_ENROLL) $(AAVMF_SHELL)
87AAVMF_CODE = $(AAVMF_BUILD_DIR)/FV/AAVMF_CODE.fd
88AAVMF_VARS = $(AAVMF_BUILD_DIR)/FV/AAVMF_VARS.fd
89AAVMF_IMAGES = $(AAVMF_CODE) $(AAVMF_VARS)
90AAVMF_PREENROLLED_VARS = $(addprefix $(AAVMF_BUILD_DIR)/FV/,AAVMF_VARS.ms.fd AAVMF_VARS.snakeoil.fd)
91
8ed64dec
TL
92RISCV64_BUILD_DIR = Build/RiscVVirtQemu/$(BUILD_TYPE)_$(EDK2_TOOLCHAIN)
93RISCV64_IMAGES = $(addprefix $(RISCV64_BUILD_DIR)/FV/,RISCV_VIRT_CODE.fd RISCV_VIRT_VARS.fd)
94
a65627a8
TL
95build-ovmf32: $(OVMF32_BINARIES) $(OVMF32_IMAGES)
96$(OVMF32_BINARIES) $(OVMF32_IMAGES): debian/setup-build-stamp
1cc8f0e1
TL
97 rm -rf $(OVMF32_INSTALL_DIR)
98 mkdir $(OVMF32_INSTALL_DIR)
a65627a8
TL
99 set -e; . ./edksetup.sh; \
100 build -a IA32 \
101 -t $(EDK2_TOOLCHAIN) \
102 -p OvmfPkg/OvmfPkgIa32.dsc \
1cc8f0e1 103 $(OVMF32_4M_SMM_FLAGS) -b $(BUILD_TYPE)
a65627a8 104 cp $(OVMF32_BUILD_DIR)/FV/OVMF_CODE.fd \
1cc8f0e1 105 $(OVMF32_INSTALL_DIR)/OVMF32_CODE_4M.secboot.fd
a65627a8 106 cp $(OVMF32_BUILD_DIR)/FV/OVMF_VARS.fd \
1cc8f0e1 107 $(OVMF32_INSTALL_DIR)/OVMF32_VARS_4M.fd
a65627a8
TL
108
109build-ovmf: $(OVMF_BINARIES) $(OVMF_IMAGES) $(OVMF_PREENROLLED_VARS)
110$(OVMF_BINARIES) $(OVMF_IMAGES): debian/setup-build-stamp
1cc8f0e1
TL
111 rm -rf $(OVMF_INSTALL_DIR)
112 mkdir $(OVMF_INSTALL_DIR)
a65627a8
TL
113 rm -rf Build/OvmfX64
114 set -e; . ./edksetup.sh; \
115 build -a IA32 -a X64 \
116 -t $(EDK2_TOOLCHAIN) \
117 -p OvmfPkg/OvmfPkgIa32X64.dsc \
1cc8f0e1 118 $(OVMF_4M_FLAGS) -b $(BUILD_TYPE)
a65627a8 119 cp $(OVMF3264_BUILD_DIR)/FV/OVMF_CODE.fd \
1cc8f0e1 120 $(OVMF_INSTALL_DIR)/OVMF_CODE_4M.fd
a65627a8 121 cp $(OVMF3264_BUILD_DIR)/FV/OVMF_VARS.fd \
1cc8f0e1 122 $(OVMF_INSTALL_DIR)/OVMF_VARS_4M.fd
a65627a8 123 rm -rf Build/OvmfX64
33bf0acc 124 set -e; . ./edksetup.sh; \
a65627a8
TL
125 build -a IA32 -a X64 \
126 -t $(EDK2_TOOLCHAIN) \
127 -p OvmfPkg/OvmfPkgIa32X64.dsc \
1cc8f0e1 128 $(OVMF_4M_SMM_FLAGS) -b $(BUILD_TYPE)
a65627a8 129 cp $(OVMF3264_BUILD_DIR)/FV/OVMF_CODE.fd \
1cc8f0e1 130 $(OVMF_INSTALL_DIR)/OVMF_CODE_4M.secboot.fd
a65627a8
TL
131
132ifeq ($(call dpkg_vendor_derives_from_v1,ubuntu),yes)
133debian/PkKek-1-vendor.pem: debian/PkKek-1-Ubuntu.pem
134else
135debian/PkKek-1-vendor.pem: debian/PkKek-1-Debian.pem
136endif
137 ln -sf `basename $<` $@
138
139debian/oem-string-%: debian/PkKek-1-%.pem
140 tr -d '\n' < $< | \
141 sed -e 's/.*-----BEGIN CERTIFICATE-----/4e32566d-8e9e-4f52-81d3-5bb9715f9727:/' -e 's/-----END CERTIFICATE-----//' > $@
142
143%/AAVMF_VARS.ms.fd: %/AAVMF_CODE.fd %/AAVMF_VARS.fd debian/oem-string-vendor $(AAVMF_ENROLL) $(AAVMF_SHELL)
144 PYTHONPATH=$(CURDIR)/debian/python \
1cc8f0e1 145 python3 ./debian/edk2-vars-generator.py \
a65627a8
TL
146 -f AAVMF -e $(AAVMF_ENROLL) -s $(AAVMF_SHELL) \
147 -c $(AAVMF_CODE) -V $(AAVMF_VARS) \
148 -C `< debian/oem-string-vendor` -o $@
149
150%/AAVMF_VARS.snakeoil.fd: %/AAVMF_CODE.fd %/AAVMF_VARS.fd debian/oem-string-snakeoil $(AAVMF_ENROLL) $(AAVMF_SHELL)
151 PYTHONPATH=$(CURDIR)/debian/python \
1cc8f0e1 152 python3 ./debian/edk2-vars-generator.py \
a65627a8
TL
153 -f AAVMF -e $(AAVMF_ENROLL) -s $(AAVMF_SHELL) \
154 -c $(AAVMF_CODE) -V $(AAVMF_VARS) \
1cc8f0e1 155 --no-default \
a65627a8
TL
156 -C `< debian/oem-string-snakeoil` -o $@
157
158%/OVMF_VARS.ms.fd: %/OVMF_CODE.fd %/OVMF_VARS.fd debian/oem-string-vendor $(OVMF_ENROLL) $(OVMF_SHELL)
159 PYTHONPATH=$(CURDIR)/debian/python \
1cc8f0e1 160 python3 ./debian/edk2-vars-generator.py \
a65627a8 161 -f OVMF -e $(OVMF_ENROLL) -s $(OVMF_SHELL) \
1cc8f0e1
TL
162 -c $(OVMF_INSTALL_DIR)/OVMF_CODE.fd \
163 -V $(OVMF_INSTALL_DIR)/OVMF_VARS.fd \
a65627a8
TL
164 -C `< debian/oem-string-vendor` -o $@
165
166%/OVMF_VARS_4M.ms.fd: %/OVMF_CODE_4M.fd %/OVMF_VARS_4M.fd debian/oem-string-vendor $(OVMF_ENROLL) $(OVMF_SHELL)
167 PYTHONPATH=$(CURDIR)/debian/python \
1cc8f0e1 168 python3 ./debian/edk2-vars-generator.py \
a65627a8 169 -f OVMF_4M -e $(OVMF_ENROLL) -s $(OVMF_SHELL) \
1cc8f0e1
TL
170 -c $(OVMF_INSTALL_DIR)/OVMF_CODE_4M.fd \
171 -V $(OVMF_INSTALL_DIR)/OVMF_VARS_4M.fd \
a65627a8
TL
172 -C `< debian/oem-string-vendor` -o $@
173
174%/OVMF_VARS_4M.snakeoil.fd: %/OVMF_CODE_4M.fd %/OVMF_VARS_4M.fd debian/oem-string-snakeoil $(OVMF_ENROLL) $(OVMF_SHELL)
175 PYTHONPATH=$(CURDIR)/debian/python \
1cc8f0e1 176 python3 ./debian/edk2-vars-generator.py \
a65627a8 177 -f OVMF_4M -e $(OVMF_ENROLL) -s $(OVMF_SHELL) \
1cc8f0e1
TL
178 -c $(OVMF_INSTALL_DIR)/OVMF_CODE_4M.fd \
179 -V $(OVMF_INSTALL_DIR)/OVMF_VARS_4M.fd \
180 --no-default \
a65627a8
TL
181 -C `< debian/oem-string-snakeoil` -o $@
182
183ArmPkg/Library/GccLto/liblto-aarch64.a: ArmPkg/Library/GccLto/liblto-aarch64.s
184 $($(EDK2_TOOLCHAIN)_AARCH64_PREFIX)gcc -c -fpic $< -o $@
185
1cc8f0e1
TL
186ArmPkg/Library/GccLto/liblto-arm.a: ArmPkg/Library/GccLto/liblto-arm.s
187 $($(EDK2_TOOLCHAIN)_ARM_PREFIX)gcc -c -fpic $< -o $@
188
a65627a8 189build-qemu-efi: debian/setup-build-stamp
20ffa59c 190 set -e; . ./edksetup.sh; \
20ffa59c
TL
191 build -a $(EDK2_HOST_ARCH) \
192 -t $(EDK2_TOOLCHAIN) \
193 -p ArmVirtPkg/ArmVirtQemu.dsc \
1cc8f0e1 194 $(AAVMF_FLAGS) -b $(BUILD_TYPE)
2cfb5323
TL
195 cp $(QEMU_EFI_BUILD_DIR)/FV/QEMU_EFI.fd \
196 $(QEMU_EFI_BUILD_DIR)/FV/$(FW_NAME)_CODE.fd
197 cp $(QEMU_EFI_BUILD_DIR)/FV/QEMU_VARS.fd \
198 $(QEMU_EFI_BUILD_DIR)/FV/$(FW_NAME)_VARS.fd
199 # QEMU expects 64MiB CODE and VARS files on ARM/AARCH64 architectures
200 # Truncate the firmware files to the expected size
201 truncate -s 64M $(QEMU_EFI_BUILD_DIR)/FV/$(FW_NAME)_CODE.fd
202 truncate -s 64M $(QEMU_EFI_BUILD_DIR)/FV/$(FW_NAME)_VARS.fd
a65627a8 203
1cc8f0e1
TL
204build-qemu-efi-aarch64: $(AAVMF_BINARIES) $(AAVMF_IMAGES) $(AAVMF_PREENROLLED_VARS)
205$(AAVMF_BINARIES) $(AAVMF_IMAGES): ArmPkg/Library/GccLto/liblto-aarch64.a
20ffa59c
TL
206 $(MAKE) -f debian/rules build-qemu-efi EDK2_ARCH_DIR=AArch64 EDK2_HOST_ARCH=AARCH64 FW_NAME=AAVMF
207
8ed64dec
TL
208build-qemu-efi-riscv64: $(RISCV64_IMAGES)
209$(RISCV64_IMAGES): debian/setup-build-stamp
210 set -e; . ./edksetup.sh; \
211 build -a RISCV64 \
212 -t $(EDK2_TOOLCHAIN) \
213 -p OvmfPkg/RiscVVirt/RiscVVirtQemu.dsc \
214 $(RISCV64_FLAGS) -b $(BUILD_TYPE)
215 truncate -s 32M $(RISCV64_BUILD_DIR)/FV/RISCV_VIRT_CODE.fd
216 truncate -s 32M $(RISCV64_BUILD_DIR)/FV/RISCV_VIRT_VARS.fd
217
33bf0acc 218override_dh_auto_clean:
a65627a8
TL
219 -. ./edksetup.sh; build clean
220 make -C BaseTools clean
221
222# Only embed code that is actually used; requested by the Ubuntu Security Team
223EMBEDDED_SUBMODULES += CryptoPkg/Library/OpensslLib/openssl
224EMBEDDED_SUBMODULES += ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3
225EMBEDDED_SUBMODULES += MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
d7298091 226EMBEDDED_SUBMODULES += MdePkg/Library/MipiSysTLib/mipisyst
a65627a8
TL
227get-orig-source:
228 # Should be executed on a checkout of the upstream master branch,
229 # with the debian/ directory manually copied in.
230 rm -rf edk2.tmp && git clone . edk2.tmp
231 # Embed submodules. Don't recurse - openssl will bring in MBs of
232 # stuff we don't need
233 set -e; cd edk2.tmp; \
234 for submodule in $(EMBEDDED_SUBMODULES); do \
1cc8f0e1 235 git submodule update --depth 1 --init $$submodule; \
a65627a8
TL
236 done
237 rm -rf edk2-$(DEB_VERSION_UPSTREAM) && \
238 mkdir edk2-$(DEB_VERSION_UPSTREAM)
239 cd edk2.tmp && git archive HEAD | \
240 tar xv -C ../edk2-$(DEB_VERSION_UPSTREAM)
241 cd edk2.tmp && git submodule foreach \
242 'git archive HEAD | tar xv -C $$toplevel/../edk2-$(DEB_VERSION_UPSTREAM)/$$sm_path'
243 ln -s ../debian edk2-$(DEB_VERSION_UPSTREAM)
244 # Remove known-binary files
245 cd edk2-$(DEB_VERSION_UPSTREAM) && python3 ./debian/remove-binaries.py
246 # Look for possible unknown binary files
247 cd edk2-$(DEB_VERSION_UPSTREAM) && python3 ./debian/find-binaries.py
248 rm edk2-$(DEB_VERSION_UPSTREAM)/debian
249 tar Jcvf ../edk2_$(DEB_VERSION_UPSTREAM).orig.tar.xz \
250 edk2-$(DEB_VERSION_UPSTREAM)
251 rm -rf edk2.tmp edk2-$(DEB_VERSION_UPSTREAM)
252
8ed64dec 253.PHONY: build-ovmf build-ovmf32 build-qemu-efi build-qemu-efi-aarch64 build-qemu-efi-riscv64