# Copyright 2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

WX_GTK_VER="3.2-gtk3"

inherit cmake wxwidgets virtualx

# libnyquist doesn't have tags, instead use the specific submodule commit tenacity does
LIBNYQUIST_COMMIT="d4fe08b079538a2fd79277ef1a83434663562f04"

DESCRIPTION="Easy-to-use, privacy-friendly, FLOSS, cross-platform multi-track audio editor"
HOMEPAGE="https://tenacityaudio.org/"
SRC_URI="https://codeberg.org/tenacityteam/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz
	https://codeberg.org/tenacityteam/libnyquist/archive/${LIBNYQUIST_COMMIT}.tar.gz -> ${PN}-libnyquist-${PV}.tar.gz"

# codeberg doesn't append tag
S="${WORKDIR}/${PN}"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64"

IUSE="alsa ffmpeg +midi +lame +id3tag +mp3 +mp2 +flac +ogg +vorbis +sbsms +soundtouch +ladspa +lv2 vamp +vst2"

DEPEND="
	dev-libs/glib:2
	x11-libs/gtk+:3
	x11-libs/wxGTK:${WX_GTK_VER}=[X]
	media-libs/alsa-lib
	dev-libs/expat
	flac? ( media-libs/flac )
	sys-devel/gettext
	media-sound/lame
	id3tag? ( media-libs/libid3tag )
	mp3? ( media-libs/libmad )
	ogg? ( media-libs/libogg )
	media-libs/libsndfile
	vorbis? ( media-libs/libvorbis )
	lv2? (
		media-libs/lilv
		media-libs/lv2
	)
	midi? (
		media-libs/portaudio
		media-libs/portmidi
	)
	dev-libs/serd
	dev-libs/sord
	soundtouch? ( media-libs/libsoundtouch )
	media-libs/soxr
	dev-db/sqlite
	media-libs/sratom
	media-libs/suil
	media-libs/taglib
	mp2? ( media-sound/twolame )
	media-libs/vamp-plugin-sdk
	x11-libs/wxGTK
	sys-libs/zlib
	ffmpeg? ( media-video/ffmpeg )
	sbsms? ( media-libs/libsbsms )
	vamp? ( media-libs/vamp-plugin-sdk )
"
RDEPEND="${DEPEND}"

src_unpack() {
	default

	# otherwise build will try to run git --submodule --init
	rmdir "${S}/lib-src/libnyquist" || die
	ln -s "${WORKDIR}/libnyquist" "${S}/lib-src/libnyquist"
}

src_prepare() {
	cmake_src_prepare
}

src_configure() {
	setup-wxwidgets

	local mycmakeargs=(
		-DVCPKG=OFF

		# this is handled separately
		-DSCCACHE=OFF
		-DCCACHE=OFF

		# Pre-Compiled Headers needs to stay off, even with ccache
		# otherwise it causes missing definitions
		-DPCH=OFF
		-DPERFORM_CODESIGN=OFF

		-DMIDI=$(usex midi ON OFF)
		-DID3TAG=$(usex id3tag ON OFF)
		-DMP3_DECODING=$(usex mp3 ON OFF)
		-DMP2=$(usex mp2 ON OFF)
		-DOGG=$(usex ogg ON OFF)
		-DVORBIS=$(usex vorbis ON OFF)
		-DFLAC=$(usex flac ON OFF)
		-DSBSMS=$(usex sbsms ON OFF)
		-DSOUNDTOUCH=$(usex soundtouch ON OFF)
		-DFFMPEG=$(usex ffmpeg ON OFF)
		-DLADSPA=$(usex ladspa ON OFF)
		#-DAUDIO_UNITS=OFF  # option only exists on MacOS
		-DLV2=$(usex lv2 ON OFF)
		-DVAMP=$(usex vamp ON OFF)
		-DVST2=$(usex vst2 ON OFF)

		# TODO: 'doc' use flag
		#-DMANUAL_PATH=$(usex doc PATH)
	)

	cmake_src_configure
}

src_test() {
	virtx cmake_src_test
}