http://lists.nongnu.org/archive/html/qemu-devel/2012-07/msg01626.html - Rename CLANG workaround knob to CLANG_HACK to avoid it being inadvertently triggered by WITH_CLANG in make.conf etc. - Change USE_BZIP2=yes to EXTRACT_SUFX=.tar.bz2 because the 1.1.1 distfile is in fact compressed with gzip not bzip2 despite the extension. - Add preliminary arm-bsd-user support, this still will only run very simple executables like a static echo (the same as the rest of the bsd-user targets) due to lots of syscall handling still missing. Help welcome there! :) This work was started by bapt and cognet, I fixed syscall arg passing (only the first four are passed in registers, the rest on the stack) as well as errno and carry handling at syscall return among other things and cleaned up cognet's version a bit. (The OpenBSD case is untested and probably wrong.) [1] Some notes in this post: http://lists.freebsd.org/pipermail/freebsd-emulation/2012-July/009901.html Submitted by: cognet [1] (initial version of the patch)
250 lines
6.8 KiB
Makefile
250 lines
6.8 KiB
Makefile
# New ports collection makefile for: qemu
|
|
# Date created: 2004/05/31
|
|
# Whom: Juergen Lock <nox@jelal.kn-bremen.de>
|
|
#
|
|
# $FreeBSD$
|
|
#
|
|
|
|
PORTNAME= qemu
|
|
PORTVERSION= 1.1.1
|
|
CATEGORIES= emulators
|
|
MASTER_SITES= http://wiki.qemu.org/download/:release \
|
|
LOCAL/nox:snapshot
|
|
PKGNAMESUFFIX= -devel
|
|
DISTFILES= ${DISTNAME}${EXTRACT_SUFX}:release
|
|
DIST_SUBDIR= qemu/${PORTVERSION}
|
|
|
|
MAINTAINER= nox@FreeBSD.org
|
|
COMMENT= QEMU CPU Emulator - development version
|
|
|
|
HAS_CONFIGURE= yes
|
|
EXTRACT_SUFX= .tar.bz2
|
|
USE_GMAKE= yes
|
|
USE_PERL5_BUILD= yes
|
|
USE_PYTHON_BUILD= yes
|
|
USE_GNOME+= glib20
|
|
PATCH_STRIP= -p1
|
|
MAKE_ENV+= BSD_MAKE="${MAKE}"
|
|
MAN1= qemu.1 qemu-img.1
|
|
MAN8= qemu-nbd.8
|
|
ONLY_FOR_ARCHS= amd64 i386 powerpc # XXX someone wants to debug sparc64 hosts?
|
|
CONFLICTS_INSTALL= qemu-[0-9]*
|
|
MAKE_JOBS_SAFE= yes
|
|
|
|
OPTIONS_DEFINE= SAMBA SDL OPENGL GNUTLS SASL JPEG PNG CURL CDROM_DMA PCAP \
|
|
USBREDIR GNS3 ADD_AUDIO CLANG_HACK X86_TARGETS BSD_USER
|
|
SAMBA_DESC= samba dependency (for -smb)
|
|
GNUTLS_DESC= gnutls dependency (vnc encryption)
|
|
SASL_DESC= cyrus-sasl dependency (vnc encryption)
|
|
JPEG_DESC= jpeg dependency (vnc lossy compression)
|
|
PNG_DESC= png dependency (vnc compression)
|
|
CURL_DESC= libcurl dependency (remote images)
|
|
CDROM_DMA_DESC= IDE CDROM DMA
|
|
PCAP_DESC= pcap dependency (networking with bpf)
|
|
SEABIOS_GIT_DESC= add seabios snapshot (-bios bios.bin-1.6.3.1)
|
|
USBREDIR_DESC= usb device network redirection (experimental!)
|
|
GNS3_DESC= gns3 patches (udp, promiscuous multicast)
|
|
ADD_AUDIO_DESC= Emulate more audio hardware (experimental!)
|
|
CLANG_HACK_DESC= clang workaround (result slow and less stable!)
|
|
X86_TARGETS_DESC= Don't build non-x86 system targets
|
|
BSD_USER_DESC= Also build bsd-user targets (for testing)
|
|
OPTIONS_DEFAULT=SDL OPENGL GNUTLS SASL JPEG PNG CURL CDROM_DMA PCAP
|
|
|
|
.include <bsd.port.options.mk>
|
|
|
|
CONFIGURE_ARGS+= --extra-ldflags=-L${LOCALBASE}/lib
|
|
PORTDOCS= docs qemu-doc.html qemu-tech.html qmp-commands.txt
|
|
|
|
# XXX this fixes build with clang but --enable-tcg-interpreter that's
|
|
# needed to avoid global register usage that clang doesn't support
|
|
# causes the result to be slow and less stable.
|
|
.if ${PORT_OPTIONS:MCLANG_HACK}
|
|
CONFIGURE_ARGS+= --enable-tcg-interpreter
|
|
CLANG_CFLAGS_AS+= -no-integrated-as
|
|
.endif
|
|
|
|
.if ${PORT_OPTIONS:MX86_TARGETS}
|
|
.if ${PORT_OPTIONS:MBSD_USER}
|
|
CONFIGURE_ARGS+= --target-list=i386-softmmu,x86_64-softmmu,i386-bsd-user,x86_64-bsd-user,sparc-bsd-user,sparc64-bsd-user,arm-bsd-user
|
|
.else
|
|
CONFIGURE_ARGS+= --target-list=i386-softmmu,x86_64-softmmu
|
|
.endif
|
|
.else
|
|
.if empty(PORT_OPTIONS:MBSD_USER)
|
|
CONFIGURE_ARGS+= --disable-bsd-user
|
|
.endif
|
|
.endif
|
|
|
|
.if empty(PORT_OPTIONS:MBSD_USER)
|
|
PLIST_SUB+= BSD_USER="@comment "
|
|
.else
|
|
PLIST_SUB+= BSD_USER=""
|
|
.if ${ARCH} == "sparc64"
|
|
IGNORE= bsd-user targets not tested on sparc64
|
|
.endif
|
|
.endif
|
|
|
|
.if ${PORT_OPTIONS:MX86_TARGETS}
|
|
PLIST_SUB+= NONX86="@comment "
|
|
.else
|
|
PLIST_SUB+= NONX86=""
|
|
.endif
|
|
|
|
.if ${PORT_OPTIONS:MGNS3}
|
|
EXTRA_PATCHES+= ${FILESDIR}/hw_e1000_c.patch \
|
|
${FILESDIR}/net_c.patch \
|
|
${FILESDIR}/net_h.patch \
|
|
${FILESDIR}/net_udp_c.patch \
|
|
${FILESDIR}/net_udp_h.patch \
|
|
${FILESDIR}/Makefile_objs.patch \
|
|
${FILESDIR}/gns3-qemu-options.hx.patch
|
|
.endif
|
|
|
|
WITHOUT_CPU_CFLAGS=yes #to avoid problems with register allocation
|
|
CFLAGS:= ${CFLAGS:C/-fno-tree-vrp//}
|
|
CONFIGURE_ARGS+= --prefix=${PREFIX} --cc=${CC} --enable-docs \
|
|
--disable-linux-user --disable-linux-aio \
|
|
--disable-kvm --disable-xen \
|
|
--smbd=${LOCALBASE}/sbin/smbd \
|
|
--extra-cflags=-I${WRKSRC}\ -I${LOCALBASE}/include\ -DPREFIX=\\\"${PREFIX}\\\"
|
|
|
|
.if empty(PORT_OPTIONS:MSDL)
|
|
CONFIGURE_ARGS+= --disable-sdl
|
|
.else
|
|
USE_SDL= sdl
|
|
.endif
|
|
|
|
.if empty(PORT_OPTIONS:MGNUTLS)
|
|
CONFIGURE_ARGS+= --disable-vnc-tls
|
|
.else
|
|
LIB_DEPENDS+= gnutls:${PORTSDIR}/security/gnutls
|
|
.endif
|
|
|
|
.if empty(PORT_OPTIONS:MSASL)
|
|
CONFIGURE_ARGS+= --disable-vnc-sasl
|
|
.else
|
|
LIB_DEPENDS+= sasl2:${PORTSDIR}/security/cyrus-sasl2
|
|
.endif
|
|
|
|
.if empty(PORT_OPTIONS:MJPEG)
|
|
CONFIGURE_ARGS+= --disable-vnc-jpeg
|
|
.else
|
|
LIB_DEPENDS+= jpeg:${PORTSDIR}/graphics/jpeg
|
|
.endif
|
|
|
|
.if empty(PORT_OPTIONS:MPNG)
|
|
CONFIGURE_ARGS+= --disable-vnc-png
|
|
.else
|
|
LIB_DEPENDS+= png15:${PORTSDIR}/graphics/png
|
|
.endif
|
|
|
|
.if empty(PORT_OPTIONS:MCURL)
|
|
CONFIGURE_ARGS+= --disable-curl
|
|
.else
|
|
LIB_DEPENDS+= curl:${PORTSDIR}/ftp/curl
|
|
.endif
|
|
|
|
.if empty(PORT_OPTIONS:MOPENGL)
|
|
CONFIGURE_ARGS+= --disable-opengl
|
|
.else
|
|
USE_GL= yes
|
|
.endif
|
|
|
|
.if empty(PORT_OPTIONS:MUSBREDIR)
|
|
CONFIGURE_ARGS+= --disable-usb-redir
|
|
.else
|
|
BUILD_DEPENDS+= usbredir>=0.4.3:${PORTSDIR}/net/usbredir
|
|
RUN_DEPENDS+= usbredir>=0.4.3:${PORTSDIR}/net/usbredir
|
|
.endif
|
|
|
|
.if ${PORT_OPTIONS:MPCAP}
|
|
CONFIGURE_ARGS+= --enable-pcap
|
|
.endif
|
|
|
|
.if ${PORT_OPTIONS:MADD_AUDIO}
|
|
CONFIGURE_ARGS+= --audio-card-list=ac97,es1370,sb16,cs4231a,adlib,gus,hda
|
|
.endif
|
|
|
|
.if ${PORT_OPTIONS:MSAMBA}
|
|
RUN_DEPENDS+= ${LOCALBASE}/sbin/smbd:${PORTSDIR}/net/samba35
|
|
.endif
|
|
|
|
.if ${PORT_OPTIONS:MSEABIOS_GIT}
|
|
RUN_DEPENDS+= seabios-devel>=1.6.3.1:${PORTSDIR}/emulators/seabios-devel
|
|
.endif
|
|
|
|
.if defined(NOPORTDOCS)
|
|
MAKE_ARGS+= NOPORTDOCS=1
|
|
.else
|
|
BUILD_DEPENDS+= texi2html:${PORTSDIR}/textproc/texi2html
|
|
.endif
|
|
|
|
.if !defined(STRIP) || ${STRIP} == ""
|
|
CONFIGURE_ARGS+=--disable-strip
|
|
.endif
|
|
|
|
.if ${ARCH} == "amd64"
|
|
MAKE_ARGS+= ARCH=x86_64
|
|
.endif
|
|
|
|
.if ${ARCH} == "powerpc"
|
|
MAKE_ARGS+= ARCH=ppc
|
|
.endif
|
|
|
|
.if ${ARCH} == "sparc64"
|
|
CONFIGURE_ARGS+= --sparc_cpu=v9
|
|
.endif
|
|
|
|
.if ${OSVERSION} < 900033
|
|
BUILD_DEPENDS+= ${LOCALBASE}/bin/as:${PORTSDIR}/devel/binutils
|
|
CONFIGURE_ENV+= COMPILER_PATH=${LOCALBASE}/bin
|
|
MAKE_ENV+= COMPILER_PATH=${LOCALBASE}/bin
|
|
.endif
|
|
|
|
post-patch:
|
|
.if ${PORT_OPTIONS:MPCAP}
|
|
@cd ${WRKSRC} && ${PATCH} --quiet < ${FILESDIR}/pcap-patch
|
|
@${REINPLACE_CMD} -f ${FILESDIR}/pcap-client-type.sed ${WRKSRC}/net.h
|
|
.endif
|
|
.if empty(PORT_OPTIONS:MCDROM_DMA)
|
|
@cd ${WRKSRC} && ${PATCH} --quiet < ${FILESDIR}/cdrom-dma-patch
|
|
.endif
|
|
@${REINPLACE_CMD} -E \
|
|
-e "s|^(CFLAGS=).*|\1${CFLAGS} -fno-strict-aliasing|" \
|
|
-e "s|^(LDFLAGS=).*|\1${LDFLAGS}|" \
|
|
${WRKSRC}/Makefile.target
|
|
@${REINPLACE_CMD} -E \
|
|
-e "s|^(CFLAGS=).*|\1${CFLAGS} -fno-strict-aliasing -I.|" \
|
|
-e "s|^(LDFLAGS=).*|\1${LDFLAGS}|" \
|
|
${WRKSRC}/Makefile
|
|
@${REINPLACE_CMD} -E \
|
|
-e "s|^(CFLAGS[ ]*:=.*)|\1 ${CLANG_CFLAGS_AS}|" \
|
|
${WRKSRC}/pc-bios/optionrom/Makefile
|
|
@${REINPLACE_CMD} -E \
|
|
-e "1s|^(#! )/usr/bin/perl|\1${PERL}|" \
|
|
${WRKSRC}/scripts/texi2pod.pl
|
|
|
|
.if ${OSVERSION} >= 800091
|
|
# XXX need to disable usb host code on head while it's not ported to the
|
|
# new usb stack yet
|
|
post-configure:
|
|
@${REINPLACE_CMD} -E \
|
|
-e "s|^(HOST_USB=)bsd|\1stub|" \
|
|
${WRKSRC}/config-host.mak
|
|
.endif
|
|
|
|
post-install:
|
|
.if !defined(NOPORTDOCS)
|
|
@(cd ${WRKSRC} && ${COPYTREE_SHARE} docs ${DOCSDIR}/)
|
|
.endif
|
|
@${INSTALL_SCRIPT} ${FILESDIR}/qemu-ifup.sample ${PREFIX}/etc
|
|
@${INSTALL_SCRIPT} ${FILESDIR}/qemu-ifdown.sample ${PREFIX}/etc
|
|
@if [ ! -f ${PREFIX}/etc/qemu-ifup ]; then \
|
|
${CP} -p ${PREFIX}/etc/qemu-ifup.sample ${PREFIX}/etc/qemu-ifup ; \
|
|
fi
|
|
@if [ ! -f ${PREFIX}/etc/qemu-ifdown ]; then \
|
|
${CP} -p ${PREFIX}/etc/qemu-ifdown.sample ${PREFIX}/etc/qemu-ifdown ; \
|
|
fi
|
|
@${CAT} ${PKGMESSAGE}
|
|
|
|
.include <bsd.port.mk>
|