summaryrefslogtreecommitdiff
path: root/util/qemu/Makefile.mk
blob: 42441df937a622bde2e8a11e8839261367f4e1fc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# SPDX-License-Identifier: BSD-3-Clause

# This automatically adds a `qemu` make target if a compatible
# configuration is selected. There are some notable variables
# that can be set or adapted in `Makefile.mk` files, the make
# command line or the environment:
#
# Primarily for `Makefile.mk` use:
# QEMU-y		the QEMU executable
# QEMU_CFG-y		a QEMU config that sets the available default devices,
#			used to run more comprehensive tests by default,
#			e.g. many more PCI devices
#
# For general use:
# QEMU_ARGS		additional command line arguments (default: -serial stdio)
# QEMU_EXTRA_CFGS	additional config files that can add devices
#
# QEMU_CFG_ARGS		gathers config file related arguments,
#			can be used to override a default config (QEMU_CFG-y)
#
# Examples:
#
#   $ # Run coreboot's default config with additional command line args
#   $ make qemu QEMU_ARGS="-cdrom site-local/grml64-small_2018.12.iso"
#
#   $ # Force QEMU's built-in config
#   $ make qemu QEMU_CFG_ARGS=

QEMU-$(CONFIG_BOARD_EMULATION_QEMU_AARCH64)	?= qemu-system-aarch64 \
	-M virt,secure=on,virtualization=on -cpu cortex-a53 -m 1G

QEMU-$(CONFIG_BOARD_EMULATION_QEMU_RISCV_RV64)	?= qemu-system-riscv64 -M virt

QEMU-$(CONFIG_BOARD_EMULATION_QEMU_RISCV_RV32)	?= qemu-system-riscv32 -M virt

QEMU-$(CONFIG_BOARD_EMULATION_QEMU_X86_I440FX)	?= qemu-system-x86_64 -M pc

QEMU-$(CONFIG_BOARD_EMULATION_QEMU_X86_Q35)	?= qemu-system-x86_64 -M q35
QEMU_CFG-$(CONFIG_BOARD_EMULATION_QEMU_X86_Q35)	?= util/qemu/q35-base.cfg

ifneq ($(QEMU-y),)

QEMU_ARGS ?= -serial stdio
QEMU_EXTRA_CFGS ?=

QEMU_CFG_ARGS ?= \
	$(if $(QEMU_CFG-y),-nodefaults) \
	$(addprefix -readconfig ,$(QEMU_CFG-y) $(QEMU_EXTRA_CFGS))

qemu: $(obj)/coreboot.rom
	$(QEMU-y) $(QEMU_CFG_ARGS) $(QEMU_ARGS) -bios $<

.PHONY: qemu

endif