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

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.

endif
