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

pkgname=(wf-lua-iconv)
_pkgver=7.1
pkgver=7.1.r101.5452834
pkgrel=1
epoch=
pkgdesc="Lua iconv wrapper"
arch=("i686" "x86_64" "armv6h" "aarch64")
url="https://github.com/lunarmodules/lua-iconv"
license=("MIT")
source=("$pkgname::git+https://github.com/lunarmodules/lua-iconv#branch=master")
depends=(wf-lua)
makedepends=(wf-lua-dev)
sha256sums=("SKIP")

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

. "../templates/git-pkgver.PKGBUILD"

prepare() {
	cd "$pkgname"

	if [ "$WF_USE_MUSL" == "true" ]; then
		# musl iconv has many differences relative to glibc iconv:
		# https://wiki.musl-libc.org/functional-differences-from-glibc.html

		# musl does not support //TRANSLIT.
		sed -i -e "s/\/\/TRANSLIT//g" test_iconv.lua
		# musl does not support EBCDIC-CP-ES.
		sed -i -E -e "s/check_one\(termcs, \"EBCDIC/-- EBCDIC/g" test_iconv.lua
		# musl does not output EILSEQ.
		sed -i -E -e "s/assert\(e == iconv.ERROR_INVALID/-- ERROR_INVALID/g" test_iconv.lua
	elif [ "$WF_HOST_OS" == "windows" ]; then
		# mingw iconv only recognises them with a dash
		sed -i -E -e "s/\"utf8\"/\"utf-8\"/g" test_iconv.lua
		sed -i -E -e "s/\"utf16\"/\"utf-16\"/g" test_iconv.lua
	fi
}

build() {
	cd "$pkgname"

	if [ "$WF_HOST_OS" == "windows" ]; then
		gcc -c -o iconv.lo $WF_RUNTIME_INCLUDES -O3 -Wall luaiconv.c
		gcc -o iconv"$WF_LIBRARY_SUFFIX" -shared iconv.lo "$WF_LUA_LDFLAGS" -liconv
	else
		gcc -c -o iconv.lo $WF_RUNTIME_INCLUDES -fPIC -O3 -Wall luaiconv.c
		gcc -o iconv"$WF_LIBRARY_SUFFIX" -shared $WF_LUA_LDFLAGS iconv.lo
	fi
}

check() {
	cd "$pkgname"

	if [ "$WF_HOST_OS" == "windows" ]; then
		export LUA_CPATH="C:/msys64/wf/packages/wf-lua-iconv/src/wf-lua-iconv/?.dll"
	fi
	$WF_PATH/bin/wf-lua test_iconv.lua
}

package() {
	cd "$pkgname"

	mkdir -p "$pkgdir$WF_DESTDIR"/doc/wf-lua-iconv
	cp -a README.md "$pkgdir$WF_DESTDIR"/doc/wf-lua-iconv/

	mkdir -p "$pkgdir$WF_DESTDIR"/lib/lua/5.4
	cp -a iconv"$WF_LIBRARY_SUFFIX" "$pkgdir$WF_DESTDIR"/lib/lua/5.4
}

