Laszlo Ersek | 536d217 | 2019-03-07 14:57:17 +0100 | [diff] [blame] | 1 | # Makefile for building firmware binaries and variable store templates for a |
| 2 | # number of virtual platforms in edk2. |
| 3 | # |
| 4 | # Copyright (C) 2019 Red Hat, Inc. |
| 5 | # |
| 6 | # This program and the accompanying materials are licensed and made available |
| 7 | # under the terms and conditions of the BSD License that accompanies this |
| 8 | # distribution. The full text of the license may be found at |
| 9 | # <http://opensource.org/licenses/bsd-license.php>. |
| 10 | # |
| 11 | # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT |
| 12 | # WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. |
| 13 | |
| 14 | SHELL = /bin/bash |
| 15 | |
Gerd Hoffmann | ca26041 | 2022-03-07 12:35:06 +0100 | [diff] [blame] | 16 | target = RELEASE |
Laszlo Ersek | 536d217 | 2019-03-07 14:57:17 +0100 | [diff] [blame] | 17 | toolchain = $(shell source ./edk2-funcs.sh && qemu_edk2_get_toolchain $(1)) |
| 18 | |
| 19 | licenses := \ |
| 20 | edk2/License.txt \ |
Laszlo Ersek | 9153b9d | 2019-06-06 13:01:43 +0200 | [diff] [blame] | 21 | edk2/License-History.txt \ |
Laszlo Ersek | 536d217 | 2019-03-07 14:57:17 +0100 | [diff] [blame] | 22 | edk2/OvmfPkg/License.txt \ |
Laszlo Ersek | 9153b9d | 2019-06-06 13:01:43 +0200 | [diff] [blame] | 23 | edk2/ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3/COPYING.txt \ |
Laszlo Ersek | 536d217 | 2019-03-07 14:57:17 +0100 | [diff] [blame] | 24 | edk2/CryptoPkg/Library/OpensslLib/openssl/LICENSE |
| 25 | |
| 26 | # The "edk2-arm-vars.fd" varstore template is suitable for aarch64 as well. |
| 27 | # Similarly, the "edk2-i386-vars.fd" varstore template is suitable for x86_64 |
| 28 | # as well, independently of "secure" too. |
| 29 | flashdevs := \ |
| 30 | aarch64-code \ |
| 31 | arm-code \ |
| 32 | i386-code \ |
| 33 | i386-secure-code \ |
| 34 | x86_64-code \ |
| 35 | x86_64-secure-code \ |
Gerd Hoffmann | 3ce48e4 | 2022-03-07 16:11:29 +0100 | [diff] [blame] | 36 | x86_64-microvm \ |
Laszlo Ersek | 536d217 | 2019-03-07 14:57:17 +0100 | [diff] [blame] | 37 | \ |
| 38 | arm-vars \ |
| 39 | i386-vars |
| 40 | |
| 41 | all: $(foreach flashdev,$(flashdevs),../pc-bios/edk2-$(flashdev).fd.bz2) \ |
| 42 | ../pc-bios/edk2-licenses.txt |
| 43 | |
| 44 | ../pc-bios/edk2-%.fd.bz2: ../pc-bios/edk2-%.fd |
| 45 | bzip2 -9 -c $< > $@ |
| 46 | |
| 47 | # When the build completes, we need not keep the uncompressed flash device |
| 48 | # files. |
| 49 | .INTERMEDIATE: $(foreach flashdev,$(flashdevs),../pc-bios/edk2-$(flashdev).fd) |
| 50 | |
Michael Roth | f3e330e | 2019-09-12 18:12:02 -0500 | [diff] [blame] | 51 | # Fetch edk2 submodule's submodules. If it is not in a git tree, assume |
| 52 | # we're building from a tarball and that they've already been fetched by |
| 53 | # make-release/tarball scripts. |
Laszlo Ersek | 536d217 | 2019-03-07 14:57:17 +0100 | [diff] [blame] | 54 | submodules: |
Gerd Hoffmann | 4911df8 | 2022-03-07 12:51:09 +0100 | [diff] [blame] | 55 | if test -e edk2/.git; then \ |
Philippe Mathieu-Daudé | bd0da3a | 2021-10-18 12:58:16 +0200 | [diff] [blame] | 56 | cd edk2 && git submodule update --init --force -- \ |
| 57 | ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3 \ |
| 58 | BaseTools/Source/C/BrotliCompress/brotli \ |
| 59 | CryptoPkg/Library/OpensslLib/openssl \ |
| 60 | MdeModulePkg/Library/BrotliCustomDecompressLib/brotli \ |
| 61 | ; \ |
Michael Roth | f3e330e | 2019-09-12 18:12:02 -0500 | [diff] [blame] | 62 | fi |
Laszlo Ersek | 536d217 | 2019-03-07 14:57:17 +0100 | [diff] [blame] | 63 | |
| 64 | # See notes on the ".NOTPARALLEL" target and the "+" indicator in |
| 65 | # "tests/uefi-test-tools/Makefile". |
| 66 | .NOTPARALLEL: |
| 67 | |
| 68 | ../pc-bios/edk2-aarch64-code.fd: submodules |
| 69 | +./edk2-build.sh \ |
| 70 | aarch64 \ |
| 71 | --arch=AARCH64 \ |
| 72 | --platform=ArmVirtPkg/ArmVirtQemu.dsc \ |
| 73 | -D NETWORK_IP6_ENABLE \ |
Laszlo Ersek | 374680a | 2020-09-08 00:34:12 +0200 | [diff] [blame] | 74 | -D NETWORK_HTTP_BOOT_ENABLE \ |
| 75 | -D NETWORK_TLS_ENABLE \ |
| 76 | -D TPM2_ENABLE \ |
| 77 | -D TPM2_CONFIG_ENABLE |
Gerd Hoffmann | ca26041 | 2022-03-07 12:35:06 +0100 | [diff] [blame] | 78 | cp edk2/Build/ArmVirtQemu-AARCH64/$(target)_$(call toolchain,aarch64)/FV/QEMU_EFI.fd \ |
Laszlo Ersek | 536d217 | 2019-03-07 14:57:17 +0100 | [diff] [blame] | 79 | $@ |
| 80 | truncate --size=64M $@ |
| 81 | |
| 82 | ../pc-bios/edk2-arm-code.fd: submodules |
| 83 | +./edk2-build.sh \ |
| 84 | arm \ |
| 85 | --arch=ARM \ |
| 86 | --platform=ArmVirtPkg/ArmVirtQemu.dsc \ |
| 87 | -D NETWORK_IP6_ENABLE \ |
Laszlo Ersek | 374680a | 2020-09-08 00:34:12 +0200 | [diff] [blame] | 88 | -D NETWORK_HTTP_BOOT_ENABLE \ |
| 89 | -D NETWORK_TLS_ENABLE \ |
| 90 | -D TPM2_ENABLE \ |
| 91 | -D TPM2_CONFIG_ENABLE |
Gerd Hoffmann | ca26041 | 2022-03-07 12:35:06 +0100 | [diff] [blame] | 92 | cp edk2/Build/ArmVirtQemu-ARM/$(target)_$(call toolchain,arm)/FV/QEMU_EFI.fd \ |
Laszlo Ersek | 536d217 | 2019-03-07 14:57:17 +0100 | [diff] [blame] | 93 | $@ |
| 94 | truncate --size=64M $@ |
| 95 | |
| 96 | ../pc-bios/edk2-i386-code.fd: submodules |
| 97 | +./edk2-build.sh \ |
| 98 | i386 \ |
| 99 | --arch=IA32 \ |
| 100 | --platform=OvmfPkg/OvmfPkgIa32.dsc \ |
| 101 | -D NETWORK_IP6_ENABLE \ |
Laszlo Ersek | b1625c6 | 2019-06-06 11:59:09 +0200 | [diff] [blame] | 102 | -D NETWORK_HTTP_BOOT_ENABLE \ |
Laszlo Ersek | b1625c6 | 2019-06-06 11:59:09 +0200 | [diff] [blame] | 103 | -D NETWORK_TLS_ENABLE \ |
Laszlo Ersek | 504fffb | 2020-09-07 22:03:36 +0200 | [diff] [blame] | 104 | -D TPM_ENABLE \ |
Laszlo Ersek | e105de7 | 2020-09-08 00:24:31 +0200 | [diff] [blame] | 105 | -D TPM_CONFIG_ENABLE |
Gerd Hoffmann | ca26041 | 2022-03-07 12:35:06 +0100 | [diff] [blame] | 106 | cp edk2/Build/OvmfIa32/$(target)_$(call toolchain,i386)/FV/OVMF_CODE.fd $@ |
Laszlo Ersek | 536d217 | 2019-03-07 14:57:17 +0100 | [diff] [blame] | 107 | |
| 108 | ../pc-bios/edk2-i386-secure-code.fd: submodules |
| 109 | +./edk2-build.sh \ |
| 110 | i386 \ |
| 111 | --arch=IA32 \ |
| 112 | --platform=OvmfPkg/OvmfPkgIa32.dsc \ |
| 113 | -D NETWORK_IP6_ENABLE \ |
Laszlo Ersek | b1625c6 | 2019-06-06 11:59:09 +0200 | [diff] [blame] | 114 | -D NETWORK_HTTP_BOOT_ENABLE \ |
Laszlo Ersek | b1625c6 | 2019-06-06 11:59:09 +0200 | [diff] [blame] | 115 | -D NETWORK_TLS_ENABLE \ |
Laszlo Ersek | 504fffb | 2020-09-07 22:03:36 +0200 | [diff] [blame] | 116 | -D TPM_ENABLE \ |
| 117 | -D TPM_CONFIG_ENABLE \ |
Laszlo Ersek | 536d217 | 2019-03-07 14:57:17 +0100 | [diff] [blame] | 118 | -D SECURE_BOOT_ENABLE \ |
| 119 | -D SMM_REQUIRE |
Gerd Hoffmann | ca26041 | 2022-03-07 12:35:06 +0100 | [diff] [blame] | 120 | cp edk2/Build/OvmfIa32/$(target)_$(call toolchain,i386)/FV/OVMF_CODE.fd $@ |
Laszlo Ersek | 536d217 | 2019-03-07 14:57:17 +0100 | [diff] [blame] | 121 | |
| 122 | ../pc-bios/edk2-x86_64-code.fd: submodules |
| 123 | +./edk2-build.sh \ |
| 124 | x86_64 \ |
| 125 | --arch=X64 \ |
| 126 | --platform=OvmfPkg/OvmfPkgX64.dsc \ |
| 127 | -D NETWORK_IP6_ENABLE \ |
Laszlo Ersek | b1625c6 | 2019-06-06 11:59:09 +0200 | [diff] [blame] | 128 | -D NETWORK_HTTP_BOOT_ENABLE \ |
Laszlo Ersek | b1625c6 | 2019-06-06 11:59:09 +0200 | [diff] [blame] | 129 | -D NETWORK_TLS_ENABLE \ |
Laszlo Ersek | 504fffb | 2020-09-07 22:03:36 +0200 | [diff] [blame] | 130 | -D TPM_ENABLE \ |
Laszlo Ersek | e105de7 | 2020-09-08 00:24:31 +0200 | [diff] [blame] | 131 | -D TPM_CONFIG_ENABLE |
Gerd Hoffmann | ca26041 | 2022-03-07 12:35:06 +0100 | [diff] [blame] | 132 | cp edk2/Build/OvmfX64/$(target)_$(call toolchain,x86_64)/FV/OVMF_CODE.fd $@ |
Laszlo Ersek | 536d217 | 2019-03-07 14:57:17 +0100 | [diff] [blame] | 133 | |
| 134 | ../pc-bios/edk2-x86_64-secure-code.fd: submodules |
| 135 | +./edk2-build.sh \ |
| 136 | x86_64 \ |
| 137 | --arch=IA32 \ |
| 138 | --arch=X64 \ |
| 139 | --platform=OvmfPkg/OvmfPkgIa32X64.dsc \ |
| 140 | -D NETWORK_IP6_ENABLE \ |
Laszlo Ersek | b1625c6 | 2019-06-06 11:59:09 +0200 | [diff] [blame] | 141 | -D NETWORK_HTTP_BOOT_ENABLE \ |
Laszlo Ersek | b1625c6 | 2019-06-06 11:59:09 +0200 | [diff] [blame] | 142 | -D NETWORK_TLS_ENABLE \ |
Laszlo Ersek | 504fffb | 2020-09-07 22:03:36 +0200 | [diff] [blame] | 143 | -D TPM_ENABLE \ |
| 144 | -D TPM_CONFIG_ENABLE \ |
Laszlo Ersek | 536d217 | 2019-03-07 14:57:17 +0100 | [diff] [blame] | 145 | -D SECURE_BOOT_ENABLE \ |
| 146 | -D SMM_REQUIRE |
Gerd Hoffmann | ca26041 | 2022-03-07 12:35:06 +0100 | [diff] [blame] | 147 | cp edk2/Build/Ovmf3264/$(target)_$(call toolchain,x86_64)/FV/OVMF_CODE.fd $@ |
Laszlo Ersek | 536d217 | 2019-03-07 14:57:17 +0100 | [diff] [blame] | 148 | |
Gerd Hoffmann | 3ce48e4 | 2022-03-07 16:11:29 +0100 | [diff] [blame] | 149 | ../pc-bios/edk2-x86_64-microvm.fd: submodules |
| 150 | +./edk2-build.sh \ |
| 151 | x86_64 \ |
| 152 | --arch=X64 \ |
| 153 | --platform=OvmfPkg/Microvm/MicrovmX64.dsc \ |
| 154 | -D NETWORK_IP6_ENABLE \ |
| 155 | -D NETWORK_HTTP_BOOT_ENABLE \ |
| 156 | -D NETWORK_TLS_ENABLE |
| 157 | cp edk2/Build/MicrovmX64/$(target)_$(call toolchain,x86_64)/FV/MICROVM.fd $@ |
| 158 | |
Laszlo Ersek | 536d217 | 2019-03-07 14:57:17 +0100 | [diff] [blame] | 159 | ../pc-bios/edk2-arm-vars.fd: ../pc-bios/edk2-arm-code.fd |
Gerd Hoffmann | ca26041 | 2022-03-07 12:35:06 +0100 | [diff] [blame] | 160 | cp edk2/Build/ArmVirtQemu-ARM/$(target)_$(call toolchain,arm)/FV/QEMU_VARS.fd \ |
Laszlo Ersek | 536d217 | 2019-03-07 14:57:17 +0100 | [diff] [blame] | 161 | $@ |
| 162 | truncate --size=64M $@ |
| 163 | |
| 164 | ../pc-bios/edk2-i386-vars.fd: ../pc-bios/edk2-i386-code.fd |
Gerd Hoffmann | ca26041 | 2022-03-07 12:35:06 +0100 | [diff] [blame] | 165 | cp edk2/Build/OvmfIa32/$(target)_$(call toolchain,i386)/FV/OVMF_VARS.fd $@ |
Laszlo Ersek | 536d217 | 2019-03-07 14:57:17 +0100 | [diff] [blame] | 166 | |
| 167 | # The license file accumulates several individual licenses from under edk2, |
| 168 | # prefixing each individual license with a header (generated by "tail") that |
| 169 | # states its pathname. |
| 170 | ../pc-bios/edk2-licenses.txt: submodules |
| 171 | tail -n $(shell cat $(licenses) | wc -l) $(licenses) > $@ |
| 172 | dos2unix $@ |
| 173 | |
| 174 | clean: |
| 175 | rm -rf edk2/Build |
| 176 | cd edk2/Conf && \ |
| 177 | rm -rf .cache BuildEnv.sh build_rule.txt target.txt \ |
| 178 | tools_def.txt |