1PORTNAME= qemu 2DISTVERSION= 11.0.0 3PORTREVISION= 1 4CATEGORIES= emulators 5MASTER_SITES= https://download.qemu.org/ 6DIST_SUBDIR= qemu/${PORTVERSION} 7 8MAINTAINER= ports@MidnightBSD.org 9COMMENT= QEMU CPU Emulator ${${FLAVOR}_COMMENT} 10WWW= https://www.qemu.org/ 11 12LICENSE= gpl2 13 14BUILD_DEPENDS= bash:shells/bash \ 15 ${PYTHON_PKGNAMEPREFIX}qemu.qmp>=0.0.5:emulators/py-qemu.qmp@${PY_FLAVOR} \ 16 ${PYTHON_PKGNAMEPREFIX}wheel>=0:devel/py-wheel@${PY_FLAVOR} 17.if ${FLAVOR:U} != guestagent 18LIB_DEPENDS+= libzstd.so:archivers/zstd 19.endif 20.if ${FLAVOR:U} != tools && ${FLAVOR:U} != guestagent 21LIB_DEPENDS+= libfdt.so:sysutils/dtc \ 22 libinotify.so:devel/libinotify \ 23 libslirp.so:net/libslirp 24.endif 25.if (${FLAVOR:U} != nox11 && ${FLAVOR:U} != tools && ${FLAVOR:U} != guestagent) 26LIB_DEPENDS+= libepoxy.so:graphics/libepoxy 27.endif 28.if (${FLAVOR:U} != nox11 && ${FLAVOR:U} != tools && ${FLAVOR:U} != default) 29PKGMESSAGE= ${.CURDIR}/pkg-message.guest-agent 30.endif 31 32FLAVORS= default nox11 tools guestagent 33FLAVOR?= ${FLAVORS:[1]} 34default_CONFLICTS_INSTALL= qemu-devel qemu-nox11 qemu-tools qemu-utils \ 35 qemu6* qemu7* 36nox11_PKGNAMESUFFIX= -nox11 37nox11_CONFLICTS_INSTALL= qemu qemu-devel qemu6* qemu7* qemu-guest-agent 38nox11_COMMENT= (without X11) 39tools_PKGNAMESUFFIX= -tools 40tools_COMMENT= (tools only) 41tools_CONFLICTS_INSTALL= qemu qemu-devel qemu-nox11 qemu-utils qemu6* \ 42 qemu70* qemu-guest-agent 43tools_DESCR= ${.CURDIR}/pkg-descr-tools 44tools_PLIST= ${.CURDIR}/pkg-plist-tools 45guestagent_PKGNAMESUFFIX= -guest-agent 46guestagent_COMMENT= (guest agent) 47guestagent_DESCR= ${.CURDIR}/pkg-descr-ga 48guestagent_PLIST= ${.CURDIR}/pkg-plist-ga 49guestagent_CONFLICTS_INSTALL= qemu qemu-devel qemu-nox11 qemu-tools qemu-utils qemu6* \ 50 qemu7* qemu-guest-agent 51 52USES= cpe gmake gnome ninja perl5 pkgconfig python shebangfix tar:xz 53SHEBANG_FILES= scripts/xml-preprocess.py 54USE_GNOME= glib20 55USE_PERL5= build 56.if ${FLAVOR:U} != tools && ${FLAVOR:U} != guestagent 57USES+= iconv:wchar_t 58.endif 59.if (${FLAVOR:U} != nox11 && ${FLAVOR:U} != tools && ${FLAVOR:U} != guestagent) 60USE_GNOME+= cairo 61.endif 62 63BINARY_ALIAS= python3=${PYTHON_VERSION} 64 65HAS_CONFIGURE= yes 66CONFIGURE_ARGS+= --cc=${CC} \ 67 --disable-fuse \ 68 --disable-fuse-lseek \ 69 --disable-jack \ 70 --disable-libnfs \ 71 --disable-libssh \ 72 --disable-lzfse \ 73 --disable-kvm \ 74 --disable-linux-aio \ 75 --disable-linux-user \ 76 --disable-sdl-image \ 77 --disable-snappy \ 78 --disable-sndio \ 79 --disable-spice \ 80 --disable-spice-protocol \ 81 --disable-xen \ 82 --extra-cflags=-I${WRKSRC}\ -I${LOCALBASE}/include\ -DPREFIX=\\\"\"${PREFIX}\\\"\" \ 83 --extra-ldflags=-L${LOCALBASE}/lib \ 84 --extra-ldflags=-L/usr/lib \ 85 --localstatedir=/var \ 86 --mandir=${PREFIX}/share/man \ 87 --prefix=${PREFIX} \ 88 --python=${PYTHON_CMD} 89.if ${FLAVOR:U} == guestagent 90USE_RC_SUBR= qemu-guest-agent 91CONFIGURE_ARGS+= --enable-guest-agent --disable-tools --disable-xkbcommon 92.else 93CONFIGURE_ARGS+= --disable-guest-agent 94.endif 95.if ${FLAVOR:U} != tools && ${FLAVOR:U} != guestagent 96CONFIGURE_ARGS+= --enable-fdt=system \ 97 --enable-netmap 98.endif 99.if ${FLAVOR:U} == tools || ${FLAVOR:U} == guestagent 100CONFIGURE_ARGS+= --disable-attr \ 101 --disable-install-blobs \ 102 --disable-brlapi \ 103 --disable-bzip2 \ 104 --disable-cap-ng \ 105 --disable-coroutine-pool \ 106 --disable-curses \ 107 --disable-fdt \ 108 --disable-gcrypt \ 109 --disable-glusterfs \ 110 --disable-libnfs \ 111 --disable-libusb \ 112 --disable-lzo \ 113 --disable-netmap \ 114 --disable-nettle \ 115 --disable-numa \ 116 --disable-rbd \ 117 --disable-rdma \ 118 --disable-seccomp \ 119 --disable-smartcard \ 120 --disable-snappy \ 121 --disable-spice \ 122 --disable-system \ 123 --disable-tpm \ 124 --disable-user \ 125 --disable-vhost-net \ 126 --disable-virtfs \ 127 --disable-vnc 128.endif 129.if ${FLAVOR:U} == tools 130CONFIGURE_ARGS+= --enable-tools --enable-zstd 131.endif 132 133CFLAGS:= ${CFLAGS:C/-fno-tree-vrp//} 134WITHOUT_CPU_CFLAGS= yes #to avoid problems with register allocation 135 136PORTDOCS= .buildinfo _static/* about/* dbus-dbusindex.html devel/* docs \ 137 genindex.html glossary.html index.html interop/* objects.inv \ 138 qapi-qga-index.html qapi-qmp-index.html qapi-qsd-index.html \ 139 search.html searchindex.js specs/* system/* tools/* user/* 140 141OPTIONS_DEFINE= CAPSTONE CDROM_DMA CURL DEBUG DOCS GNUTLS GTK3 \ 142 ISCSI JPEG OPENGL PNG SAMBA SASL STATIC_LINK \ 143 STRIP USBREDIR VDE X11 X86_TARGETS 144OPTIONS_DEFAULT= CDROM_DMA CURL GNUTLS GTK3 JPEG NCURSES_DEFAULT \ 145 OPENGL PNG SASL VDE X11 146OPTIONS_SINGLE= NCURSES 147OPTIONS_SINGLE_NCURSES= NCURSES_BASE NCURSES_DEFAULT NCURSES_PORT 148.if ${FLAVOR:U} == nox11 149OPTIONS_EXCLUDE:= GTK3 OPENGL X11 150.endif 151.if ${FLAVOR:U} == tools || ${FLAVOR:U} == guestagent 152OPTIONS_EXCLUDE:= CAPSTONE CDROM_DMA CURL DEBUG GNUTLS GTK3 ISCSI \ 153 JPEG NCURSES NCURSES_BASE NCURSES_DEFAULT \ 154 NCURSES_PORT OPENGL PNG SAMBA SASL STATIC_LINK \ 155 USBREDIR VDE X11 X86_TARGETS 156.endif 157OPTIONS_SUB= yes 158CAPSTONE_DESC= Disassembly framework support 159CDROM_DMA_DESC= IDE CDROM DMA 160GNUTLS_DESC= gnutls dependency (vnc encryption) 161ISCSI_DESC= libiscsi dependency (iSCSI client for emulated drives) 162JPEG_DESC= jpeg dependency (vnc lossy compression) 163NCURSES_BASE_DESC= Depend on ncurses in base 164NCURSES_DEFAULT_DESC= Depend on ncurses (ports if installed, otherwise base) 165NCURSES_PORT_DESC= Depend on devel/ncurses in ports 166PNG_DESC= png dependency (vnc compression) 167SAMBA_DESC= samba dependency (for -smb) 168SASL_DESC= cyrus-sasl dependency (vnc encryption) 169STATIC_LINK_DESC= Statically link the executables 170USBREDIR_DESC= usb device network redirection (experimental!) 171VDE_DESC= vde dependency (for vde networking) 172X86_TARGETS_DESC= Build only x86 system targets 173CAPSTONE_LIB_DEPENDS= libcapstone.so:devel/capstone 174CAPSTONE_CONFIGURE_ON= --enable-capstone \ 175 --extra-cflags=-I${LOCALBASE}/include/capstone 176CAPSTONE_CONFIGURE_OFF= --disable-capstone 177CURL_LIB_DEPENDS= libcurl.so:ftp/curl 178CURL_CONFIGURE_OFF= --disable-curl 179DEBUG_CONFIGURE_ON= --enable-debug 180DOCS_BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}sphinx_rtd_theme>0:textproc/py-sphinx_rtd_theme@${PY_FLAVOR} \ 181 sphinx-build:textproc/py-sphinx@${PY_FLAVOR} 182DOCS_CONFIGURE_ENABLE= docs 183GNUTLS_LIB_DEPENDS= libgnutls.so:security/gnutls 184GNUTLS_CONFIGURE_OFF= --disable-gnutls 185GTK3_LIB_DEPENDS= libxkbcommon.so:x11/libxkbcommon 186GTK3_USES= gettext gl 187GTK3_USE= GNOME=gdkpixbuf,gtk30,vte3 \ 188 XORG=x11,xext 189GTK3_CONFIGURE_OFF= --disable-gtk \ 190 --disable-vte 191ISCSI_LIB_DEPENDS= libiscsi.so:net/libiscsi 192ISCSI_CONFIGURE_OFF= --disable-libiscsi 193JPEG_USES= jpeg 194JPEG_CONFIGURE_OFF= --disable-vnc-jpeg 195NCURSES_BASE_USES= ncurses:base 196NCURSES_DEFAULT_USES= ncurses 197NCURSES_PORT_USES= ncurses:port 198OPENGL_USES= gl 199OPENGL_USE= GL=gbm,gl 200OPENGL_CONFIGURE_OFF= --disable-opengl 201PNG_LIB_DEPENDS= libpng.so:graphics/png 202PNG_CONFIGURE_OFF= --disable-png 203SAMBA_USES= samba:run # smbd 204SAMBA_CONFIGURE_ON= --smbd=${LOCALBASE}/sbin/smbd 205SASL_LIB_DEPENDS= libsasl2.so:security/cyrus-sasl2 206SASL_CONFIGURE_OFF= --disable-vnc-sasl 207STATIC_LINK_PREVENTS= GTK3 X11 208STATIC_LINK_PREVENTS_MSG= X11 ui cannot be built static 209STATIC_LINK_CONFIGURE_ON= --static 210STRIP_CONFIGURE_OFF= --disable-strip 211USBREDIR_BUILD_DEPENDS= usbredir>=0.6:net/usbredir 212USBREDIR_RUN_DEPENDS= usbredir>=0.6:net/usbredir 213USBREDIR_CONFIGURE_OFF= --disable-usb-redir 214VDE_LIB_DEPENDS= libvdeplug.so:net/vde2 215VDE_CONFIGURE_OFF= --disable-vde 216X11_USES= sdl 217X11_USE= GNOME=gdkpixbuf \ 218 SDL=sdl2 \ 219 XORG=x11,xext 220X11_CONFIGURE_ENABLE= sdl 221.if (empty(FLAVOR) || ${FLAVOR:U} == default || ${FLAVOR:U} == nox11) && \ 222 (${FLAVOR:U} != tools || ${PKGNAMESUFFIX} != "-guest-agent") 223X86_TARGETS_LIB_DEPENDS_OFF= libdw.so:devel/elfutils \ 224 liblzo2.so:archivers/lzo2 225X86_TARGETS_USES_OFF= xorg 226X86_TARGETS_USE_OFF= XORG=pixman,x11 227X86_TARGETS_CONFIGURE_ON= --target-list='i386-softmmu i386-bsd-user x86_64-softmmu x86_64-bsd-user' 228.endif 229 230.include <bsd.mport.options.mk> 231 232.if ${FLAVOR:U} == tools || ${FLAVOR:U} == guestagent 233.if ${ARCH} == "i386" || ${ARCH} == "powerpc" || ${ARCH:Marmv?} 234PLIST_SUB+= NO_I386="@comment " 235.else 236PLIST_SUB+= NO_I386="" 237.endif 238.endif 239 240.if (empty(FLAVOR) || ${FLAVOR:U} == default || ${FLAVOR:U} == nox11) && \ 241 (${FLAVOR:U} != tools || ${PKGNAMESUFFIX} != "-guest-agent") 242.if ${ARCH} == "amd64" 243MAKE_ARGS+= ARCH=x86_64 244.endif 245 246.if ${ARCH:Maarch64} 247CONFIGURE_ARGS+= --disable-bsd-user 248MAKE_ARGS+= ARCH=${ARCH:C/powerpc64.*/ppc64/} 249PLIST_SUB+= BSDUSER="@comment " 250.else 251PLIST_SUB+= BSDUSER="" 252.endif 253 254PLIST_SUB+= LINUXBOOT_DMA="" 255.endif 256 257pre-patch: 258 ${LN} -sf ${WRKSRC}/bsd-user/freebsd ${WRKSRC}/bsd-user/midnightbsd 259 260post-patch: 261.if ${FLAVOR:U} == tools 262 @${REINPLACE_CMD} -e '/keymaps/d' ${WRKSRC}/pc-bios/meson.build 263.endif 264 265post-patch-CDROM_DMA-off: 266 @${REINPLACE_CMD} -e '/USE_DMA_CDROM/d' ${WRKSRC}/hw/ide/ide-internal.h 267 268do-build: 269 cd ${WRKSRC} && ${SETENVI} ${WRK_ENV} ${GMAKE} -j${MAKE_JOBS_NUMBER} 270 271do-install: 272 cd ${WRKSRC} && ${SETENVI} ${WRK_ENV} DESTDIR=${FAKE_DESTDIR} gmake install 273 274.if !target(post-install) 275post-install: 276.if ${FLAVOR:U} != tools && ${FLAVOR:U} != guestagent 277 ${INSTALL_SCRIPT} ${FILESDIR}/qemu-ifup.sample ${PREFIX}/etc 278 ${INSTALL_SCRIPT} ${FILESDIR}/qemu-ifdown.sample ${PREFIX}/etc 279.endif 280 281post-install-DOCS-on: 282 @(cd ${WRKSRC} && ${COPYTREE_SHARE} docs ${FAKE_DESTDIR}${DOCSDIR}/) 283.endif 284 285.include <bsd.port.mk> 286