# $MidnightBSD: trunk/emulators/qemu/Makefile 19006 2015-05-16 00:45:37Z laffer1 $

PORTNAME=	qemu
PORTVERSION=	0.11.1
PORTREVISION=	2
CATEGORIES=	emulators
MASTER_SITES=	SAVANNAH \
		http://bellard.org/qemu/
DIST_SUBDIR=	qemu

MAINTAINER=	ports@MidnightBSD.org
COMMENT=	QEMU CPU Emulator

LICENSE=	gpl2

HAS_CONFIGURE=	yes
USES=		gmake
USE_GCC=	any
USE_PERL5_BUILD=	yes
PATCH_STRIP=	-p1
MAKE_ENV+=	BSD_MAKE="${MAKE}"

OPTIONS_DEFINE=	KQEMU RTL8139_TIMER SAMBA SDL GNUTLS CURL PCAP GNS3 \
		CDROM_DMA ADD_AUDIO ALL_TARGETS DOCS
KQEMU_DESC=		Build with (alpha!) accelerator module
RTL8139_TIMER_DESC=	allow use of re(4) nic with FreeBSD guests
SAMBA_DESC=		samba dependency (for -smb)
SDL_DESC=		SDL/X dependency (graphical output)
GNUTLS_DESC=		gnutls dependency (vnc encryption)
CURL_DESC=		libcurl dependency (remote images)
PCAP_DESC=		pcap dependency (networking with bpf)
GNS3_DESC=		gns3 patches (udp, promiscuous multicast)
CDROM_DMA_DESC=		IDE CDROM DMA
ADD_AUDIO_DESC=		Emulate more audio hardware (experimental!)
ALL_TARGETS_DESC=	Also build non-x86 targets
OPTIONS_DEFAULT=	SDL GNUTLS CURL PCAP GNS3 CDROM_DMA

.include <bsd.mport.options.mk>

.if empty(PORT_OPTIONS:MALL_TARGETS)
CONFIGURE_ARGS+=	--target-list=i386-softmmu,x86_64-softmmu
PLIST_SUB+=	ALLTARGETS="@comment "
.else
PLIST_SUB+=	ALLTARGETS=""
.endif

WITHOUT_CPU_CFLAGS=yes	#to avoid problems with register allocation
CFLAGS:=	${CFLAGS:C/-fno-tree-vrp//}
CONFIGURE_ARGS+=	--prefix=${PREFIX} --cc=${CC}

.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:MCURL)
CONFIGURE_ARGS+=	--disable-curl
.else
LIB_DEPENDS+=	curl:${PORTSDIR}/ftp/curl
.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
.endif

# XXX
CONFIGURE_ARGS+=	--disable-bsd-user

.if ${PORT_OPTIONS:MSAMBA}
RUN_DEPENDS+=	${LOCALBASE}/sbin/smbd:${PORTSDIR}/net/samba36
.endif

.if ${PORT_OPTIONS:MKQEMU}
BUILD_DEPENDS+=	kqemu-kmod-devel>=1.4.0pre1:${PORTSDIR}/emulators/kqemu-kmod-devel
RUN_DEPENDS+=	kqemu-kmod-devel>=1.4.0pre1:${PORTSDIR}/emulators/kqemu-kmod-devel
.else
CONFIGURE_ARGS+=	--disable-kqemu
.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

.include <bsd.port.pre.mk>

post-extract:
	@${MKDIR} ${WRKSRC}/kqemu
	@${TOUCH} ${WRKSRC}/kqemu/Makefile
	@${ECHO} all: > ${WRKSRC}/kqemu/Makefile.freebsd

pre-patch:
	@for A in ${ONLY_FOR_ARCHS}; do \
		${MKDIR} ${WRKSRC}/bsd/$$A; \
	done

post-patch:
.if ${PORT_OPTIONS:MRTL8139_TIMER}
	@cd ${WRKSRC} && ${PATCH} --quiet < ${FILESDIR}/rtl8139-re-patch
.endif
.if ${PORT_OPTIONS:MPCAP}
	@cd ${WRKSRC} && ${PATCH} --quiet < ${FILESDIR}/pcap-patch
.endif
.if ${PORT_OPTIONS:MGNS3}
	@cd ${WRKSRC} && ${PATCH} -p1 --quiet < ${FILESDIR}/gns3-patch
.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 "1s|^(#! )/usr/bin/perl|\1${PERL}|" \
		${WRKSRC}/texi2pod.pl

.if ${OSVERSION} >= 4016
# 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:
	@${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

.include <bsd.port.post.mk>
