Commit 44be514b21
(package/qemu: refactor target emulator selection)
mistakenly forced to always build at least user or system emulation but
it should be possible to choose only the tools (e.g. for a guest VM
image).
Still, we don't want to configure qemu with neither system nor user
emulation, nor the tools enabled; at least one lust be enabled.
So, change the selection to force the tools to be enabled if neither the
system nor the user emulations are enabled.
Reinstate the the machine selection guard behind a dependency on whether
at lesat system or user emulation is enabled.
Signed-off-by: Carlos Santos <unixmania@gmail.com>
[yann.morin.1998@free.fr:
- ensure at least one of system, user, or tools
- guard the machine selection
]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
351 lines
9.1 KiB
Plaintext
351 lines
9.1 KiB
Plaintext
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_PIXMAN
|
|
select BR2_PACKAGE_ZLIB
|
|
select BR2_PACKAGE_QEMU_TOOLS if !BR2_PACKAGE_QEMU_SYSTEM && !BR2_PACKAGE_QEMU_LINUX_USER
|
|
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.
|
|
|
|
http://qemu.org/
|
|
|
|
if BR2_PACKAGE_QEMU
|
|
|
|
comment "Emulators selection"
|
|
|
|
config BR2_PACKAGE_QEMU_SYSTEM
|
|
bool "Enable systems emulation"
|
|
depends on !BR2_STATIC_LIBS # dtc
|
|
help
|
|
Say 'y' to build system emulators/virtualisers.
|
|
|
|
if BR2_PACKAGE_QEMU_SYSTEM
|
|
|
|
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.
|
|
|
|
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 33-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).
|
|
|
|
endif # BR2_PACKAGE_QEMU
|