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

EAPI=8
LUA_COMPAT=( lua{5-{2..4},jit} )

inherit lua git-r3 toolchain-funcs

DESCRIPTION="a utf-8 support module for Lua and LuaJIT"
HOMEPAGE="https://github.com/starwing/luautf8"
EGIT_REPO_URI="https://github.com/starwing/luautf8"

LICENSE="MIT"
SLOT="0"
IUSE="+system-unicode-data test"

DOCS=(README.md)

REQUIRED_USE="${LUA_REQUIRED_USE}"
RESTRICT="!test? ( test )"

RDEPEND="${LUA_DEPS}"
DEPEND="${RDEPEND}"
BDEPEND="
	${LUA_DEPS}
	lua_targets_luajit? ( dev-lang/luajit[lua52compat] )
	system-unicode-data? ( >=app-i18n/unicode-data-14.0.0 )
	virtual/pkgconfig
"

src_prepare() {
	local ucd="/usr/share/unicode-data" # currently, gentoo have it there
	# N.B.: recheck on bumps. I'd like to make PR with moving it to /usr/share/unicode someday

	sed -i \
		-e "s@UCD/@${ucd}/@" \
		parseucd.lua

	default
}

lua_src_compile() {
	if use system-unicode-data; then
		einfo "Performing regeneration unicode data header against app-i18n/unicode-data with ${ELUA}"
		"${ELUA}" parseucd.lua
	fi

	local compiler=(
		"$(tc-getCC)"
		"${CFLAGS}"
		"-fPIC"
		"${LDFLAGS}"
		"$(lua_get_CFLAGS)"
		"-c lutf8lib.c"
		"-o lutf8lib-${ELUA}.o"
	)
	einfo "${compiler[@]}"
	${compiler[@]} || die

	local linker=(
		"$(tc-getCC)"
		"-shared"
		"${LDFLAGS}"
		"-o lutf8lib-${ELUA}.so"
		"lutf8lib-${ELUA}.o"
	)
	einfo "${linker[@]}"
	${linker[@]} || die
}

src_compile() {
	lua_foreach_impl lua_src_compile
}

lua_src_test() {
	local mytests=(
		"test.lua"
		"test_compat.lua"
		"test_pm.lua"
	)

	for mytest in ${mytests[@]}; do
		LUA_CPATH="${S}/lutf8lib-${ELUA}.so" ${ELUA} ${mytest} || die
	done
}

src_test() {
	lua_foreach_impl lua_src_test
}

lua_src_install() {
	exeinto "$(lua_get_cmod_dir)"
	newexe "lutf8lib-${ELUA}.so" "lua-utf8.so"
}

src_install() {
	lua_foreach_impl lua_src_install

	einstalldocs
}