# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Maintainer: Jakub Jirutka <jakub@jirutka.cz>
pkgname=njs
# Keep it in sync with njs in main/nginx.
pkgver=0.9.0
pkgrel=0
pkgdesc="NGINX JavaScript interpreter CLI"
url="https://nginx.org/en/docs/njs/"
arch="all"
license="BSD-2-Clause"
makedepends="
	libedit-dev
	openssl-dev
	pcre2-dev
	"
checkdepends="expect"
subpackages="
	$pkgname-libs-static
	$pkgname-dev
	$pkgname-debug
	libnjs
	"
source="$pkgname-$pkgver.tar.gz::https://github.com/nginx/njs/archive/$pkgver.tar.gz
	no-werror.patch
	shared-lib.patch
	njs.pc
	"

case "$CARCH" in
	# arm*: https://github.com/nginx/njs/issues/821
	arm* | x86) options="!check";;
esac

# secfixes:
#   0.7.3-r0:
#     - CVE-2021-46462
#     - CVE-2021-46463
#     - CVE-2022-25139
#   0.7.1-r0:
#     - CVE-2021-46461

prepare() {
	default_prepare

	# We are build njs without libxml2, so xml tests won't pass.
	rm -r test/xml
}

build() {
	# NOTE: We build njs without libxml2 since 0.8.10-r1 (Alpine 3.22)
	#  because it's a quite heavy dependency and it's not always needed in
	#  njs. If you need libnjs or njs with libxml2, let me know on GitLab.
	./configure \
		--no-libxml2 \
		--build-dir='build-debug' \
		--debug=YES
	make njs

	./configure \
		--no-libxml2 \
		--cc-opt='-Os' \
		--ld-opt='-Os'
	make njs libnjs.so

	sed "s|@@VERSION@@|$pkgver|" "$srcdir"/njs.pc > build/njs.pc
}

check() {
	make test
}

package() {
	install -m 755 -D build/njs -t "$pkgdir"/usr/bin/

	install -m 644 -D build/libnjs.a -t "$pkgdir"/usr/lib/
	install -m 644 -D build-debug/libnjs.a "$pkgdir"/usr/lib/libnjs-debug.a

	install -m 755 -D build/libnjs.so.* -t "$pkgdir"/usr/lib/

	cp -d build/libnjs.so "$pkgdir"/usr/lib/
	install -m 644 -D src/*.h -t "$pkgdir"/usr/include/njs/
	install -m 644 -D build/*.h -t "$pkgdir"/usr/include/njs/
	install -m 644 -D build/njs.pc -t "$pkgdir"/usr/lib/pkgconfig/
}

debug() {
	pkgdesc="njs built with additional runtime checks and debug symbols"
	options="!strip"

	install -m 755 -D "$builddir"/build-debug/njs "$subpkgdir"/usr/bin/njs-debug
}

libnjs() {
	pkgdesc="NGINX JavaScript interpreter library"

	amove usr/lib/libnjs.so*
}

sha512sums="
a8c893593606ee5f16df65e0d7214b3487e39dbc85e0d2dd907dd086b8bf9f06b0b902000d31bdaa1836ae6aaae001d2624b4499daf887b775be5e79a32956aa  njs-0.9.0.tar.gz
b8ed822bf0d2ac99682cdecde5ce0136ac46cc9e6077be1369c631ac4caf22f22750f39fced061233f44e3e290e8ca6135da5d121bd53551cbd460419bc90662  no-werror.patch
9341aeb2ca85cbffc8a08a818446c267520a8157d55246eff1c92e3a72b7da6a2c2d21f39f86c91a54e60da2e5225a0b6a89ff5a9655ed72902709226a6a0f71  shared-lib.patch
67ba37be7b8ca7e2f0b47ebb5f967d98d7a8b8ec7498b68fca36f3af5014ebdaea84e1bd8f655f4a62522abc523e6ede623aac3a88b16e4772b435068e34de4e  njs.pc
"
