Files
xemu/roms/Makefile
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

227 lines
8.2 KiB
Makefile
Raw Normal View History

2012-02-09 10:40:31 +01:00
2019-11-06 13:13:48 +01:00
vgabios_variants := stdvga cirrus vmware qxl isavga virtio bochs-display ramfb ati
2013-09-20 14:35:31 +02:00
vgabios_targets := $(subst -isavga,,$(patsubst %,vgabios-%.bin,$(vgabios_variants)))
2016-06-24 13:53:02 +02:00
pxerom_variants := e1000 e1000e eepro100 ne2k_pci pcnet rtl8139 virtio vmxnet3
pxerom_targets := 8086100e 808610d3 80861209 10500940 10222000 10ec8139 1af41000 15ad07b0
pxe-rom-e1000 efi-rom-e1000 : VID := 8086
pxe-rom-e1000 efi-rom-e1000 : DID := 100e
2016-06-24 13:51:16 +02:00
pxe-rom-e1000e efi-rom-e1000e : VID := 8086
pxe-rom-e1000e efi-rom-e1000e : DID := 10d3
pxe-rom-eepro100 efi-rom-eepro100 : VID := 8086
pxe-rom-eepro100 efi-rom-eepro100 : DID := 1209
pxe-rom-ne2k_pci efi-rom-ne2k_pci : VID := 1050
pxe-rom-ne2k_pci efi-rom-ne2k_pci : DID := 0940
pxe-rom-pcnet efi-rom-pcnet : VID := 1022
pxe-rom-pcnet efi-rom-pcnet : DID := 2000
pxe-rom-rtl8139 efi-rom-rtl8139 : VID := 10ec
pxe-rom-rtl8139 efi-rom-rtl8139 : DID := 8139
pxe-rom-virtio efi-rom-virtio : VID := 1af4
pxe-rom-virtio efi-rom-virtio : DID := 1000
2016-06-24 13:53:02 +02:00
pxe-rom-vmxnet3 efi-rom-vmxnet3 : VID := 15ad
pxe-rom-vmxnet3 efi-rom-vmxnet3 : DID := 07b0
2013-09-20 14:51:10 +02:00
#
# cross compiler auto detection
#
path := $(subst :, ,$(PATH))
system := $(shell uname -s | tr "A-Z" "a-z")
# first find cross binutils in path
find-cross-ld = $(firstword $(wildcard $(patsubst %,%/$(1)-*$(system)*-ld,$(path))))
# then check we have cross gcc too
find-cross-gcc = $(firstword $(wildcard $(patsubst %ld,%gcc,$(call find-cross-ld,$(1)))))
# finally strip off path + toolname so we get the prefix
find-cross-prefix = $(subst gcc,,$(notdir $(call find-cross-gcc,$(1))))
2025-02-19 10:45:53 -08:00
aarch64_cross_prefix := $(call find-cross-prefix,aarch64)
2020-09-10 22:20:53 -07:00
arm_cross_prefix := $(call find-cross-prefix,arm)
2013-09-20 14:51:10 +02:00
powerpc64_cross_prefix := $(call find-cross-prefix,powerpc64)
2014-01-20 00:25:40 +01:00
powerpc_cross_prefix := $(call find-cross-prefix,powerpc)
2013-09-23 11:05:48 +02:00
x86_64_cross_prefix := $(call find-cross-prefix,x86_64)
2019-07-16 11:47:22 -07:00
riscv32_cross_prefix := $(call find-cross-prefix,riscv32)
riscv64_cross_prefix := $(call find-cross-prefix,riscv64)
2013-09-20 14:51:10 +02:00
2024-03-27 11:24:47 +01:00
# tag our firmware builds
FIRMWARE_EXTRAVERSION = -prebuilt.qemu.org
2015-06-17 09:24:55 +02:00
#
# EfiRom utility is shipped with edk2 / tianocore, in BaseTools/
#
# We need that to combine multiple images (legacy bios,
# efi ia32, efi x64) into a single rom binary.
#
EDK2_EFIROM = edk2/BaseTools/Source/C/bin/EfiRom
2012-02-09 10:40:31 +01:00
2024-03-27 11:24:45 +01:00
-include edk2-version
2019-09-20 19:11:59 +02:00
default help:
2012-02-09 10:40:31 +01:00
@echo "nothing is build by default"
@echo "available build targets:"
2019-07-16 11:47:22 -07:00
@echo " bios -- update bios.bin (seabios)"
@echo " vgabios -- update vgabios binaries (seabios)"
@echo " pxerom -- update nic roms (bios only)"
@echo " efirom -- update nic roms (bios+efi)"
@echo " slof -- update slof.bin"
@echo " skiboot -- update skiboot.lid"
@echo " u-boot.e500 -- update u-boot.e500"
@echo " u-boot.sam460 -- update u-boot.sam460"
2020-09-10 22:20:53 -07:00
@echo " npcm7xx_bootrom -- update vbootrom for npcm7xx"
2025-02-19 10:45:53 -08:00
@echo " npcm8xx_bootrom -- update vbootrom for npcm8xx"
2025-07-28 01:19:19 +03:00
@echo " ast27x0_bootrom -- update vbootrom for ast27x0"
2019-07-16 11:47:22 -07:00
@echo " efi -- update UEFI (edk2) platform firmware"
@echo " opensbi32-generic -- update OpenSBI for 32-bit generic machine"
@echo " opensbi64-generic -- update OpenSBI for 64-bit generic machine"
2020-09-15 14:08:49 +02:00
@echo " qboot -- update qboot"
@echo " hppa-firmware -- update 32- and 64-bit hppa firmware"
2019-07-16 11:47:22 -07:00
@echo " clean -- delete the files generated by the previous" \
"build targets"
2012-02-09 10:40:31 +01:00
bios: build-seabios-config-seabios-128k \
build-seabios-config-seabios-256k \
build-seabios-config-seabios-microvm
2013-09-30 11:37:12 +02:00
cp seabios/builds/seabios-128k/bios.bin ../pc-bios/bios.bin
cp seabios/builds/seabios-256k/bios.bin ../pc-bios/bios-256k.bin
cp seabios/builds/seabios-microvm/bios.bin ../pc-bios/bios-microvm.bin
2012-02-09 10:40:31 +01:00
2018-06-20 12:11:42 +02:00
vgabios seavgabios: $(patsubst %,seavgabios-%,$(vgabios_variants))
2012-02-09 10:40:31 +01:00
seavgabios-isavga: build-seabios-config-vga-isavga
cp seabios/builds/vga-isavga/vgabios.bin ../pc-bios/vgabios.bin
seavgabios-%: build-seabios-config-vga-%
cp seabios/builds/vga-$*/vgabios.bin ../pc-bios/vgabios-$*.bin
build-seabios-config-%: config.%
mkdir -p seabios/builds/$*
cp $< seabios/builds/$*/.config
$(MAKE) -C seabios \
2024-03-27 11:24:47 +01:00
EXTRAVERSION=$(FIRMWARE_EXTRAVERSION) \
CROSS_PREFIX=$(x86_64_cross_prefix) \
KCONFIG_CONFIG=$(CURDIR)/seabios/builds/$*/.config \
OUT=$(CURDIR)/seabios/builds/$*/ oldnoconfig
$(MAKE) -C seabios \
2024-03-27 11:24:47 +01:00
EXTRAVERSION=$(FIRMWARE_EXTRAVERSION) \
CROSS_PREFIX=$(x86_64_cross_prefix) \
KCONFIG_CONFIG=$(CURDIR)/seabios/builds/$*/.config \
OUT=$(CURDIR)/seabios/builds/$*/ all
2012-02-09 10:40:31 +01:00
.PHONY: skiboot qboot
2013-09-24 15:46:52 +02:00
pxerom: $(patsubst %,pxe-rom-%,$(pxerom_variants))
2013-09-20 15:26:26 +02:00
pxe-rom-%: build-pxe-roms
cp ipxe/src/bin/$(VID)$(DID).rom ../pc-bios/pxe-$*.rom
efirom: $(patsubst %,efi-rom-%,$(pxerom_variants))
efi-rom-%: build-pxe-roms build-efi-roms edk2-basetools
$(EDK2_EFIROM) -f "0x$(VID)" -i "0x$(DID)" -l 0x02 \
-b ipxe/src/bin/$(VID)$(DID).rom \
-ec ipxe/src/bin-x86_64-efi/$(VID)$(DID).efidrv \
-o ../pc-bios/efi-$*.rom
2013-03-25 09:07:40 +01:00
2015-09-03 14:40:29 +02:00
build-pxe-roms:
$(MAKE) -C ipxe/src CONFIG=qemu \
2013-09-23 11:05:48 +02:00
CROSS_COMPILE=$(x86_64_cross_prefix) \
2013-09-20 15:26:26 +02:00
$(patsubst %,bin/%.rom,$(pxerom_targets))
2015-09-03 14:40:29 +02:00
build-efi-roms: build-pxe-roms
$(MAKE) -C ipxe/src CONFIG=qemu \
2013-09-23 11:05:48 +02:00
CROSS_COMPILE=$(x86_64_cross_prefix) \
2013-09-20 15:26:26 +02:00
$(patsubst %,bin-x86_64-efi/%.efidrv,$(pxerom_targets))
2013-09-20 14:51:10 +02:00
slof:
$(MAKE) -C SLOF CROSS=$(powerpc64_cross_prefix) qemu
2013-09-20 14:51:10 +02:00
cp SLOF/boot_rom.bin ../pc-bios/slof.bin
2014-01-20 00:25:40 +01:00
u-boot.e500:
$(MAKE) -C u-boot O=build-e500 qemu-ppce500_config
2014-01-20 00:25:40 +01:00
$(MAKE) -C u-boot CROSS_COMPILE=$(powerpc_cross_prefix) \
O=build-e500
$(powerpc_cross_prefix)strip u-boot/build-e500/u-boot -o \
2014-01-20 00:25:40 +01:00
../pc-bios/u-boot.e500
2013-09-20 14:51:10 +02:00
u-boot.sam460:
$(MAKE) -C u-boot-sam460ex Sam460ex_config
$(MAKE) -C u-boot-sam460ex CROSS_COMPILE=$(powerpc_cross_prefix)
cp u-boot-sam460ex/u-boot.bin ../pc-bios/u-boot-sam460-20100605.bin
skiboot:
$(MAKE) -C skiboot CROSS=$(powerpc64_cross_prefix)
cp skiboot/skiboot.lid ../pc-bios/skiboot.lid
2024-03-27 11:24:45 +01:00
edk2-version: edk2
if test -e edk2/.git; then \
echo "EDK2_STABLE = $$(cd edk2; git describe --tags --match 'edk2-stable*')" > $@; \
echo "EDK2_DATE = $$(cd edk2; git log -1 --pretty='format:%cd' --date='format:%m/%d/%Y')" >> $@; \
else \
touch $@; \
fi
2024-12-12 09:44:07 +01:00
edk2-basetools: edk2-version
$(PYTHON) edk2-build.py --config edk2-build.config \
--silent --no-logs \
--match none # build only basetools
2024-03-27 11:24:45 +01:00
efi: edk2-version
2023-10-02 12:18:44 +02:00
$(PYTHON) edk2-build.py --config edk2-build.config \
2024-03-27 11:24:47 +01:00
--version-override "$(EDK2_STABLE)$(FIRMWARE_EXTRAVERSION)" \
2024-03-27 11:24:45 +01:00
--release-date "$(EDK2_DATE)" \
--silent --no-logs
2023-03-09 11:21:27 +01:00
rm -f ../pc-bios/edk2-*.fd.bz2
bzip2 --verbose ../pc-bios/edk2-*.fd
opensbi32-generic:
2019-07-16 11:47:22 -07:00
$(MAKE) -C opensbi \
CROSS_COMPILE=$(riscv32_cross_prefix) \
PLATFORM="generic"
cp opensbi/build/platform/generic/firmware/fw_dynamic.bin ../pc-bios/opensbi-riscv32-generic-fw_dynamic.bin
2019-07-16 11:47:22 -07:00
opensbi64-generic:
2019-07-16 11:47:22 -07:00
$(MAKE) -C opensbi \
CROSS_COMPILE=$(riscv64_cross_prefix) \
PLATFORM="generic"
cp opensbi/build/platform/generic/firmware/fw_dynamic.bin ../pc-bios/opensbi-riscv64-generic-fw_dynamic.bin
2019-07-16 11:47:22 -07:00
2020-11-20 16:24:08 +01:00
MESON = meson
NINJA = ninja
2020-09-15 14:08:49 +02:00
qboot:
2020-11-20 16:24:08 +01:00
mkdir -p qboot/build
$(MESON) setup $(if $(wildcard qboot/build/meson-private),--wipe,) qboot qboot/build
$(NINJA) -C qboot/build
cp qboot/build/bios.bin ../pc-bios/qboot.rom
2020-09-10 22:20:53 -07:00
npcm7xx_bootrom:
$(MAKE) -C vbootrom/npcm7xx CROSS_COMPILE=$(arm_cross_prefix)
cp vbootrom/npcm7xx/npcm7xx_bootrom.bin ../pc-bios/npcm7xx_bootrom.bin
2020-09-10 22:20:53 -07:00
2025-02-19 10:45:53 -08:00
npcm8xx_bootrom:
$(MAKE) -C vbootrom/npcm8xx CROSS_COMPILE=$(aarch64_cross_prefix)
cp vbootrom/npcm8xx/npcm8xx_bootrom.bin ../pc-bios/npcm8xx_bootrom.bin
2025-02-19 10:45:53 -08:00
2025-07-28 01:19:19 +03:00
ast27x0_bootrom:
$(MAKE) -C vbootrom/ast27x0 CROSS_COMPILE=$(aarch64_cross_prefix)
cp vbootrom/ast27x0/ast27x0_bootrom.bin ../pc-bios/ast27x0_bootrom.bin
hppa-firmware:
$(MAKE) -C seabios-hppa parisc
cp seabios-hppa/out/hppa-firmware.img ../pc-bios/
cp seabios-hppa/out-64/hppa-firmware64.img ../pc-bios/
2013-09-20 15:34:27 +02:00
clean:
rm -rf seabios/.config seabios/out seabios/builds
$(MAKE) -C ipxe/src veryclean
$(MAKE) -C edk2/BaseTools clean
2024-03-14 12:52:59 +01:00
rm -rf edk2/Conf/{.cache,BuildEnv.sh,build_rule.txt,target.txt,tools_def.txt}
$(MAKE) -C SLOF clean
rm -rf u-boot/build-e500
$(MAKE) -C u-boot-sam460ex distclean
$(MAKE) -C skiboot clean
2023-03-09 11:21:27 +01:00
rm -rf Build
2019-07-16 11:47:22 -07:00
$(MAKE) -C opensbi clean
$(MAKE) -C qboot clean
2020-09-10 22:20:53 -07:00
$(MAKE) -C vbootrom clean
$(MAKE) -C seabios-hppa clean