diff options
author | Simon Maes <simonn.maes@gmail.com> | 2016-07-04 00:24:21 +0200 |
---|---|---|
committer | Peter Korsgaard <peter@korsgaard.com> | 2016-07-04 11:29:31 +0200 |
commit | 60a965fbaad2cb2bde9add97082df77343fe6187 (patch) | |
tree | e25f57a5864adccb880b6d9b43e6c35ea03a05c9 | |
parent | 6ab32f38562e8976d75bbfd53a9ab46e9701c492 (diff) | |
download | buildroot-60a965fbaad2cb2bde9add97082df77343fe6187.tar.gz buildroot-60a965fbaad2cb2bde9add97082df77343fe6187.zip |
qemu: add support for host-qemu-system
This commit adds support for building the system emulation mode in
host-qemu. To do so, it adds the BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE and
BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE sub-options, making sure that the
latter is selected if the former is not enabled. This ensures that at
least one is enabled *and* that existing configurations continue to
build the user-land emulation (which was the only one we supported until
now).
The list of architectures supported by the system emulation mode is the
same as the one for the user-space emulation mode (as far as the
existing list is concerned), so we simply drop the comment about this
dependency list being related to the user-space emulation only.
Signed-off-by: Simon Maes <simonn.maes@gmail.com>
[Thomas:
- Make sure either BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE or
BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE get selected.
- Unconditionally enable FDT support in host-qemu when in system
mode (so the option BR2_PACKAGE_HOST_QEMU_FDT has been removed)
- Remove the unneeded BR2_PACKAGE_HOST_QEMU_HAS_EMULS option.
- Remove the SDL related option, we really on the system to provide
SDL.
- Remove the BR2_PACKAGE_HOST_QEMU_DEBUG and
BR2_PACKAGE_HOST_QEMU_STRIP_BINARY options, since they are not really
useful.
- Remove HOST_QEMU_SITE and HOST_QEMU_SOURCE definitions, since they
are automatically derived from QEMU_SITE and QEMU_SOURCE anyway.
- Group things more logically in the .mk file.]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
-rw-r--r-- | package/qemu/Config.in.host | 25 | ||||
-rw-r--r-- | package/qemu/qemu.mk | 25 |
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 |