# Template file for 'nodejs' pkgname=nodejs version=12.8.0 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 " license="MIT" homepage="https://nodejs.org/" distfiles="${homepage}/dist/v${version}/node-v${version}.tar.gz" checksum=6f4e4ee7bcb52f782dce5a51d6951ff87151d9504be129d68d7aff469c0f7f36 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 }