1# SPDX-License-Identifier: BSD-3-Clause 2 3# This automatically adds a `qemu` make target if a compatible 4# configuration is selected. There are some notable variables 5# that can be set or adapted in `Makefile.mk` files, the make 6# command line or the environment: 7# 8# Primarily for `Makefile.mk` use: 9# QEMU-y the QEMU executable 10# QEMU_CFG-y a QEMU config that sets the available default devices, 11# used to run more comprehensive tests by default, 12# e.g. many more PCI devices 13# 14# For general use: 15# QEMU_ARGS additional command line arguments (default: -serial stdio) 16# QEMU_EXTRA_CFGS additional config files that can add devices 17# 18# QEMU_CFG_ARGS gathers config file related arguments, 19# can be used to override a default config (QEMU_CFG-y) 20# 21# Examples: 22# 23# $ # Run coreboot's default config with additional command line args 24# $ make qemu QEMU_ARGS="-cdrom site-local/grml64-small_2018.12.iso" 25# 26# $ # Force QEMU's built-in config 27# $ make qemu QEMU_CFG_ARGS= 28 29QEMU-$(CONFIG_BOARD_EMULATION_QEMU_AARCH64) ?= qemu-system-aarch64 \ 30 -M virt,secure=on,virtualization=on -cpu cortex-a53 -m 1G 31 32QEMU-$(CONFIG_BOARD_EMULATION_QEMU_RISCV_RV64) ?= qemu-system-riscv64 -M virt -m 1G -drive \ 33 if=pflash,file=build/coreboot.rom,format=raw 34 35QEMU-$(CONFIG_BOARD_EMULATION_QEMU_RISCV_RV32) ?= qemu-system-riscv32 -M virt -m 1G -drive \ 36 if=pflash,file=build/coreboot.rom,format=raw 37 38QEMU-$(CONFIG_BOARD_EMULATION_QEMU_X86_I440FX) ?= qemu-system-x86_64 -M pc 39 40QEMU-$(CONFIG_BOARD_EMULATION_QEMU_X86_Q35) ?= qemu-system-x86_64 -M q35 41QEMU_CFG-$(CONFIG_BOARD_EMULATION_QEMU_X86_Q35) ?= util/qemu/q35-base.cfg 42 43ifneq ($(QEMU-y),) 44 45QEMU_ARGS ?= -serial stdio 46QEMU_EXTRA_CFGS ?= 47 48QEMU_CFG_ARGS ?= \ 49 $(if $(QEMU_CFG-y),-nodefaults) \ 50 $(addprefix -readconfig ,$(QEMU_CFG-y) $(QEMU_EXTRA_CFGS)) 51 52qemu: $(obj)/coreboot.rom 53 $(QEMU-y) $(QEMU_CFG_ARGS) $(QEMU_ARGS) -bios $< 54 55.PHONY: qemu 56 57endif 58