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

EAPI=8

inherit toolchain-funcs xdg

DESCRIPTION="Patcher for IPS and BPS files"
HOMEPAGE="https://www.smwcentral.net/?p=section&a=details&id=11474"

MY_PV="${PV##*_p}"
SRC_URI="https://git.disroot.org/Sir_Walrus/Flips/archive/v${MY_PV}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/flips"

LICENSE="GPL-3"
SLOT="0"
KEYWORDS="~amd64"
IUSE="+gtk +pgo"
RDEPEND="
	dev-libs/libdivsufsort
	gtk? (
		x11-libs/gtk+:3
	)
"
DEPEND="${RDEPEND}"
BDEPEND="
	virtual/pkgconfig
"

src_prepare() {
	# Unbundle divsuf
	sed -e '/^DIVSUF :=/{N;N;d}' \
		-i Makefile || die

	# Avoid traversing the filesystem to find a git repository
	sed -e '/^COMMIT_COUNT :=/s/:=.*$/:=/' \
		-i Makefile || die

	default
}

src_configure() { :; }

src_compile() {
	local pkg_config="$(tc-getPKG_CONFIG)"
	local DIVSUF_CFLAGS="$("${pkg_config}" --cflags libdivsufsort)"
	local DIVSUF_LIBS="$("${pkg_config}" --libs libdivsufsort)"
	local myemakeargs=(
		CXX="$(tc-getCXX)"
		PKG_CONFIG="$pkg_config"
		CFLAGS="${CPPFLAGS} ${DIVSUF_CFLAGS} ${CXXFLAGS}"
		LFLAGS="${LDFLAGS} ${DIVSUF_LIBS}"

		TARGET=$(usex gtk gtk cli)
	)
	if ! use pgo; then
		emake "${myemakeargs[@]}"
	else
		# From make-linux.sh
		emake "${myemakeargs[@]}" CFLAGS="${CXXFLAGS} -fprofile-generate"
		einfo "Running tests ..."
		./flips --create --bps-delta \
			profile/firefox-10.0esr.tar \
			profile/firefox-17.0esr.tar /dev/null || die
		./flips --create --bps-delta-moremem \
			profile/firefox-10.0esr.tar \
			profile/firefox-17.0esr.tar /dev/null || die
		rm flips || die
		emake "${myemakeargs[@]}" CFLAGS="${CXXFLAGS} -fprofile-use"
	fi
}

src_install() {
	einstalldocs

	if ! use gtk; then
		dobin flips
	else
		emake TARGET=gtk DESTDIR="${ED}" install
	fi
}