PORTNAME=	speech-dispatcher
DISTVERSION=	0.12.1
CATEGORIES?=	accessibility audio
MASTER_SITES=	https://github.com/brailcom/speechd/releases/download/${PORTVERSION}/

MAINTAINER=	ports@MidnightBSD.org
COMMENT?=	Common interface to speech synthesis
WWW=		https://devel.freebsoft.org/speechd

LICENSE=	gpl2 lgpl2.1
LICENSE_COMB=	multi

BUILD_DEPENDS=	help2man:misc/help2man
LIB_DEPENDS=	libdotconf.so:devel/dotconf \
		libsndfile.so:audio/libsndfile

USES=		gettext gmake gnome libtool localbase makeinfo pathfix \
		pkgconfig
USE_GNOME=	glib20 intltool
USE_LDCONFIG=	yes

GNU_CONFIGURE=	yes
CONFIGURE_ARGS=	--disable-ltdl \
		--with-espeak-ng=no \
		--with-baratinoo=no \
		--with-kali=no \
		--with-ibmtts=no \
		--with-oss \
		--with-voxin=no \
		--without-systemdsystemunitdir
INSTALL_TARGET=	install-strip

.if !defined(_SD_PYTHON)

CONFIGURE_ARGS+=--disable-python
TEST_TARGET=	check
TEST_WRKSRC=	${WRKSRC}/src/tests

INFO=		spd-say speech-dispatcher speech-dispatcher-cs ssip
PORTDOCS=	ANNOUNCE AUTHORS FAQ NEWS README* TODO

OPTIONS_DEFINE=		ALSA AO DOCS ESPEAK FESTIVAL FLITE NAS PIPEWIRE \
			PULSEAUDIO
OPTIONS_DEFAULT=	ESPEAK PULSEAUDIO
OPTIONS_SUB=		yes

ALSA_LIB_DEPENDS=	libasound.so:audio/alsa-lib
ALSA_CONFIGURE_WITH=	alsa

AO_LIB_DEPENDS=		libao.so:audio/libao
AO_CONFIGURE_WITH=	libao

ESPEAK_LIB_DEPENDS=	libespeak-ng.so:audio/espeak-ng
ESPEAK_CONFIGURE_WITH=	espeak

FESTIVAL_DESC=		Festival Speech Synthesis System support
FESTIVAL_RUN_DEPENDS=	${LOCALBASE}/share/festival/lib/${PORTNAME}.scm:audio/festival-freebsoft-utils \
			festival:audio/festival

FLITE_DESC=		Flite speech synthesis engine support
FLITE_LIB_DEPENDS=	libflite.so:audio/flite
FLITE_CONFIGURE_WITH=	flite

NAS_LIB_DEPENDS=	libaudio.so:audio/nas
NAS_USES=		xorg
NAS_USE=		XORG=xau
NAS_CONFIGURE_WITH=	nas

PIPEWIRE_LIB_DEPENDS=		libpipewire-0.3.so:multimedia/pipewire
PIPEWIRE_CONFIGURE_WITH=	pipewire

PULSEAUDIO_LIB_DEPENDS=		libpulse.so:audio/pulseaudio
PULSEAUDIO_CONFIGURE_WITH=	pulse

_SD_ETCFILES=	clients/emacs.conf \
		modules/cicero.conf \
		modules/dtk-generic.conf \
		modules/epos-generic.conf \
		modules/espeak-mbrola-generic.conf \
		modules/espeak-ng-mbrola-generic.conf \
		modules/espeak-ng-mbrola.conf \
		modules/espeak-ng.conf \
		modules/espeak.conf \
		modules/festival.conf \
		modules/flite.conf \
		modules/llia_phon-generic.conf \
		modules/mary-generic.conf \
		modules/mimic3-generic.conf \
		modules/openjtalk.conf \
		modules/swift-generic.conf \
		speechd.conf

.include <bsd.mport.options.mk>

post-patch:
# ibmtts.c is omitted, because it is disabled by default
.  for f in espeak.c generic.c ivona.c openjtalk.c pico.c
	${REINPLACE_CMD} -e 's|/usr/share|${LOCALBASE}/share|g' \
		${WRKSRC}/src/modules/${f}
.  endfor
	${REINPLACE_CMD} -e 's|/etc|${LOCALBASE}/etc|g ; \
		s|/usr/bin|${LOCALBASE}/bin|g ; \
		s|/usr/share|${LOCALBASE}/share|g' \
		${WRKSRC}/config/modules/*.conf

post-install:
.  for f in ${_SD_ETCFILES}
	@${MV} ${ETCDIR}/${f} ${ETCDIR}/${f}.sample
.  endfor
	@${RM} -r ${DATADIR}/conf
	@${RMDIR} ${DATADIR} || ${TRUE}
	${MKDIR} ${DOCSDIR}
	${INSTALL_DATA} ${PORTDOCS:S|^|${WRKSRC}/|} ${DOCSDIR}

.else

BUILD_DEPENDS+=	${PYTHON_PKGNAMEPREFIX}xdg>0:devel/py-xdg@${PY_FLAVOR}
LIB_DEPENDS+=	libspeechd.so:accessibility/speech-dispatcher
RUN_DEPENDS+=	${PYTHON_PKGNAMEPREFIX}xdg>0:devel/py-xdg@${PY_FLAVOR}

USES+=		python shebangfix
USE_PYTHON=	flavors

SHEBANG_FILES=	src/api/python/speechd_config/spd-conf

NO_ARCH=	yes
PORTSCOUT=	ignore:1

.endif

.include <bsd.port.mk>
