summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--package/qemu/Config.in.host25
-rw-r--r--package/qemu/qemu.mk25
2 files changed, 41 insertions, 9 deletions
diff --git a/package/qemu/Config.in.host b/package/qemu/Config.in.host
index c5c3f05e9f..227749af0e 100644
--- a/package/qemu/Config.in.host
+++ b/package/qemu/Config.in.host
@@ -1,8 +1,7 @@
config BR2_PACKAGE_HOST_QEMU
bool "host qemu"
- # So far, we only build the user mode emulation, so this list
- # of architecture dependencies only takes into account this
- # emulation mode.
+ select BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE \
+ if !BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE
depends on BR2_arm || BR2_armeb || BR2_aarch64 || \
BR2_i386 || BR2_m68k || BR2_microblazeel || \
BR2_microblazebe || BR2_mips || BR2_mipsel || \
@@ -12,6 +11,24 @@ config BR2_PACKAGE_HOST_QEMU
help
QEMU is a generic and open source machine emulator and virtualizer.
- This option builds a user emulator for your selected architecture.
+ 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"
+ 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"
+ help
+ Enables the build of the user-land emulator, which allows to
+ run user-space applications.
+
+endif
diff --git a/package/qemu/qemu.mk b/package/qemu/qemu.mk
index 5fa95bbd2e..5c3cfeacc3 100644
--- a/package/qemu/qemu.mk
+++ b/package/qemu/qemu.mk
@@ -61,9 +61,19 @@ endif
ifeq ($(HOST_QEMU_ARCH),sh4aeb)
HOST_QEMU_ARCH = sh4eb
endif
-HOST_QEMU_TARGETS = $(HOST_QEMU_ARCH)-linux-user
-ifeq ($(BR2_PACKAGE_HOST_QEMU),y)
+ifeq ($(BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE),y)
+HOST_QEMU_TARGETS += $(HOST_QEMU_ARCH)-softmmu
+HOST_QEMU_OPTS += --enable-system --enable-fdt
+HOST_QEMU_DEPENDENCIES += host-dtc
+else
+HOST_QEMU_OPTS += --disable-system
+endif
+
+ifeq ($(BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE),y)
+HOST_QEMU_TARGETS += $(HOST_QEMU_ARCH)-linux-user
+HOST_QEMU_OPTS += --enable-linux-user
+
HOST_QEMU_HOST_SYSTEM_TYPE = $(shell uname -s)
ifneq ($(HOST_QEMU_HOST_SYSTEM_TYPE),Linux)
$(error "qemu-user can only be used on Linux hosts")
@@ -84,12 +94,16 @@ HOST_QEMU_COMPARE_VERSION = $(shell test $(HOST_QEMU_HOST_SYSTEM_VERSION) -ge $(
# built with kernel headers that are older or the same as the kernel
# version running on the host machine.
#
+
ifeq ($(BR_BUILDING),y)
ifneq ($(HOST_QEMU_COMPARE_VERSION),OK)
$(error "Refusing to build qemu-user: target Linux version newer than host's.")
endif
-endif
-endif
+endif # BR_BUILDING
+
+else # BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE
+HOST_QEMU_OPTS += --disable-linux-user
+endif # BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE
define HOST_QEMU_CONFIGURE_CMDS
cd $(@D); $(HOST_CONFIGURE_OPTS) ./configure \
@@ -100,7 +114,8 @@ define HOST_QEMU_CONFIGURE_CMDS
--host-cc="$(HOSTCC)" \
--python=$(HOST_DIR)/usr/bin/python2 \
--extra-cflags="$(HOST_CFLAGS)" \
- --extra-ldflags="$(HOST_LDFLAGS)"
+ --extra-ldflags="$(HOST_LDFLAGS)" \
+ $(HOST_QEMU_OPTS)
endef
define HOST_QEMU_BUILD_CMDS
OpenPOWER on IntegriCloud