# $OpenBSD: Makefile,v 1.93 2021/11/02 00:01:17 sthen Exp $

ONLY_FOR_ARCHS =                amd64 aarch64 i386 powerpc64
DPB_PROPERTIES =                parallel
USE_WXNEEDED =                  Yes

COMMENT = JavaScript runtime built on Chrome's V8 JavaScript engine

NODE_VERSION =                  v16.13.2
PLEDGE_VERSION=                 1.1.2
DISTNAME =                      node-${NODE_VERSION}
DISTFILES =                     ${DISTNAME}${EXTRACT_SUFX} 
DISTFILES +=                    ${DISTNAME}-headers${EXTRACT_SUFX}
DISTFILES +=                    node-pledge-{}${PLEDGE_VERSION}.tar.gz:0
PKGNAME =                       ${DISTNAME:S/v//g}

CATEGORIES =                    lang devel
MAINTAINER =                    Volker Schlecht <openbsd-ports@schlecht.dev>

HOMEPAGE =                      https://nodejs.org/

# MIT
PERMIT_PACKAGE =                Yes

MASTER_SITES =                  ${HOMEPAGE}dist/${NODE_VERSION}/
MASTER_SITES0 =                 https://github.com/qbit/node-pledge/archive/

COMPILER =                      base-clang ports-gcc

USE_GMAKE =                     Yes
MODULES =                       lang/python

LIB_DEPENDS +=                  archivers/brotli
LIB_DEPENDS +=                  devel/libuv
LIB_DEPENDS +=                  net/libcares
LIB_DEPENDS +=                  textproc/icu4c
LIB_DEPENDS +=                  www/nghttp2
LIB_DEPENDS +=                  security/openssl/1.1

BUILD_DEPENDS +=                sysutils/flock

WANTLIB +=                      c m z
WANTLIB +=                      execinfo pthread
WANTLIB +=                      brotlienc brotlidec
WANTLIB +=                      icudata icui18n icuuc
WANTLIB +=                      cares nghttp2 uv
WANTLIB +=                      lib/eopenssl11/ssl lib/eopenssl11/crypto
WANTLIB +=                      ${COMPILER_LIBCXX}

TEST_TARGET =                   test-only
CONFIGURE_STYLE =               simple
CONFIGURE_SCRIPT =              configure
EOPENSSL_LIB =                  ${LOCALBASE}/lib/eopenssl11
EOPENSSL_INC =                  ${LOCALBASE}/include/eopenssl11
EOPENSSL_BIN =                  ${LOCALBASE}/bin/eopenssl11


SUBST_VARS +=                   EOPENSSL_LIB
SUBST_VARS +=                   LOCALBASE
SUBST_VARS +=                   NODE_VERSION
SUBST_VARS +=                   WRKDIST
SUBST_VARS +=                   WRKSRC


CONFIGURE_ARGS =                --prefix=${PREFIX} \
                                --with-intl=system-icu \
                                --shared-brotli \
                                --shared-cares \
                                --shared-libuv \
                                --shared-nghttp2 \
                                --shared-zlib \
                                --shared-openssl \
                                --shared-openssl-libpath=${EOPENSSL_LIB} \
                                --shared-openssl-includes=${EOPENSSL_INC}

do-extract:
	mkdir ${WRKSRC}; \
	tar -C ${WRKDIR} -zxf ${FULLDISTDIR}/${DISTNAME}.tar.gz && \
	tar -C ${WRKSRC}/deps/npm/node_modules/ -zxf \
		${FULLDISTDIR}/node-pledge-${PLEDGE_VERSION}.tar.gz && \
	mv ${WRKSRC}/deps/npm/node_modules/node-pledge-${PLEDGE_VERSION} \
		${WRKSRC}/deps/npm/node_modules/node-pledge

pre-configure:
	${SUBST_CMD} ${WRKDIST}/common.gypi \
		${WRKDIST}/deps/npm/node_modules/node-gyp/lib/install.js \
		${WRKDIST}/tools/test.py

post-install:
	${MODPY_BIN} ${MODPY_LIBDIR}/compileall.py \
		${PREFIX}/lib/node_modules/npm/node_modules/node-gyp/gyp
	${INSTALL_DATA_DIR} ${PREFIX}/share/node
	${INSTALL_DATA} ${FULLDISTDIR}/${DISTNAME}-headers.tar.gz \
		${PREFIX}/share/node/${DISTNAME}-headers.tar.gz
	ln -s ${TRUEPREFIX}/lib/node_modules/npm/bin/node-gyp-bin/node-gyp \
		${PREFIX}/bin/node-gyp;
	cd ${PREFIX}/lib/node_modules/npm/node_modules && for x in *; do \
		mv $$x ../..; \
		ln -s ../../$$x $$x; \
	done

do-test:
	cd ${WRKSRC} && \
	export HOME=${WRKSRC} && \
	ulimit -n $$(ulimit -Hn) && \
	ulimit -d $$(ulimit -Hd) && \
	${MAKE_PROGRAM} ${TEST_TARGET}

.include <bsd.port.mk>

