# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit autotools flag-o-matic multilib-minimal toolchain-funcs

DESCRIPTION="Flite text to speech engine"
HOMEPAGE="http://www.festvox.org/flite/ https://github.com/festvox/flite"
SRC_URI="https://github.com/festvox/flite/archive/v${PV}.tar.gz -> ${P}.tar.gz
	voices? (
		http://www.festvox.org/${PN}/packed/${P}/voices/cmu_indic_ben_rm.flitevox
		http://www.festvox.org/${PN}/packed/${P}/voices/cmu_indic_guj_ad.flitevox
		http://www.festvox.org/${PN}/packed/${P}/voices/cmu_indic_guj_dp.flitevox
		http://www.festvox.org/${PN}/packed/${P}/voices/cmu_indic_guj_kt.flitevox
		http://www.festvox.org/${PN}/packed/${P}/voices/cmu_indic_hin_ab.flitevox
		http://www.festvox.org/${PN}/packed/${P}/voices/cmu_indic_kan_plv.flitevox
		http://www.festvox.org/${PN}/packed/${P}/voices/cmu_indic_mar_aup.flitevox
		http://www.festvox.org/${PN}/packed/${P}/voices/cmu_indic_mar_slp.flitevox
		http://www.festvox.org/${PN}/packed/${P}/voices/cmu_indic_pan_amp.flitevox
		http://www.festvox.org/${PN}/packed/${P}/voices/cmu_indic_tam_sdr.flitevox
		http://www.festvox.org/${PN}/packed/${P}/voices/cmu_indic_tel_kpn.flitevox
		http://www.festvox.org/${PN}/packed/${P}/voices/cmu_indic_tel_sk.flitevox
		http://www.festvox.org/${PN}/packed/${P}/voices/cmu_indic_tel_ss.flitevox
		http://www.festvox.org/${PN}/packed/${P}/voices/cmu_us_aew.flitevox
		http://www.festvox.org/${PN}/packed/${P}/voices/cmu_us_ahw.flitevox
		http://www.festvox.org/${PN}/packed/${P}/voices/cmu_us_aup.flitevox
		http://www.festvox.org/${PN}/packed/${P}/voices/cmu_us_awb.flitevox
		http://www.festvox.org/${PN}/packed/${P}/voices/cmu_us_axb.flitevox
		http://www.festvox.org/${PN}/packed/${P}/voices/cmu_us_bdl.flitevox
		http://www.festvox.org/${PN}/packed/${P}/voices/cmu_us_clb.flitevox
		http://www.festvox.org/${PN}/packed/${P}/voices/cmu_us_eey.flitevox
		http://www.festvox.org/${PN}/packed/${P}/voices/cmu_us_fem.flitevox
		http://www.festvox.org/${PN}/packed/${P}/voices/cmu_us_gka.flitevox
		http://www.festvox.org/${PN}/packed/${P}/voices/cmu_us_jmk.flitevox
		http://www.festvox.org/${PN}/packed/${P}/voices/cmu_us_ksp.flitevox
		http://www.festvox.org/${PN}/packed/${P}/voices/cmu_us_ljm.flitevox
		http://www.festvox.org/${PN}/packed/${P}/voices/cmu_us_lnh.flitevox
		http://www.festvox.org/${PN}/packed/${P}/voices/cmu_us_rms.flitevox
		http://www.festvox.org/${PN}/packed/${P}/voices/cmu_us_rxr.flitevox
		http://www.festvox.org/${PN}/packed/${P}/voices/cmu_us_slp.flitevox
		http://www.festvox.org/${PN}/packed/${P}/voices/cmu_us_slt.flitevox
	)"

LICENSE="BSD freetts public-domain regexp-UofT BSD-2"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 ~ia64 ~loong ~mips ppc ppc64 ~riscv sparc x86"
IUSE="alsa oss pulseaudio test voices"
REQUIRED_USE="test? ( alsa )"
RESTRICT="!test? ( test )"

DEPEND="
	pulseaudio? ( media-libs/libpulse[${MULTILIB_USEDEP}] )
	!pulseaudio? ( alsa? ( >=media-libs/alsa-lib-1.0.27.2[${MULTILIB_USEDEP}] ) )
"
RDEPEND="${DEPEND}"

PATCHES=(
	"${FILESDIR}"/${PN}-1.4-audio-interface.patch
	"${FILESDIR}"/${PN}-2.2-backport-pr30.patch
	"${FILESDIR}"/${PN}-2.2-make-4.4.patch
)

get_audio() {
	if use pulseaudio; then
		echo pulseaudio
	elif use alsa; then
		echo alsa
	elif use oss; then
		echo oss
	else
		echo none
	fi
}

pkg_pretend() {
	[[ ${MERGE_TYPE} != binary ]] && use test && tc-check-openmp
}

pkg_setup() {
	[[ ${MERGE_TYPE} != binary ]] && use test && tc-check-openmp
}

src_unpack() {
	for file in ${A}; do
		case "${file}" in
			*.flitevox)
				cp -av "${DISTDIR}/${file}" "${WORKDIR}/" || die "Unable to copy ${file}"
				;;
			*)
				unpack "${file}"
				;;
		esac
	done
}

src_prepare() {
	default
	sed -i main/Makefile \
		-e '/-rpath/s|$(LIBDIR)|$(INSTALLLIBDIR)|g' \
		|| die
	mv configure.{in,ac} || die
	eautoreconf

	# custom makefiles
	multilib_copy_sources
}

src_configure() {
	# lto-type-mismatch
	filter-lto

	multilib-minimal_src_configure
}

multilib_src_configure() {
	local myconf=(
		--enable-shared
		--with-audio=$(get_audio)
	)
	econf "${myconf[@]}"
}

multilib_src_compile() {
	emake -j1 CC="$(tc-getCC)" CFLAGS="${CFLAGS}"
}

multilib_src_install_all() {
	dodoc ACKNOWLEDGEMENTS README.md

	rm -rf "${D}"/usr/lib*/*.a

	if use voices; then
		insinto /usr/share/flite
		doins "${WORKDIR}"/*.flitevox
	fi
}

pkg_postinst() {
	if [[ "$(get_audio)" = "none" ]]; then
		ewarn "flite is built without audio support. Enable the"
		ewarn "alsa, oss, or pulseaudio USE flags for audio support."
	fi
}