# SPDX-License-Identifier: CC0-1.0
#
# SPDX-FileContributor: Adrian "asie" Siekierka, 2023, 2024

pkgname=(wf-lua wf-lua-dev)
pkgver=5.4.8
pkgrel=3
epoch=
pkgdesc="Lua scripting language"
arch=("i686" "x86_64" "armv6h" "aarch64")
url="https://www.lua.org"
license=("MIT")
source=(
	"https://www.lua.org/ftp/lua-5.4.8.tar.gz"
	"0011-linenoise.patch"
	"lua-5.4.6-wonderful.patch"
	"msys2-0001-When-running-lua-on-mintty-or-other.patch"
	"msys2-0002-Add-Wl-out-implib-liblua.dll.a-to-AR.patch"
	"msys2-0004-fix-fseek-on-mingw.patch"
	"msys2-link-implib.patch"
)
depends=(runtime-gcc-libs runtime-musl)
makedepends=(runtime-musl-dev runtime-linenoise-dev)
sha256sums=(
	"4f18ddae154e793e46eeab727c59ef1c0c0c2b744e7b94219710d76f530629ae"
	"8a7584ca1d91e4cd4ab93db73fb72c7a03f71851d372a55ae412a59edbe5eb04"
	"SKIP"
	"37246417ce7b1d062cb52012c087793c961527e5b6da5318cf573244a477f528"
	"5f0c29865f9645a61ca62b1860f26ffac8b3458bd5e7b7a9c92daae0927a1914"
	"9a7cb30b9d6f2a0e4479c4235415670686752553647ff63155ab0c61f9db2310"
	"0e9f1fab745c8d6cd1fe37a32c8bd6cca665692aac5c130237e648abef86f632"
)

. "/wf/config/runtime-env-vars.sh"

prepare() {
	cd "lua-$pkgver"
	patch -p1 <../lua-5.4.6-wonderful.patch
	if [ "$WF_HOST_OS" == "linux" ]; then
		patch -p1 <../0011-linenoise.patch
	elif [ "$WF_HOST_OS" == "windows" ]; then
		patch -p1 <../msys2-0001-When-running-lua-on-mintty-or-other.patch
		patch -p1 <../msys2-0002-Add-Wl-out-implib-liblua.dll.a-to-AR.patch
		patch -p1 <../msys2-0004-fix-fseek-on-mingw.patch
		patch -p1 <../msys2-link-implib.patch
	fi
}

build() {
	cd "lua-$pkgver"

	if [ "$WF_HOST_OS" == "windows" ]; then
		make mingw MYCFLAGS="$WF_RUNTIME_INCLUDES -DLUA_ROOT=\\\""$WF_PATH"/\\\"" MYLDFLAGS="$WF_RUNTIME_LDFLAGS"
	else
		make linux MYCFLAGS="$WF_RUNTIME_INCLUDES -DLUA_USE_LINENOISE -DLUA_ROOT=\\\""$WF_PATH"/\\\"" MYLDFLAGS="$WF_RUNTIME_LDFLAGS" MYLIBS="-llinenoise"
	fi
}

package_wf-lua() {
	cd "lua-$pkgver"

	mkdir -p "$pkgdir$WF_DESTDIR"/bin
	cp -a src/lua "$pkgdir$WF_DESTDIR"/bin/wf-lua
	cp -a src/luac "$pkgdir$WF_DESTDIR"/bin/wf-luac
	if [ "$WF_HOST_OS" == "windows" ]; then
		cp -a src/*.dll "$pkgdir$WF_DESTDIR"/bin/
	fi

	mkdir -p "$pkgdir$WF_DESTDIR"/doc
	cp -a doc "$pkgdir$WF_DESTDIR"/doc/wf-lua
}

package_wf-lua-dev() {
	cd "lua-$pkgver"

	mkdir -p "$pkgdir$WF_DESTDIR"/include
	for i in lua.h luaconf.h lualib.h lauxlib.h lua.hpp; do cp -a src/"$i" "$pkgdir$WF_DESTDIR"/include; done

	mkdir -p "$pkgdir$WF_DESTDIR"/lib
	cp -a src/liblua.a "$pkgdir$WF_DESTDIR"/lib/
	if [ "$WF_HOST_OS" == "windows" ]; then
		cp -a src/liblua.dll.a "$pkgdir$WF_DESTDIR"/lib/
	fi
}
