# Ports collection makefile for: freeswitch-core
# Date created: May 11, 2010
# Whom: Richard Neese<r.neese@gmail.com>
#
# $FreeBSD: ports/net/freeswitch-core/Makefile,v 1.18 2010/12/24 15:15:58 jpaetzel Exp $
#

PORTNAME=	freeswitch-core
PORTVERSION=	201044
PORTREVISION=	3
CATEGORIES=	net
MASTER_SITES=	ftp://ftp.secure-computing.net/pub/freeswitch/ \
		ftp://ftp2.secure-computing.net/pub/freeswitch/ \
		http://files.freeswitch.org/downloads/libs/:2
DISTFILES=	${BASE_PORTNAME}-${PORTVERSION}.tar.gz \
		celt-0.7.1.tar.gz:2 \
		flite-1.3.99-latest.tar.gz:2 \
		json-c-0.9.tar.gz:2 \
		lame-3.97.tar.gz:2 \
		libmemcached-0.32.tar.gz:2 \
		libshout-2.2.2.tar.gz:2 \
		mpg123.tar.gz:2 \
		openldap-2.4.11.tar.gz:2 \
		pocketsphinx-0.5.99-20091212.tar.gz:2 \
		soundtouch-1.3.1.tar.gz:2 \
		sphinxbase-0.4.99-20091212.tar.gz:2 \
		communicator_semi_6000_20080321.tar.gz:2
DIST_SUBDIR=	${BASE_PORTNAME}
EXTRACT_ONLY=	${BASE_PORTNAME}-${PORTVERSION}.tar.gz

MAINTAINER=	r.neese@gmail.com
COMMENT=	FreeSwitch SoftSwitch Port

BUILD_DEPENDS=	pkg-config:${PORTSDIR}/devel/pkg-config
LIB_DEPENDS=	curl:${PORTSDIR}/ftp/curl \
		gnutls:${PORTSDIR}/security/gnutls \
		odbc:${PORTSDIR}/databases/unixODBC

WRKSRC=		${WRKDIR}/${BASE_PORTNAME}-${PORTVERSION}

ONLY_FOR_ARCHS=	i386 amd64

USE_AUTOTOOLS=	autoconf:env automake:env libtool:env

USE_PERL5_BUILD=yes

USE_GMAKE=	yes
SUB_FILES=	pkg-install pkg-message
USE_RC_SUBR=	freeswitch
HAS_CONFIGURE=	yes
VARBASE?=	/var
CONFIGURE_ARGS=	--prefix=${PREFIX} \
		--bindir=${PREFIX}/bin \
		--sysconfdir=${PREFIX}/etc/${BASE_PORTNAME}/conf \
		--includedir=${PREFIX}/include/${BASE_PORTNAME} \
		--libdir=${PREFIX}/lib/${BASE_PORTNAME}/lib \
		--localstatedir="${VARBASE}" \
		--with-modinstdir=${PREFIX}/lib/${BASE_PORTNAME}/mod \
		--with-libgnutls-prefix=${LOCALBASE} \
		--with-ogg=${LOCALBASE} \
		--with-ogg-libraries=${LOCALBASE}/lib \
		--with-ogg-includes=${LOCALBASE}/include

CONFIGURE_ENV+=	CPPFLAGS="${CXXFLAGS} -I${LOCALBASE}/include" \
		LDFLAGS="-L${LOCALBASE}/lib"
USE_LDCONFIG=	yes
CPPFLAGS+=	-I${PREFIX}/include

FREESWITCH_USER=	freeswitch
FREESWITCH_GROUP=	${FREESWITCH_USER}

SUB_LIST=	FREESWITCH_USER=${FREESWITCH_USER} FREESWITCH_GROUP=${FREESWITCH_GROUP}

BASE_PORTNAME=	${FREESWITCH_USER}

