SUMMARY="A JavaScript runtime built on Chrome's V8 Engine"
DESCRIPTION="Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine. \
As an asynchronous event driven JavaScript runtime, Node is designed to build scalable \
network applications. In the following \"hello world\" example, many connections can be \
handled concurrently. Upon each connection the callback is fired, but if there is no work \
to be done, Node will sleep."
HOMEPAGE="https://nodejs.org/"
COPYRIGHT="2006-2019 The Node.js Foundation"
LICENSE="BSD (2-clause)"
REVISION="1"
SOURCE_URI="https://nodejs.org/dist/v$portVersion/node-v$portVersion.tar.xz"
SOURCE_DIR="node-v$portVersion"
CHECKSUM_SHA256="3fa1d71adddfab2f5e3e41874b4eddbdf92b65cade4a43922fb1e437afcf89ed"
PATCHES="nodejs-$portVersion.patchset"

ARCHITECTURES="all !x86_gcc2 ?x86"
SECONDARY_ARCHITECTURES="!x86"

PROVIDES="
	nodejs14$secondaryArchSuffix = $portVersion
	cmd:node = $portVersion compat >= 14
	"
REQUIRES="
	haiku$secondaryArchSuffix
	lib:libcares$secondaryArchSuffix
	lib:libcrypto$secondaryArchSuffix
	lib:libexecinfo$secondaryArchSuffix
	lib:libnghttp2$secondaryArchSuffix
	lib:libssl$secondaryArchSuffix
	lib:libuv$secondaryArchSuffix
	lib:libz$secondaryArchSuffix
	"

PROVIDES_devel="
	nodejs14${secondaryArchSuffix}_devel
	"
REQUIRES_devel="
	nodejs14$secondaryArchSuffix == $portVersion base
	"

BUILD_REQUIRES="
	haiku${secondaryArchSuffix}_devel
	devel:libcares$secondaryArchSuffix
	devel:libexecinfo$secondaryArchSuffix
	devel:libnghttp2$secondaryArchSuffix >= 14.19
	devel:libssl$secondaryArchSuffix >= 1.1
	devel:libuv$secondaryArchSuffix
	devel:libz$secondaryArchSuffix
	"
BUILD_PREREQUIRES="
	cmd:find
	cmd:gcc$secondaryArchSuffix
	cmd:ld$secondaryArchSuffix
	cmd:make
	cmd:ninja
	cmd:python3.9
	cmd:which
	"

BUILD()
{
	./configure --with-intl=none --dest-os=haiku \
		--shared-cares --shared-libuv --shared-nghttp2 --shared-openssl \
		--shared-zlib \
		--prefix=$prefix --without-npm

	make $jobArgs
}

INSTALL()
{
	make install

	mkdir -p $(dirname $docDir $includeDir $manDir)
	mv $prefix/include $includeDir
	mv $prefix/share/man $manDir
	mv $prefix/share/doc $docDir

	packageEntries devel \
		$developDir

	strip $prefix/bin/node
	rm -rf $prefix/share
}

TEST()
{
    make test-only
}
