#
# Copyright (C) 2016 OpenWrt.org
-# Copyright (C) 2016-2018 Yousong Zhou <yszhou4tech@gmail.com>
+# Copyright (C) 2016-2019 Yousong Zhou <yszhou4tech@gmail.com>
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=qemu
-PKG_VERSION:=3.1.0
-PKG_RELEASE:=2
+PKG_VERSION:=4.0.0
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_HASH:=6a0508df079a0a33c2487ca936a56c12122f105b8a96a44374704bef6c69abfc
+PKG_HASH:=13a93dfe75b86734326f8d5b475fde82ec692d5b5a338b4262aeeb6b0fa4e469
PKG_SOURCE_URL:=http://download.qemu.org/
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=LICENSE tcg/LICENSE
PKG_USE_MIPS16:=0
include $(INCLUDE_DIR)/uclibc++.mk
+include $(INCLUDE_DIR)/nls.mk
include $(INCLUDE_DIR)/package.mk
TITLE:=QEMU target $(1)
URL:=http://www.qemu.org
DEPENDS:= +glib2 +libpthread +zlib $(CXX_DEPENDS) $(QEMU_DEPS_IN_HOST) \
- $(if $(filter %-softmmu,$(1)),+libncurses +libfdt +pixman +qemu-blobs)
+ $(if $(filter %-softmmu,$(1)),+libncurses +libfdt +pixman +qemu-blobs $(ICONV_DEPENDS))
endef
define Package/qemu-$(1)/description
--disable-fortify-source \
--disable-stack-protector \
-# Make a list from QEMU source code for reference
+# VHost features
+CONFIGURE_ARGS += \
+ --enable-vhost-crypto \
+ --enable-vhost-kernel \
+ --enable-vhost-net \
+ --enable-vhost-scsi \
+ --enable-vhost-user \
+ --enable-vhost-vsock \
+
+# Image formats support
+CONFIGURE_ARGS += \
+ --disable-bochs \
+ --disable-cloop \
+ --disable-dmg \
+ --disable-qcow1 \
+ --disable-vdi \
+ --disable-vvfat \
+ --disable-qed \
+ --disable-parallels \
+
+# system/user-mode emulation
+CONFIGURE_ARGS += \
+ --disable-user \
+ --disable-bsd-user \
+ --disable-linux-user \
+ --enable-system \
+
+# accel
+CONFIGURE_ARGS += \
+ --disable-hax \
+ --disable-hvf \
+ --disable-whpx \
+ --disable-xen \
+ --enable-kvm \
+ --enable-tcg \
+
+# UI
+CONFIGURE_ARGS += \
+ --disable-cocoa \
+ --disable-gtk \
+ --disable-sdl \
+ --disable-sdl-image \
+ --disable-spice \
+ --disable-virglrenderer \
+ --disable-vnc \
+ --disable-vnc-jpeg \
+ --disable-vnc-png \
+ --disable-vnc-sasl \
+ --disable-vte \
+ --enable-curses \
+ --enable-iconv \
+
+# Features for performance & no external dependency
+CONFIGURE_ARGS += \
+ --enable-coroutine-pool \
+ --enable-crypto-afalg \
+ --enable-live-block-migration \
+ --enable-membarrier \
+ --enable-replication \
+
+# Review configure options not explicitly specified here
#
-# grep -E '^\s*--disable-[^)]+\)' configure | cut -f1 -d')' | sort -u
+# openwrt_makefile=openwrt/packages/utils/qemu/Makefile
+# qemu_configure=qemu/configure
+# for arg in $(grep -E '^\s*--disable-[^)]+\)' "$qemu_configure" | cut -f1 -d')'); do
+# grep -qE "(--enable|--disable)${arg#--disable}" "$openwrt_makefile" || echo "$arg"
+# done
#
CONFIGURE_ARGS += \
--audio-drv-list='' \
--disable-attr \
+ --disable-auth-pam \
--disable-bluez \
--disable-brlapi \
- --disable-bsd-user \
--disable-bzip2 \
--disable-cap-ng \
- --disable-cocoa \
+ --disable-capstone \
--disable-curl \
--disable-debug-info \
+ --disable-debug-mutex \
--disable-debug-tcg \
--disable-docs \
--disable-gcrypt \
+ --disable-git-update \
--disable-glusterfs \
--disable-gnutls \
- --disable-gtk \
--disable-guest-agent-msi \
--disable-jemalloc \
--disable-libiscsi \
--disable-libusb \
--disable-libxml2 \
--disable-linux-aio \
+ --disable-lzfse \
--disable-lzo \
--disable-modules \
+ --disable-mpath \
--disable-netmap \
--disable-nettle \
--disable-numa \
--disable-opengl \
+ --disable-pvrdma \
--disable-qom-cast-debug \
--disable-rbd \
--disable-rdma \
- --disable-sdl \
+ --disable-sanitizers \
--disable-seccomp \
+ --disable-sheepdog \
--disable-smartcard \
--disable-snappy \
--disable-sparse \
- --disable-spice \
--disable-strip \
--disable-tcg-interpreter \
--disable-tcmalloc \
--disable-tools \
--disable-tpm \
--disable-usb-redir \
- --disable-uuid \
--disable-vde \
- --disable-vhdx \
- --disable-virglrenderer \
--disable-virtfs \
- --disable-vnc \
- --disable-vnc-jpeg \
- --disable-vnc-png \
- --disable-vnc-sasl \
- --disable-vte \
+ --disable-vxhs \
--disable-werror \
- --disable-xen \
--disable-xen-pci-passthrough \
- --disable-xen-pv-domain-build \
--disable-xfsctl \
- --disable-zlib-test \
CONFIGURE_ARGS += --target-list='$(foreach target,$(QEMU_TARGET_LIST),$(if $(CONFIG_PACKAGE_qemu-$(target)),$(target)))'
CONFIGURE_ARGS += $(if $(CONFIG_PACKAGE_qemu-ga),--enable-guest-agent)
-From 82d1bb429533dcab4278ed21afc19ee303d7d3f5 Mon Sep 17 00:00:00 2001
+From cbb0971d0d1bc32413095810e24f17eb7169810a Mon Sep 17 00:00:00 2001
From: Yousong Zhou <yszhou4tech@gmail.com>
Date: Sat, 24 Feb 2018 13:43:19 +0800
Subject: [PATCH 1/4] configure: allow disable fortify_source
1 file changed, 2 insertions(+)
diff --git a/configure b/configure
-index 0a3c6a72c3..d274df816c 100755
+index 1c563a7027..f4d949b35b 100755
--- a/configure
+++ b/configure
-@@ -1491,6 +1491,8 @@ for opt do
+@@ -1518,6 +1518,8 @@ for opt do
;;
--disable-libpmem) libpmem=no
;;
-From 4d7955f069922c482886e03e5cd352281dbce146 Mon Sep 17 00:00:00 2001
+From 39b07d1742475f2c60ae2c80f3f2853bb556e0b1 Mon Sep 17 00:00:00 2001
From: Yousong Zhou <yszhou4tech@gmail.com>
Date: Tue, 2 Apr 2019 06:31:31 +0000
Subject: [PATCH 2/4] configure: allow enabling/disabling libudev from command
1 file changed, 4 insertions(+)
diff --git a/configure b/configure
-index d274df816c..a138faeb72 100755
+index f4d949b35b..939f54178b 100755
--- a/configure
+++ b/configure
-@@ -1491,6 +1491,10 @@ for opt do
+@@ -1518,6 +1518,10 @@ for opt do
;;
--disable-libpmem) libpmem=no
;;
-From c480c25cf9265fe8e90c2c26d65c8a2fa174b0ea Mon Sep 17 00:00:00 2001
+From fb90eacb808c3b1719d6a5f2deefe88c82589bfb Mon Sep 17 00:00:00 2001
From: Yousong Zhou <yszhou4tech@gmail.com>
Date: Sat, 24 Feb 2018 13:45:25 +0800
Subject: [PATCH 3/4] disas: fix compilation failure when isnan is a macro
-From e030d1c14119e880a52788dd04325d489cf455ae Mon Sep 17 00:00:00 2001
+From 8cff6a5f07f66103809e6bf4a26c512d70ab2841 Mon Sep 17 00:00:00 2001
From: Yousong Zhou <yszhou4tech@gmail.com>
Date: Sat, 24 Feb 2018 13:46:31 +0800
Subject: [PATCH 4/4] pc-bios: fix compilation when $(AS) is actually gcc
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/pc-bios/optionrom/Makefile b/pc-bios/optionrom/Makefile
-index a9a9e5e7eb..f88b3ee446 100644
+index e33a24da0d..ce734e8202 100644
--- a/pc-bios/optionrom/Makefile
+++ b/pc-bios/optionrom/Makefile
@@ -34,7 +34,7 @@ endif
+ASFLAGS += $(Wa)-32
QEMU_CFLAGS += $(call cc-c-option, $(QEMU_CFLAGS), $(Wa)-32)
- build-all: multiboot.bin linuxboot.bin linuxboot_dma.bin kvmvapic.bin
-@@ -44,7 +44,7 @@ build-all: multiboot.bin linuxboot.bin linuxboot_dma.bin kvmvapic.bin
+ build-all: multiboot.bin linuxboot.bin linuxboot_dma.bin kvmvapic.bin pvh.bin
+@@ -44,7 +44,7 @@ build-all: multiboot.bin linuxboot.bin linuxboot_dma.bin kvmvapic.bin pvh.bin
%.o: %.S
- $(call quiet-command,$(CPP) $(QEMU_INCLUDES) $(QEMU_DGFLAGS) -c -o - $< | $(AS) $(ASFLAGS) -o $@,"AS","$(TARGET_DIR)$@")
+ $(call quiet-command,$(CPP) $(QEMU_INCLUDES) $(QEMU_DGFLAGS) -c -o - $< | $(AS) $(ASFLAGS) -o $@ -x assembler -,"AS","$(TARGET_DIR)$@")
- %.img: %.o
- $(call quiet-command,$(LD) $(LDFLAGS_NOPIE) -m $(LD_I386_EMULATION) -T $(SRC_PATH)/pc-bios/optionrom/flat.lds -s -o $@ $<,"BUILD","$(TARGET_DIR)$@")
+ pvh.img: pvh.o pvh_main.o
+ $(call quiet-command,$(LD) $(LDFLAGS_NOPIE) -m $(LD_I386_EMULATION) -T $(SRC_PATH)/pc-bios/optionrom/flat.lds -s -o $@ $^,"BUILD","$(TARGET_DIR)$@")