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