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

EAPI=8

MYP=${PN}$(ver_cut 1-2)
SHVER=$(ver_rs 1 '' $(ver_cut 1-2))

inherit autotools flag-o-matic multilib toolchain-funcs

DESCRIPTION="Extension to Tk, adding new widgets, geometry managers, and misc commands"
HOMEPAGE="https://sourceforge.net/projects/wize/"
SRC_URI="https://downloads.sourceforge.net/wize/${PN}-src-${PV}.zip
	https://dev.gentoo.org/~tupone/distfiles/${P}-debian-patches.tar.gz"

IUSE="jpeg static-libs"
SLOT="0/${SHVER}"
LICENSE="BSD"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"

DEPEND="
	dev-lang/tk:0=
	jpeg? ( media-libs/libjpeg-turbo:0= )
	x11-libs/libX11"
RDEPEND="${DEPEND}"
BDEPEND="app-arch/unzip"

S="${WORKDIR}"/${MYP}

MAKEOPTS+=" -j1"

PATCHES=(
	"${WORKDIR}"/patches/02-debian-all.patch
	"${WORKDIR}"/patches/03-fedora-patch-2.patch
	"${WORKDIR}"/patches/04-fedora-tk8.5.6.patch
	"${WORKDIR}"/patches/05-tk8.5-zoomstack.patch
	"${WORKDIR}"/patches/doc-typos.patch
	"${WORKDIR}"/patches/tcl8.6.patch
	"${WORKDIR}"/patches/tk8.6.patch
	"${WORKDIR}"/patches/install.patch
	"${WORKDIR}"/patches/usetclint.patch
	"${WORKDIR}"/patches/usetkint.patch
	"${WORKDIR}"/patches/table.patch
	"${WORKDIR}"/patches/ldflags.patch
	"${WORKDIR}"/patches/pkgindex.patch
	"${WORKDIR}"/patches/decls.patch
	"${WORKDIR}"/patches/bltnsutil.patch
	"${WORKDIR}"/patches/blthash.patch
	"${WORKDIR}"/patches/const.patch
	"${WORKDIR}"/patches/uninitialized.patch
	"${WORKDIR}"/patches/unused.patch
	"${WORKDIR}"/patches/pointertoint.patch
	"${WORKDIR}"/patches/autoreconf.patch
	"${WORKDIR}"/patches/switch.patch
	"${FILESDIR}"/${P}-gentoo.patch
	"${FILESDIR}"/${P}-darwin.patch
	"${FILESDIR}"/${P}-gbsd.patch
	"${FILESDIR}"/${P}-lto.patch
	"${FILESDIR}"/${P}-parallelMake.patch
)

src_prepare() {
	default
	rm acconfig.h || die
	# Set the correct libdir and drop RPATH
	sed \
		-e "s:\(^libdir=\${exec_prefix}/\)lib:\1$(get_libdir):" \
		-e 's:LD_RUN_PATH=.*$:LD_RUN_PATH="":g' \
		-i configure.in || die "sed configure* failed"
	sed \
		-e "/^scriptdir =/s:lib:$(get_libdir):" \
		-i Makefile.in demos/Makefile.in || die "sed Makefile.in failed"

	sed \
		-e "/AR/s:ar:$(tc-getAR):g" \
		-e 's:0444:0644:g' \
		-i generic/Makefile.in || die

	append-cflags -fPIC

	mv configure.{in,ac} || die
	eautoreconf
}

src_configure() {
	# bug #943722
	append-cflags -std=gnu17

	LC_ALL=C \
	econf \
		--x-includes="${EPREFIX}/usr/include" \
		--x-libraries="${EPREFIX}/usr/$(get_libdir)" \
		--with-blt="${EPREFIX}/usr/$(get_libdir)" \
		--with-tcl="${EPREFIX}/usr/$(get_libdir)" \
		--with-tk="${EPREFIX}/usr/$(get_libdir)" \
		--with-tclincls="${EPREFIX}/usr/include" \
		--with-tkincls="${EPREFIX}/usr/include" \
		--with-tcllibs="${EPREFIX}/usr/$(get_libdir)" \
		--with-tklibs="${EPREFIX}/usr/$(get_libdir)" \
		--with-cflags="${CFLAGS}" \
		--with-gnu-ld \
		$(use_enable jpeg) \
		--with-x \
		CC="$(tc-getCC)"
}

src_compile() {
	emake LDFLAGS="${LDFLAGS}"
}

src_install() {
	sed \
		-e "s:\.\./src/bltwish:${EPREFIX}/usr/bin/bltwish:g" \
		-e "s:\.\./bltwish:${EPREFIX}/usr/bin/bltwish:g" \
		-e "s:/usr/local/bin/bltwish:${EPREFIX}/usr/bin/bltwish:g" \
		-e "s:/usr/local/bin/tclsh:${EPREFIX}/usr/bin/tclsh:g" \
		-i demos/{,scripts/}*.tcl || die

	dodir \
		/usr/bin \
		/usr/$(get_libdir)/${MYP}/demos/bitmaps \
		/usr/share/man/mann \
		/usr/include

	emake INSTALL_ROOT="${D}" install

	dodoc NEWS PROBLEMS README
	docinto html
	dodoc html/*.html
	pushd "${ED}"/usr/share/man/mann
	for f in * ; do
		mv ${f} ${f/.n/.nblt} || die
	done
	popd

	# fix for linking against shared lib with -lBLT or -lBLTlite
	dosym libBLT${SHVER}$(get_libname) /usr/$(get_libdir)/libBLT$(get_libname)
	dosym libBLTlite${SHVER}$(get_libname) /usr/$(get_libdir)/libBLTlite$(get_libname)

	use static-libs || \
		find "${ED}"/usr/$(get_libdir) -name "*.a" -print0 | \
		xargs -r -0 rm -fv
}

pkg_preinst() {
	# Fix 'symlink is blocked by a directory' Bug #907270
	rm -rf "${EROOT}"/usr/$(get_libdir)/${MYP}/demos/bitmaps/hand
	rm -rf "${EROOT}"/usr/$(get_libdir)/${MYP}/demos/bitmaps/hand.backup.*
	rm -rf "${EROOT}"/usr/$(get_libdir)/${MYP}/demos/bitmaps/fish
	rm -rf "${EROOT}"/usr/$(get_libdir)/${MYP}/demos/bitmaps/fish.backup.*
	rm -rf "${EROOT}"/usr/$(get_libdir)/${MYP}/demos/images
	rm -rf "${EROOT}"/usr/$(get_libdir)/${MYP}/demos/images.backup.*
	rm -rf "${EROOT}"/usr/$(get_libdir)/${MYP}/demos/scripts
	rm -rf "${EROOT}"/usr/$(get_libdir)/${MYP}/demos/scripts.backup.*
}