void-packages/srcpkgs/nodejs/template

110 lines
3.5 KiB
Bash

# Template file for 'nodejs'
pkgname=nodejs
version=12.11.1
revision=1
wrksrc="node-v${version}"
# Need these for host v8 for torque, see https://github.com/nodejs/node/pull/21079
hostmakedepends="pkg-config python zlib-devel $(vopt_if icu icu-devel)
$(vopt_if ssl libressl-devel) $(vopt_if libuv libuv-devel)
$(vopt_if http_parser http-parser-devel) $(vopt_if nghttp2 nghttp2-devel)
$(vopt_if cares c-ares-devel) $(vopt_if http_parser llhttp-devel)"
makedepends="zlib-devel python-devel $(vopt_if icu icu-devel)
$(vopt_if ssl libressl-devel) $(vopt_if libuv libuv-devel)
$(vopt_if http_parser http-parser-devel) $(vopt_if nghttp2 nghttp2-devel)
$(vopt_if cares c-ares-devel) $(vopt_if http_parser llhttp-devel)"
short_desc="Evented I/O for V8 javascript"
maintainer="Enno Boland <gottox@voidlinux.org>"
license="MIT"
homepage="https://nodejs.org/"
distfiles="${homepage}/dist/v${version}/node-v${version}.tar.gz"
checksum=37043ddbe60f18a52ec31e0381b66adebbc0ec24669d72f132a1fdfacdf029ae
build_options="ssl libuv http_parser icu nghttp2 cares"
desc_option_ssl="Enable shared libressl"
desc_option_libuv="Enable shared libuv"
desc_option_http_parser="Enable shared http-parser and llhttp"
desc_option_icu="Enable shared icu"
desc_option_nghttp2="Enable shared nghttp2"
desc_option_cares="Enable shared c-ares"
build_options_default="libuv http_parser icu nghttp2 cares"
replaces="iojs>=0"
conflicts="nodejs-lts"
provides="nodejs-runtime-0_1"
if [ "$XBPS_WORDSIZE" -ne "$XBPS_TARGET_WORDSIZE" ]; then
nocross="host and target must have the same pointer size"
fi
case "$XBPS_TARGET_MACHINE" in
ppc64*) ;;
ppc*) broken="Node 12.x does not support 32-bit ppc" ;;
esac
# v8 requires libatomic on ppc*/s390x/mips*
case "$XBPS_TARGET_MACHINE" in
mips*|ppc*) makedepends+=" libatomic-devel" ;;
*) ;;
esac
# also need it on host when it's one of those archs
case "$XBPS_MACHINE" in
mips*|ppc*) hostmakedepends+=" libatomic-devel" ;;
*) ;;
esac
do_configure() {
local _args
export LD="$CXX"
if [ "$CROSS_BUILD" ]; then
case "$XBPS_TARGET_MACHINE" in
arm*) _args="--dest-cpu=arm" ;;
aarch64*) _args="--dest-cpu=arm64" ;;
ppc64*) _args="--dest-cpu=ppc64" ;;
ppc*) _args="--dest-cpu=ppc" ;;
mipsel*) _args="--dest-cpu=mipsel" ;;
mips*) _args="--dest-cpu=mips" ;;
i686*) _args="--dest-cpu=x86" ;;
x86_64*) _args="--dest-cpu=x86_64" ;;
*) msg_error "$pkgver: cannot be cross compiled for ${XBPS_TARGET_MACHINE}.\n" ;;
esac
# this is necessary - for example, normally compiling from ppc64le
# to ppc64 or from glibc to musl is considered non-cross-compiling
# by the build system, because it's technically the same architecture
#
# that results in the toolset built for target only, and attempting
# to execute it within the build system fails
_args+=" --cross-compiling"
fi
# their pregenerated asm is for ELFv1...
case "$XBPS_TARGET_MACHINE" in
ppc64|ppc64-musl) _args+=" --openssl-no-asm" ;;
esac
./configure --prefix=/usr --shared-zlib \
$(vopt_if icu --with-intl=system-icu) \
$(vopt_if http_parser --shared-http-parser) \
$(vopt_if ssl --shared-openssl) \
$(vopt_if libuv --shared-libuv) \
$(vopt_if nghttp2 --shared-nghttp2) \
$(vopt_if cares --shared-cares) ${_args}
}
post_configure() {
# Fix linking against llhttp
sed 's/-lhttp_parser/& -lllhttp/' -i out/*.target.mk
}
do_build() {
if [ "$CROSS_BUILD" ]; then
make LD="$CXX" LDFLAGS+=-ldl ${makejobs} PORTABLE=1 V=1
else
make LD="$CXX" LDFLAGS+=-ldl ${makejobs} V=1
fi
}
do_install() {
make LD="$CXX" LDFLAGS+=-ldl DESTDIR="$DESTDIR" install
vlicense LICENSE
rm -r $DESTDIR/usr/include
}