OPTIONS=	MODSHOUT        "Enable mod_shout (streaming audio/mp3)" on \
		MODFLITE	"Enable mod_flite (Text to Speech)" on \
		MODUNIMRCP	"Enable mod_unimrcp tts" off \
		MODTTSCMDLINE	"Enable mod_tts_commandline" off \
		MODPOCKETSPHINX	"Enable mod_pockectsphinx (voice control)" on \
		MODCIDLOOKUP	"Enable mod_cidlookup" on \
		MODDPDIRECTORY	"Enable mod_dialplan_directory" off \
		MODDIRECTORY	"Enable mod_directory" on \
 		MODDINGALING	"Enable mod_dingaling(google talk)" on \
		MODEASYROUTE	"Enable mod_easyroute(routing tool)" on \
		MODERLANGEVENT  "Enable mod_erlang_event (Call Center Dist)" off \
		MODFAX		"Enable mod_fax" on \
		MODLCR		"Enable mod_lcr (least cost routing)" on \
		MODSOUNDTOUCH	"Enable mod_soundtouch" on \
		MODRSS		"Enable mod_rss (rss feed reader)" on \
		MODSNOM		"Enable mod_snom (snom control)" off \
		MODAVMD		"Enable mod_avmd (Adavced v-mail detection)" on \
		MODVMD		"Enable mod_vmd (voice mail detection)" on \
		MODSPY		"Enable mod_spy" on \
		MODAMRWB	"Enable mod_amrwb (amrwb codec)" on \
		MODCELT		"Enable mod_celt (celt 48k  codec)" on \
		MODSILK		"Enable mod_silk (New Silk Codec)" on \
		MODCODEC2	"Enable mod_codec2 (new codec)" on \
		MODFREETDM	"Enable mod_freetdm dahdi support (Testing)" off \
		MODSKINNY	"Enable mod_skinny Skinny Support" on \
		MODMEMCACHE	"Enable mod_memcache" on \
		MODMULTICAST	"Enable mod_event_multicast" on \
		MODNIBBLEBILL   "Enable mod_nibblebill (billing)" on \
		MODPORTAUDIO    "Enable mod_portaudio" on \
		MODPASTREAM	"Enable mod_portaudio_stream (new)" on \
		MODSHELLSTREAM	"Enable mod_shell_stream (new)" on \
		MODPERL		"Enable mod_perl (perl support)" off \
		MODPYTHON	"Enable mod_python (python)" off \
		MODCURL		"Enable mod_curl" off \
		MODXMLCURL	"Enable mod_xml_curl" off \
		MODDISTRIBUTOR	"Enable mod_distributor " off \
		MODSNAPSHOT	"Enable mod_snapshot (testing)" off \
		MODSAYDE	"Enable mod_say_de (German support)" off \
		MODSAYES	"Enable mod_say_se (Spanish support)" off \
		MODSAYEN	"Enable mod_say_en (English support)" on \
		MODSAYHU	"Enable mod_say_hu (Hungarian support)" off \
		MODSAYFR	"Enable mod_say_fr (French support)" off \
		MODSAYIT	"Enable mod_say_it (Italian support)" off \
		MODSAYNL	"Enable mod_say_nl (Dutch support)" off \
		MODSAYRU	"Enable mod_say_ru (Russian support)" on \
		MODSAYTH	"Enable mod_say_th (Thi support)" off \
		MODSAYZH	"Enable mod_say_zh (Chinese support)" off \
		EXTENSIONS	"Include Default User Extensions" off \
		MODCALLCENTER	"Enable mod_callcenter (new)" on \
		ZRTP		"ENABLE ZRTP (VOIP ENCRYPTION)(NEW)(TEST)" off

.include <bsd.port.options.mk>

.if ${OSVERSION} < 700000
BROKEN=	Does not compile on FreeBSD < 7.0
.endif

.if ${ARCH} == "amd64"
CFLAGS+=	-fPIC
.endif

