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_csky
	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_powerpc
	default y if BR2_powerpc64
	default y if BR2_powerpc64le
	default y if BR2_riscv
	default y if BR2_sh
	default y if BR2_sparc
	default y if BR2_sparc64
	default y if BR2_x86_64
	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.

endif
