diff --git a/utils/qemu/Makefile b/utils/qemu/Makefile index 0dc4d5c5f8..da1e31b03b 100644 --- a/utils/qemu/Makefile +++ b/utils/qemu/Makefile @@ -1,6 +1,6 @@ # # Copyright (C) 2016 OpenWrt.org -# Copyright (C) 2016-2018 Yousong Zhou +# Copyright (C) 2016-2019 Yousong Zhou # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -9,10 +9,10 @@ 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 @@ -23,6 +23,7 @@ PKG_INSTALL:=1 PKG_USE_MIPS16:=0 include $(INCLUDE_DIR)/uclibc++.mk +include $(INCLUDE_DIR)/nls.mk include $(INCLUDE_DIR)/package.mk @@ -152,7 +153,7 @@ define qemu-target 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 @@ -193,27 +194,92 @@ CONFIGURE_ARGS += \ --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 \ @@ -224,43 +290,36 @@ CONFIGURE_ARGS += \ --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) diff --git a/utils/qemu/patches/0001-configure-allow-disable-fortify_source.patch b/utils/qemu/patches/0001-configure-allow-disable-fortify_source.patch index 9759cfa57b..a1fb69c707 100644 --- a/utils/qemu/patches/0001-configure-allow-disable-fortify_source.patch +++ b/utils/qemu/patches/0001-configure-allow-disable-fortify_source.patch @@ -1,4 +1,4 @@ -From 82d1bb429533dcab4278ed21afc19ee303d7d3f5 Mon Sep 17 00:00:00 2001 +From cbb0971d0d1bc32413095810e24f17eb7169810a Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Sat, 24 Feb 2018 13:43:19 +0800 Subject: [PATCH 1/4] configure: allow disable fortify_source @@ -10,10 +10,10 @@ OpenWrt base build system decide flavor of fortify_source to use 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 ;; diff --git a/utils/qemu/patches/0002-configure-allow-enabling-disabling-libudev-from-comm.patch b/utils/qemu/patches/0002-configure-allow-enabling-disabling-libudev-from-comm.patch index 4a42957212..ea0183fa52 100644 --- a/utils/qemu/patches/0002-configure-allow-enabling-disabling-libudev-from-comm.patch +++ b/utils/qemu/patches/0002-configure-allow-enabling-disabling-libudev-from-comm.patch @@ -1,4 +1,4 @@ -From 4d7955f069922c482886e03e5cd352281dbce146 Mon Sep 17 00:00:00 2001 +From 39b07d1742475f2c60ae2c80f3f2853bb556e0b1 Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Tue, 2 Apr 2019 06:31:31 +0000 Subject: [PATCH 2/4] configure: allow enabling/disabling libudev from command @@ -9,10 +9,10 @@ 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 ;; diff --git a/utils/qemu/patches/0003-disas-fix-compilation-failure-when-isnan-is-a-macro.patch b/utils/qemu/patches/0003-disas-fix-compilation-failure-when-isnan-is-a-macro.patch index ece3670218..a204f183de 100644 --- a/utils/qemu/patches/0003-disas-fix-compilation-failure-when-isnan-is-a-macro.patch +++ b/utils/qemu/patches/0003-disas-fix-compilation-failure-when-isnan-is-a-macro.patch @@ -1,4 +1,4 @@ -From c480c25cf9265fe8e90c2c26d65c8a2fa174b0ea Mon Sep 17 00:00:00 2001 +From fb90eacb808c3b1719d6a5f2deefe88c82589bfb Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Sat, 24 Feb 2018 13:45:25 +0800 Subject: [PATCH 3/4] disas: fix compilation failure when isnan is a macro diff --git a/utils/qemu/patches/0004-pc-bios-fix-compilation-when-AS-is-actually-gcc-driv.patch b/utils/qemu/patches/0004-pc-bios-fix-compilation-when-AS-is-actually-gcc-driv.patch index f63f015b6a..45e4ca51ac 100644 --- a/utils/qemu/patches/0004-pc-bios-fix-compilation-when-AS-is-actually-gcc-driv.patch +++ b/utils/qemu/patches/0004-pc-bios-fix-compilation-when-AS-is-actually-gcc-driv.patch @@ -1,4 +1,4 @@ -From e030d1c14119e880a52788dd04325d489cf455ae Mon Sep 17 00:00:00 2001 +From 8cff6a5f07f66103809e6bf4a26c512d70ab2841 Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Sat, 24 Feb 2018 13:46:31 +0800 Subject: [PATCH 4/4] pc-bios: fix compilation when $(AS) is actually gcc @@ -9,7 +9,7 @@ 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 @@ -20,13 +20,13 @@ index a9a9e5e7eb..f88b3ee446 100644 +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)$@")