.for i in MODFLITE MODPOCKETSPHINX MODCIDLOOKUP MODDPDIRECTORY MODEASYROUTE MODLCR MODSOUNDTOUCH \
	MODRSS MODSNOM MODAVMD MODVMD MODSPY MODAMRWB MODCELT MODMULTICAST MODPORTAUDIO MODCURL MODXMLCURL \
	MODSAYDE MODSAYEN MODSAYES MODSAYFR MODSAYHU MODSAYIT MODSAYNL MODSAYRU MODSAYTH MODSAYZH \
	MODNIBBLEBILL MODDINGALING MODDIRECTORY MODMEMCACHE MODPASTREAM MODSHELLSTREAM \
	MODSILK MODUNIMRCP MODTTSCMDLINE MODDISTRIBUTOR MODSNAPSHOT MODSKINNY EXTENSIONS MODCALLCENTER MODCODEC2
.if !defined(WITH_${i})
PLIST_SUB+=	WITH_${i}="@comment "
.else
PLIST_SUB+=	WITH_${i}=""
.endif
.endfor

.if !defined(WITH_MODFREETDM)
PLIST_SUB+=	 WITH_MODFREETDM="@comment "
.else
.if ${OSVERSION} < 703000 || (${OSVERSION} >= 800000 && ${OSVERSION} < 800108)
IGNORE=	sorry you can not use mod_freetdm on this version of freebsd ( dahdi support broken ) please update
.endif
PLIST_SUB+=	WITH_MODFREETDM=""
CONFIGURE_ARGS+=	--with-libpri
BUILD_DEPENDS+=	libpri>=1.2.0:${PORTSDIR}/misc/libpri \
		${LOCALBASE}/include/dahdi/wctdm_user.h:${PORTSDIR}/misc/dahdi
LIB_DEPENDS+=	pri:${PORTSDIR}/misc/libpri
RUN_DEPENDS+=	${LOCALBASE}/include/dahdi/wctdm_user.h:${PORTSDIR}/misc/dahdi
.endif

.if !defined(WITH_MODSHOUT)
PLIST_SUB+=	WITH_MODSHOUT="@comment "
.else
PLIST_SUB+=	WITH_MODSHOUT=""
LIB_DEPENDS+=	vorbis:${PORTSDIR}/audio/libvorbis
.endif

.if !defined(WITH_MODPERL)
PLIST_SUB+=	WITH_MODPERL="@comment "
.else
PLIST_SUB+=	WITH_MODPERL=""
LIB_DEPENDS+=	gdbm:${PORTSDIR}/databases/gdbm \
		db:${PORTSDIR}/databases/db42
.endif

.if !defined(WITH_MODFAX)
PLIST_SUB+=	WITH_MODFAX="@comment "
.else
PLIST_SUB+=	WITH_MODFAX=""
LIB_DEPENDS+=	jpeg:${PORTSDIR}/graphics/jpeg
.endif

.if !defined(WITH_MODERLANGEVENT)
PLIST_SUB+=	WITH_MODERLANGEVENT="@comment "
.else
PLIST_SUB+=	WITH_MODERLANGEVENT=""
BUILD_DEPENDS+=	${LOCALBASE}/lib/erlang/usr/include/erl_driver.h:${PORTSDIR}/lang/erlang-lite
.endif

.if !defined(WITH_ZRTP)
PLIST_SUB+=	WITH_ZRTP="@comment "
.else
PLIST_SUB+=	WITH_ZRTP=""
CONFIGURE_ARGS+=	--enable-zrtp
BUILD_DEPENDS+=	${LOCALBASE}/lib/libzrtp.a:${PORTSDIR}/devel/libzrtp
RUN_DEPENDS+=	${LOCALBASE}/lib/libzrtp.a:${PORTSDIR}/devel/libzrtp
.endif

.if !defined(WITH_MODPYTHON)
PLIST_SUB+=	WITH_MODPYTHON="@comment "
.else
PLIST_SUB+=	WITH_MODPYTHON=""
USE_PYTHON=	yes
.endif

