config BR2_PACKAGE_HOST_QEMU_ARCH_SUPPORTS
	bool
	default y if BR2_arm
	default y if BR2_armeb
	default y if BR2_aarch64
	default y if BR2_i386
	default y if BR2_m68k
	default y if BR2_microblazeel
	default y if BR2_microblazebe
	default y if BR2_mips
	default y if BR2_mipsel
	default y if BR2_nios2
	default y if BR2_or1k
	default y if BR2_powerpc
	default y if BR2_powerpc64
	default y if BR2_powerpc64le
	default y if BR2_riscv
	default y if BR2_s390x
	default y if BR2_sh
	default y if BR2_sparc
	default y if BR2_sparc64
	default y if BR2_xtensa
	default y if BR2_x86_64
	depends on !BR2_x86_steamroller && !BR2_x86_core_avx2
	depends on !BR2_powerpc_620 && !BR2_powerpc_630 && !BR2_powerpc_970

config BR2_PACKAGE_HOST_QEMU_SYSTEM_ARCH_SUPPORTS
	bool
	default y if BR2_PACKAGE_HOST_QEMU_ARCH_SUPPORTS
	default y if BR2_mips64
	default y if BR2_mips64el

config BR2_PACKAGE_HOST_QEMU_USER_ARCH_SUPPORTS
	bool
	default y if BR2_PACKAGE_HOST_QEMU_ARCH_SUPPORTS

config BR2_PACKAGE_HOST_QEMU
	bool "host qemu"
	depends on BR2_PACKAGE_HOST_QEMU_SYSTEM_ARCH_SUPPORTS || BR2_PACKAGE_HOST_QEMU_USER_ARCH_SUPPORTS
	select BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE \
		if !BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE && BR2_PACKAGE_HOST_QEMU_USER_ARCH_SUPPORTS
	select BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE \
		if !BR2_PACKAGE_HOST_QEMU_USER_ARCH_SUPPORTS
	help
	  QEMU is a generic and open source machine emulator and
	  virtualizer.

	  This option builds an emulator for your selected architecture.

	  http://www.qemu.org

if BR2_PACKAGE_HOST_QEMU

comment "Emulators selection"

config BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE
	bool "Enable system emulation"
	depends on BR2_PACKAGE_HOST_QEMU_SYSTEM_ARCH_SUPPORTS
	help
	  Enables the build of the system emulator, which allows to
	  boot an entire system in Qemu.

config BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE
	bool "Enable Linux user-land emulation"
	depends on BR2_PACKAGE_HOST_QEMU_USER_ARCH_SUPPORTS
	help
	  Enables the build of the user-land emulator, which allows to
	  run user-space applications.

	  Note that system calls made by the emulated user-land are
	  serviced by the running host kernel. Therefore, if the
	  kernel headers used by your target are more recent than
	  the running host kernel, you may run into invalid system
	  calls, which may yield surprising effects.

config BR2_PACKAGE_HOST_QEMU_VDE2
	bool "VDE2 support"
	help
	  Enables VDE2 support. VDE2 stands for Virtual Distributed
	  Ethernet and can be used to create virtual switches to
	  "plug" both physical and virtual machines in them.

config BR2_PACKAGE_HOST_QEMU_VIRTFS
	bool "Virtual filesystem support"
	help
	  Enables support for virtual filesystem in Qemu allowing
	  shared filesystem between Qemu and its emulated target.

config BR2_PACKAGE_HOST_QEMU_USB
	bool "USB passthrough support"
	help
	  Enables USB passthrough support from guest to host.

endif
