blob: 91e0de884fabf556cae9d7b83dbb7b025071807f [file] [log] [blame]
config BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET
bool
# Only tested on these architectures
default y if BR2_aarch64
default y if BR2_arm && !BR2_ARM_CPU_ARMV4 && !BR2_ARM_CPU_ARMV5
default y if BR2_i386
default y if BR2_mips
default y if BR2_mipsel
default y if BR2_powerpc64
default y if BR2_powerpc64le
default y if BR2_riscv
default y if BR2_x86_64
comment "QEMU requires a toolchain with wchar, threads, gcc >= 8"
depends on BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET
depends on BR2_USE_MMU
depends on !(BR2_TOOLCHAIN_HAS_THREADS && BR2_USE_WCHAR) || \
!BR2_TOOLCHAIN_GCC_AT_LEAST_8
menuconfig BR2_PACKAGE_QEMU
bool "QEMU"
depends on BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8
depends on BR2_TOOLCHAIN_HAS_THREADS
depends on BR2_USE_WCHAR # gettext
depends on BR2_USE_MMU # fork()
select BR2_PACKAGE_LIBGLIB2
select BR2_PACKAGE_ZLIB
help
QEMU is a generic and open source machine emulator and
virtualizer.
When used as a machine emulator, QEMU can run OSes and
programs made for one machine (e.g. an ARM board) on a
different machine (e.g. your own PC). By using dynamic
translation, it achieves very good performance.
When used as a virtualizer, QEMU achieves near native
performances by executing the guest code directly on the
host CPU. QEMU supports virtualization when executing under
the Xen hypervisor or using the KVM kernel module in
Linux. When using KVM, QEMU can virtualize x86, server and
embedded PowerPC, and S390 guests.
https://www.qemu.org/
if BR2_PACKAGE_QEMU
comment "Emulators selection"
config BR2_PACKAGE_QEMU_SYSTEM
bool "Enable systems emulation"
depends on !BR2_STATIC_LIBS # dtc
select BR2_PACKAGE_PIXMAN
select BR2_PACKAGE_QEMU_FDT if !BR2_PACKAGE_QEMU_CHOOSE_TARGETS
help
Say 'y' to build system emulators/virtualisers.
if BR2_PACKAGE_QEMU_SYSTEM
config BR2_PACKAGE_QEMU_BLOBS
bool "Install binary blobs"
default y
help
Say 'y' here (the default) to install binary blobs (such as
BIOS or firmwares for the different machines simulated by
QEMU). Say 'n' to not install those blobs.
Note: Some machines may be unbootable without those blobs.
If unsure, say 'y'.
config BR2_PACKAGE_QEMU_SLIRP
bool "Enable user mode networking (SLIRP)"
select BR2_PACKAGE_SLIRP
help
Enable user mode network stack, which is the default
networking backend. It requires no administrator privileges
and generally is the easiest to use but has some
limitations:
- there is a lot of overhead so the performance is poor;
- in general ICMP does not work (can't ping from/to a guest)
- on Linux hosts, ping does work from within the guest, but it
needs initial setup by root (once per host)
- the guest is not directly accessible from the host or the
external network
User Networking is implemented using "slirp", which provides a
full TCP/IP stack within QEMU and uses that stack to implement
a virtual NAT'd network.
Notice that this option does not disable other networking
modes.
config BR2_PACKAGE_QEMU_SDL
bool "Enable SDL frontend"
select BR2_PACKAGE_SDL2
help
Say 'y' to enable the SDL frontend, that is, a graphical
window presenting the VM's display.
config BR2_PACKAGE_QEMU_FDT
bool "Enable FDT"
select BR2_PACKAGE_DTC
help
Say 'y' here to have QEMU capable of constructing Device
Trees, and passing them to the VMs.
config BR2_PACKAGE_QEMU_TRACING
bool "Enable tracing"
help
Say 'y' to enable the "log" tracing infrastructure in QEMU,
used for debugging, profiling, and observing execution. For
detailed documentation, see
https://www.qemu.org/docs/master/devel/tracing.html
endif # BR2_PACKAGE_QEMU_SYSTEM
comment "systems emulation needs a toolchain w/ dynamic library"
depends on BR2_STATIC_LIBS
config BR2_PACKAGE_QEMU_LINUX_USER
bool "Enable Linux user-land emulation"
# Incompatible "struct sigevent" definition on musl
depends on !BR2_TOOLCHAIN_USES_MUSL
help
Say 'y' to build Linux user-land emulators.
# Note: bsd-user can not be build on Linux
comment "Linux user-land emulation needs a glibc or uClibc toolchain"
depends on BR2_TOOLCHAIN_USES_MUSL
config BR2_PACKAGE_QEMU_CHOOSE_TARGETS
bool "Select individual emulator targets"
depends on BR2_PACKAGE_QEMU_SYSTEM || BR2_PACKAGE_QEMU_LINUX_USER
help
By default, all targets (system and/or user, subject to the
corresponding options, above) are built. If you only need a
subset of the emulated targets, say 'y' here and enable at
least one target, below.
if BR2_PACKAGE_QEMU_CHOOSE_TARGETS
config BR2_PACKAGE_QEMU_TARGET_AARCH64
bool "aarch64"
select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM
help
ARM 64-bit architecture.
config BR2_PACKAGE_QEMU_TARGET_AARCH64_BE
bool "aarch64_be (linux-user, only)"
depends on BR2_PACKAGE_QEMU_LINUX_USER
help
ARM 64-bit architecture, big-endian.
config BR2_PACKAGE_QEMU_TARGET_ALPHA
bool "alpha"
help
DEC Alpha 64-bit RISC architecture.
config BR2_PACKAGE_QEMU_TARGET_ARM
bool "arm"
select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM
help
ARM EABI architecture, little-endian.
config BR2_PACKAGE_QEMU_TARGET_ARMEB
bool "armeb (linux-user, only)"
depends on BR2_PACKAGE_QEMU_LINUX_USER
help
ARM EABI architecture, big-endian.
config BR2_PACKAGE_QEMU_TARGET_AVR
bool "avr (system, only)"
depends on BR2_PACKAGE_QEMU_SYSTEM
help
AVR 8-bit microcontroller architecture.
config BR2_PACKAGE_QEMU_TARGET_CRIS
bool "cris"
help
ETRAX CRIS microcontroller architecture.
config BR2_PACKAGE_QEMU_TARGET_HEXAGON
bool "hexagon (linux-user, only)"
depends on BR2_PACKAGE_QEMU_LINUX_USER
help
Qualcomm's Hexagon VLSI DSP architecture.
config BR2_PACKAGE_QEMU_TARGET_HPPA
bool "hppa"
help
HP PA-RISC architecture.
config BR2_PACKAGE_QEMU_TARGET_I386
bool "i386"
select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM
help
Intel i386 32-bit architecture.
config BR2_PACKAGE_QEMU_TARGET_LOONGARCH64
bool "loongarch64"
select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM
help
Loongson 64-bit RISC architecture.
config BR2_PACKAGE_QEMU_TARGET_M68K
bool "m68k"
help
Motorola 68000 architecture.
config BR2_PACKAGE_QEMU_TARGET_MICROBLAZE
bool "microblaze"
select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM
help
Xilinix MicroBlaze soft processor.
config BR2_PACKAGE_QEMU_TARGET_MICROBLAZEEL
bool "microblazeel"
select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM
help
Xilinix MicroBlaze EL soft processor.
config BR2_PACKAGE_QEMU_TARGET_MIPS
bool "mips"
help
MIPS 32-bit architecture.
config BR2_PACKAGE_QEMU_TARGET_MIPSEL
bool "mipsel"
help
MIPS 32-bit architecture, little-endian.
config BR2_PACKAGE_QEMU_TARGET_MIPS64
bool "mips64"
help
MIPS 64-bit architecture.
config BR2_PACKAGE_QEMU_TARGET_MIPS64EL
bool "mips64el"
select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM
help
MIPS 64-bit architecture, little-endian.
config BR2_PACKAGE_QEMU_TARGET_MIPSN32
bool "mipsn32 (linux-user, only)"
depends on BR2_PACKAGE_QEMU_LINUX_USER
help
MIPS N32 architecture.
config BR2_PACKAGE_QEMU_TARGET_MIPSN32EL
bool "mipsn32el (linux-user, only)"
depends on BR2_PACKAGE_QEMU_LINUX_USER
help
MIPS N32 architecture, little-endian.
config BR2_PACKAGE_QEMU_TARGET_NIOS2
bool "nios2"
help
Nios II architecture.
config BR2_PACKAGE_QEMU_TARGET_OR1K
bool "or1k"
select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM
help
OpenRISC 1000 architecture.
config BR2_PACKAGE_QEMU_TARGET_PPC
bool "ppc"
select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM
help
PoewerPC 32-bit architecture.
config BR2_PACKAGE_QEMU_TARGET_PPC64
bool "ppc64"
select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM
help
PoewerPC 64-bit architecture.
config BR2_PACKAGE_QEMU_TARGET_PPC64LE
bool "ppc64le (linux-user, only)"
depends on BR2_PACKAGE_QEMU_LINUX_USER
help
PoewerPC 64-bit architecture, little-endian.
config BR2_PACKAGE_QEMU_TARGET_RISCV32
bool "riscv32"
select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM
help
RISC-V 32-bit architecture.
config BR2_PACKAGE_QEMU_TARGET_RISCV64
bool "riscv64"
select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM
help
RISC-V 64-bit architecture.
config BR2_PACKAGE_QEMU_TARGET_RX
bool "rx (system-only)"
depends on BR2_PACKAGE_QEMU_SYSTEM
select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM
help
Renesas Electronics RX 32-bit architecture.
config BR2_PACKAGE_QEMU_TARGET_S390X
bool "s390x"
help
IBM z/Architecture 64-bit mainframe (s390x)
config BR2_PACKAGE_QEMU_TARGET_SH4
bool "sh4"
help
Super-H 32-bit RISC architecture.
config BR2_PACKAGE_QEMU_TARGET_SH4EB
bool "sh4eb"
help
Super-H EB 32-bit RISC architecture.
config BR2_PACKAGE_QEMU_TARGET_SPARC
bool "sparc"
help
SPARC 32-bit RISC architecture.
config BR2_PACKAGE_QEMU_TARGET_SPARC32PLUS
bool "sparc32plus (linux-user, only)"
depends on BR2_PACKAGE_QEMU_LINUX_USER
help
SPARC 32-bit RISC architecture (Sun's v8plus).
config BR2_PACKAGE_QEMU_TARGET_SPARC64
bool "sparc64"
help
SPARC 64-bit RISC architecture.
config BR2_PACKAGE_QEMU_TARGET_TRICORE
bool "tricore (system, only)"
depends on BR2_PACKAGE_QEMU_SYSTEM
help
Infineon TriCore 32-bit RISC architecture.
config BR2_PACKAGE_QEMU_TARGET_X86_64
bool "x86_64"
select BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM
help
Intel x86 64-bit architecture.
config BR2_PACKAGE_QEMU_TARGET_XTENSA
bool "xtensa"
help
Xtensa 32-bit RISC architecture.
config BR2_PACKAGE_QEMU_TARGET_XTENSAEB
bool "xtensaeb"
help
Xtensa 32-bit RISC architecture, big-endian.
endif # BR2_PACKAGE_QEMU_CHOOSE_TARGETS
comment "Tools selection"
config BR2_PACKAGE_QEMU_TOOLS
bool "Enable tools"
help
Say 'y' here to include tools packaged with QEMU
(e.g. qemu-img).
config BR2_PACKAGE_QEMU_GUEST_AGENT
bool "Enable guest agent"
help
Say 'y' here to include an agent to run on guests, which
communicates with the host over a virtio-serial channel
named "org.qemu.guest_agent.0".
endif # BR2_PACKAGE_QEMU