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

EAPI=7

inherit autotools desktop toolchain-funcs xdg-utils

if [[ ${PV} == "99999999" ]] ; then
	inherit git-r3
	EGIT_REPO_URI="https://git.tartarus.org/simon/puzzles.git"
	GENTOO_ICONS="20160315"
	SRC_URI="https://dev.gentoo.org/~np-hardass/distfiles/${PN}/${PN}-icons-${GENTOO_ICONS}.tar.xz"
else
	MAGIC=e2135d5
	SRC_URI="https://www.chiark.greenend.org.uk/~sgtatham/puzzles/puzzles-${PV}.${MAGIC}.tar.gz"
	S=${WORKDIR}/puzzles-${PV}.${MAGIC}
	KEYWORDS="~amd64 ~x86"
fi

DESCRIPTION="Simon Tatham's Portable Puzzle Collection"
HOMEPAGE="https://www.chiark.greenend.org.uk/~sgtatham/puzzles/"

LICENSE="MIT"
SLOT="0"
IUSE="+doc"

COMMON_DEPEND="
	x11-libs/gtk+:3"

RDEPEND="${COMMON_DEPEND}
	x11-misc/xdg-utils" # Used by builtin help patch

DEPEND="${COMMON_DEPEND}"

BDEPEND="
	dev-lang/perl
	virtual/pkgconfig
	doc? ( >=app-text/halibut-1.2 )"

PATCHES=( "${FILESDIR}/${PN}-20161207-builtin-help.patch" )

src_unpack() {
	default
	if [[ ${PV} == "99999999" ]]; then
		git-r3_src_unpack
	fi
}

src_prepare() {
	default

	sed -i \
		-e 's|-Werror||g' \
		configure.ac || die
	sed -i \
		-e 's/-O2 -Wall .* -g/-Wall/' \
		-e "s/libstr =/libstr = '\$(LDFLAGS) ' ./" \
		mkfiles.pl || die
	./mkfiles.pl || die
	eautoreconf

	# Import icons from latest Gentoo tarball for live
	if [[ ${PV} == "99999999" ]]; then
		cp -R ../${PN}-icons/icons . || die
	fi
}

src_configure() {
	econf \
		--program-prefix="${PN}_" \
		--with-gtk=3
}

src_compile() {
	emake CC="$(tc-getCC)"
	if use doc ; then
		halibut --text --html --info --pdf --ps puzzles.but || die
	fi
}

src_install() {
	default

	local file name
	for file in *.R ; do
		[[ ${file} == "nullgame.R" ]] && continue
		name=$(awk -F: '/exe:/ { print $3 }' "${file}")
		file=${file%.R}
		newicon -s 48 icons/${file}-48d24.png ${PN}_${file}.png
		make_desktop_entry "${PN}_${file}" "${name}" "${PN}_${file}" "LogicGame;X-${PN};"
	done

	if use doc ; then
		local DOCS=( puzzles.{pdf,ps,txt} )
		local HTML_DOCS=( *.html )
		einstalldocs
		doinfo puzzles.info{,-1,-2,-3}
	fi

	insinto /etc/xdg/menus/applications-merged
	doins "${FILESDIR}/${PN}.menu"
	insinto /usr/share/desktop-directories
	doins "${FILESDIR}/${PN}.directory"
}

pkg_postinst() {
	xdg_icon_cache_update
}

pkg_postrm() {
	xdg_icon_cache_update
}