2018-11-16 21:18:15 +00:00

127 lines
3.4 KiB
Makefile

# $OpenBSD: Makefile,v 1.75 2018/11/16 21:18:15 naddy Exp $
# XXX:
# - Needs __ARM_NR_cacheflush (or the like) to work on arm-based ports.
# - Needs bundled libcares as arpa/nameser.h does not include ns_t_a.
ONLY_FOR_ARCHS = amd64 aarch64 i386
DPB_PROPERTIES = parallel
USE_WXNEEDED = Yes
COMMENT = V8 JavaScript for clients and servers
NODE_VERSION = v8.12.0
PLEDGE_VER = 1.1.0
DISTFILES = node-pledge-{}${PLEDGE_VER}.tar.gz:0 ${DISTNAME}.tar.gz
DISTNAME = node-${NODE_VERSION}
PKGNAME = ${DISTNAME:S/v//g}
REVISION = 1
MASTER_SITES0 = https://github.com/qbit/node-pledge/archive/
CATEGORIES = lang devel
HOMEPAGE = http://nodejs.org/
MAINTAINER = Aaron Bieber <abieber@openbsd.org>
# MIT
PERMIT_PACKAGE_CDROM = Yes
MASTER_SITES = ${HOMEPAGE}dist/${NODE_VERSION}/
MODULES = lang/python
WANTLIB += c execinfo kvm m pthread util z ${COMPILER_LIBCXX}
COMPILER = base-clang ports-gcc base-gcc
LIB_DEPENDS = devel/libexecinfo
USE_GMAKE = Yes
BUILD_DEPENDS = sysutils/flock
RUN_DEPENDS = devel/gmake \
sysutils/flock
TEST_TARGET = test
CONFIGURE_STYLE = simple
# libpath and includes aren't picked up, but I added them here as a note.
# The patch for node.gyp is where they are actually being set.
CONFIGURE_ARGS = --prefix=${PREFIX} \
--shared-zlib
.if "${MACHINE_ARCH}" == "aarch64"
CONFIGURE_ARGS += --openssl-no-asm
.endif
SUBST_VARS += DISTNAME
SUBST_VARS += DISTFILES
SUBST_VARS += EXTRACT_SUFX
SUBST_VARS += LOCALBASE
SUBST_VARS += PREFIX
SUBST_VARS += WRKDIST
MAKE_ENV += V=1 CXX="${CXX}" CXXFLAGS="${CXXFLAGS}" \
LDFLAGS="-L${LOCALBASE}/lib -L${X11BASE}/lib"
do-extract:
mkdir ${WRKSRC}; \
tar -C ${WRKDIR} -zxf ${FULLDISTDIR}/${DISTNAME}.tar.gz && \
tar -C ${WRKSRC}/deps/npm/node_modules/ -zxf \
${FULLDISTDIR}/node-pledge-${PLEDGE_VER}.tar.gz && \
mv ${WRKSRC}/deps/npm/node_modules/node-pledge-${PLEDGE_VER} \
${WRKSRC}/deps/npm/node_modules/node-pledge
post-extract:
# Currently tarbals exclude tools/eslint, while the tests that require it
# are still in tree
cd ${WRKSRC} && for x in $$(grep -r "tools/eslint" test/* | awk -F: '{print $$1}' | sort | uniq); do \
rm $$x; \
done
pre-configure:
@# Bad practice, but prevents a whole stack of patches.
ln -sf ${LOCALBASE}/bin/python${MODPY_VERSION} ${WRKDIR}/bin/python
${SUBST_CMD} ${WRKDIST}/lib/module.js \
${WRKDIST}/deps/npm/bin/node-gyp-bin/node-gyp \
${WRKDIST}/deps/npm/node_modules/node-gyp/lib/configure.js \
${WRKDIST}/deps/npm/node_modules/node-gyp/lib/install.js \
${WRKDIST}/node.gyp \
${WRKDIST}/common.gypi \
${WRKDIST}/tools/test.py
# generate PIC assembly code
.if ${MACHINE_ARCH} == "i386"
find ${WRKDIST}/deps/openssl/asm/x86-elf-gas -name '*.s' -delete
find ${WRKDIST}/deps/openssl/asm -type f -exec touch {} +
cd ${WRKDIST}/deps/openssl/asm && \
${MAKE_PROGRAM} -j${MAKE_JOBS} CC="${CC}" ASM="${CC}" all
.endif
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}.tar.gz \
${PREFIX}/share/node/${DISTNAME}.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} && \
ulimit -n $$(ulimit -Hn) && \
ulimit -d $$(ulimit -Hd) && \
${MAKE_PROGRAM} test
.include <bsd.port.mk>