pre-configure:
	@${REINPLACE_CMD} -e 's|pkgconfigdir = $$(libdir)/pkgconfig|pkgconfigdir = ${PREFIX}/libdata/pkgconfig|g' ${WRKSRC}/libs/*/Makefile.am
	@${REINPLACE_CMD} -e 's|pkgconfigdir   = $$(libdir)/pkgconfig|pkgconfigdir = ${PREFIX}/libdata/pkgconfig|g' ${WRKSRC}/libs/*/Makefile.am
	@${REINPLACE_CMD} -e 's|pkgconfigdir = $$(libdir)/pkgconfig|pkgconfigdir = ${PREFIX}/libdata/pkgconfig|g' ${WRKSRC}/Makefile.am
	@${REINPLACE_CMD} -e 's|base=http://files.freeswitch.org/downloads/libs/|base=file://${DISTDIR}/${DIST_SUBDIR}/|g' ${WRKSRC}/build/getlib.sh.in
	cd ${WRKSRC} && ./rebootstrap.sh

post-configure:
.for i in mod_unimrcp mod_flite mod_pocketsphinx
.if defined(WITH_${i:C/_//g:U})
	@${REINPLACE_CMD} -e 's|#\(asr_tts/${i}\)|\1|g' ${WRKSRC}/modules.conf
.endif
.endfor
.if defined(WITH_MODTTSCMDLINE)
	@${REINPLACE_CMD} -e 's|#asr_tts/mod_tts_commandline|asr_tts/mod_tts_commandline|g' ${WRKSRC}/modules.conf
.endif
.for i in mod_cidlookup mod_easyroute mod_fax mod_lcr mod_soundtouch mod_rss mod_snom \
	mod_vmd mod_avmd mod_spy mod_curl mod_nibblebill mod_memcache mod_directory mod_distributor \
	mod_snapshot mod_callcenter
.if defined(WITH_${i:C/_//g:U})
	@${REINPLACE_CMD} -e 's|#\(applications/${i}\)|\1|g' ${WRKSRC}/modules.conf
.endif
.endfor
.for i in mod_amrwb mod_celt mod_silk mod_codec2
.if defined(WITH_${i:C/_//g:U})
	@${REINPLACE_CMD} -e 's|#\(codecs/${i}\)|\1|g' ${WRKSRC}/modules.conf
.endif
.endfor
.for i in  mod_shell_stream mod_shout
.if defined(WITH_${i:C/_//g:U})
	@${REINPLACE_CMD} -e 's|#\(formats/${i}\)|\1|g' ${WRKSRC}/modules.conf
.endif
.endfor
.if defined(WITH_MODPASTREAM)
	@${REINPLACE_CMD} -e 's|#formats/mod_portaudio_stream|formats/mod_portaudio_stream|g' ${WRKSRC}/modules.conf
.endif
.for i in mod_say_de mod_say_es mod_say_en mod_say_fr mod_say_hu mod_say_it mod_say_nl mod_say_ru mod_say_th mod_say_zh
.if defined(WITH_${i:C/_//g:U})
	@${REINPLACE_CMD} -e 's|#\(say/${i}\)|\1|g' ${WRKSRC}/modules.conf
.endif
.endfor
.for i in mod_perl mod_python
.if defined(WITH_${i:C/_//g:U})
	@${REINPLACE_CMD} -e 's|#\(languages/${i}\)|\1|g' ${WRKSRC}/modules.conf
.endif
.endfor
.for i in mod_skinny mod_portaudio mod_dingaling
.if defined(WITH_${i:C/_//g:U})
	@${REINPLACE_CMD} -e 's|#\(endpoints/${i}\)|\1|g' ${WRKSRC}/modules.conf
.endif
.endfor
.if defined(WITH_MODDPDIRECTORY)
	@${REINPLACE_CMD} -e 's|#dialplans/mod_dialplan_directory|dialplans/mod_dialplan_directory|g' ${WRKSRC}/modules.conf
.endif
.if defined(WITH_MODFREETDM)
	@${REINPLACE_CMD} -e 's|#../../libs/freetdm/mod_freetdm|../../libs/freetdm/mod_freetdm|g' ${WRKSRC}/modules.conf
.endif
.if defined(WITH_MODMULTICAST)
	@${REINPLACE_CMD} -e 's|#event_handlers/mod_event_multicast|event_handlers/mod_event_multicast|g' ${WRKSRC}/modules.conf
.endif
.if defined(WITH_MODERLANGEVENT)
	@${REINPLACE_CMD} -e 's|#event_handlers/mod_erlang_event|event_handlers/mod_erlang_event|g' ${WRKSRC}/modules.conf
.endif
.if defined(WITH_MODXMLCURL)
	@${REINPLACE_CMD} -e 's|#xml_int/mod_xml_curl|xml_int/mod_xml_curl|g' ${WRKSRC}/modules.conf
.endif

pre-install:
	@${SH} ${PKGINSTALL} ${BASE_PORTNAME} PRE-INSTALL

.if !defined(WITH_EXTENSIONS)
	@${FIND} ${WRKSRC}/conf/directory/default -type f -name '*.xml' -delete
.endif

post-install:
.if !defined(WITH_EXTENSIONS)
	@${MKDIR} ${PREFIX}/etc/${BASE_PORTNAME}/conf/directory/default
.endif
	@${MKDIR} ${PREFIX}/share/${BASE_PORTNAME}/sounds
	@${CHOWN} -R ${FREESWITCH_USER}:${FREESWITCH_GROUP} ${PREFIX}/etc/${BASE_PORTNAME}
	@${CHOWN} -R ${FREESWITCH_USER}:${FREESWITCH_GROUP} ${PREFIX}/share/${BASE_PORTNAME}
	@${CHOWN} -R ${FREESWITCH_USER}:${FREESWITCH_GROUP} ${VARBASE}/db/${BASE_PORTNAME}
	@${CHOWN} -R ${FREESWITCH_USER}:${FREESWITCH_GROUP} ${VARBASE}/log/${BASE_PORTNAME}
	@${CHOWN} -R ${FREESWITCH_USER}:${FREESWITCH_GROUP} ${VARBASE}/${BASE_PORTNAME}
	@${CHOWN} -R ${FREESWITCH_USER}:${FREESWITCH_GROUP} ${VARBASE}/run/${BASE_PORTNAME}
	@${CHOWN} -R ${FREESWITCH_USER}:${FREESWITCH_GROUP} ${VARBASE}/spool/${BASE_PORTNAME}
	@for i in $$(${FIND} ${PREFIX}/etc/${BASE_PORTNAME}/conf/ -type f -name '*.sample'); do if [ ! -f $${i%.sample} ]; then ${CP} -p $$i $${i%.sample}; fi; done
	@${CHMOD} -R 775 ${PREFIX}/etc/${BASE_PORTNAME}/conf
	@${CHMOD} -R 775 ${VARBASE}/log/${BASE_PORTNAME}
	@${CHMOD} -R 775 ${VARBASE}/${BASE_PORTNAME}
	@${ECHO_MSG} "This port chown -R various directories ${FREESWITCH_USER}:${FREESWITCH_GROUP} "
	@${ECHO_MSG} "this is for port security . in the event something should stop working."
	@${ECHO_MSG} "Please take the time to check chownership of the dir's"
	@${ECHO_MSG} "${VARBASE}/db/${BASE_PORTNAME} ${VARBASE}/log/${BASE_PORTNAME} ${VARBASE}/${BASE_PORTNAME} ${PREFIX}/etc/${BASE_PORTNAME}"
	@${CAT} ${PKGMESSAGE}

.include <bsd.port.mk>
