blob: 7d90b2b0ce890e3e63c53fe6f13b0e2abc2994f3 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
PORTNAME= node
PORTVERSION= ${NODEJS_PORTVERSION}
DISTVERSIONPREFIX= v
CATEGORIES= www
MASTER_SITES= https://nodejs.org/dist/v${PORTVERSION}/
PKGNAMESUFFIX= ${PORTVERSION:R:R}
MAINTAINER= sunpoet@FreeBSD.org
COMMENT= V8 JavaScript for client and server
WWW= https://nodejs.org/ \
https://github.com/nodejs/node
LICENSE= MIT
LICENSE_FILE= ${WRKSRC}/LICENSE
BROKEN_SSL= libressl libressl-devel
BROKEN_SSL_REASON= Node.js ${PORTVERSION:R:R}.x requires OpenSSL or the BUNDLED_SSL option enabled
ONLY_FOR_ARCHS= aarch64 amd64 armv6 armv7 i386 powerpc64 powerpc64le
BUILD_DEPENDS= objdump:devel/binutils
LIB_DEPENDS= libada.so:devel/libada \
libbrotlidec.so:archivers/brotli \
libcares.so:dns/c-ares \
libffi.so:devel/libffi \
libgtest.so:devel/googletest \
libhdr_histogram.so:graphics/hdr_histogram \
libhwy.so:devel/highway \
libicui18n.so:devel/icu \
libLIEF.so:devel/lief \
libllhttp.so:www/llhttp \
libmerve.so:devel/merve \
libnbytes.so:www/nbytes \
libnghttp2.so:www/libnghttp2 \
libnghttp3.so:www/libnghttp3 \
libngtcp2.so:net/libngtcp2 \
libsimdjson.so:devel/simdjson \
libsqlite3.so:databases/sqlite3 \
libuv.so:devel/libuv \
libuvwasi.so:devel/uvwasi \
libzstd.so:archivers/zstd
RUN_DEPENDS= corepack>=0:www/corepack
USES= compiler:c++20-lang gmake localbase pkgconfig python:build shebangfix tar:xz
CONFIGURE_ARGS= --prefix=${PREFIX:S|^${DESTDIR}||} \
--shared-ada \
--shared-brotli \
--shared-cares \
--shared-ffi \
--shared-gtest \
--shared-hdr-histogram \
--shared-highway \
--shared-http-parser \
--shared-libuv \
--shared-lief \
--shared-merve \
--shared-nbytes \
--shared-nghttp2 \
--shared-nghttp3 \
--shared-ngtcp2 \
--shared-simdjson \
--shared-sqlite \
--shared-uvwasi \
--shared-uvwasi-includes=${LOCALBASE}/include \
--shared-zlib \
--shared-zstd \
--with-intl=system-icu \
--without-npm
CXXFLAGS_powerpc64= -mpower8-vector
HAS_CONFIGURE= yes
MAKE_ENV= CC.host="${CCACHE_BIN} ${CC}" \
CFLAGS.host="${CFLAGS}" \
CXX.host="${CCACHE_BIN} ${CXX}" \
CXXFLAGS.host="${CXXFLAGS}" \
LDFLAGS.host="${LDFLAGS}" \
LINK.host="${CXX}"
REINPLACE_ARGS= -i ''
CONFLICTS_INSTALL= node[0-9][0-9]
SHEBANG_FILES= deps/v8/third_party/inspector_protocol/*.py \
deps/v8/tools/*.py \
tools/*.py \
tools/inspector_protocol/*.py
OPTIONS_DEFINE= BUNDLED_SSL DOCS JIT
OPTIONS_DEFAULT=JIT
OPTIONS_SUB= yes
BUNDLED_SSL_DESC= Use bundled OpenSSL implementation from node.js
JIT_DESC= Use Just In Time compiler
BUNDLED_SSL_CONFIGURE_OFF= --openssl-use-def-ca-store --shared-openssl
BUNDLED_SSL_USES_OFF= ssl
JIT_CONFIGURE_OFF= --v8-lite-mode
.include "Makefile.version"
.include <bsd.port.options.mk>
.if ${PORT_OPTIONS:MBUNDLED_SSL} && ${ARCH} != amd64
CONFIGURE_ARGS+=--openssl-no-asm
.endif
post-patch:
@${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|' ${WRKSRC}/tools/v8_gypfiles/v8.gyp
# Clean up bundled libraries
@${RM} -r ${WRKSRC}/deps/ada/
@${RM} -r ${WRKSRC}/deps/brotli/
@${RM} -r ${WRKSRC}/deps/cares/
@${RM} -r ${WRKSRC}/deps/googletest/
@${RM} -r ${WRKSRC}/deps/histogram/
@${RM} -r ${WRKSRC}/deps/icu-small/
@${RM} -r ${WRKSRC}/deps/LIEF/
@${RM} -r ${WRKSRC}/deps/llhttp/
@${RM} -r ${WRKSRC}/deps/merve/
@${RM} -r ${WRKSRC}/deps/nbytes/
@${RM} -r ${WRKSRC}/deps/nghttp2/
@${RM} -r ${WRKSRC}/deps/ngtcp2/
@${RM} -r ${WRKSRC}/deps/npm/
@${RM} -r ${WRKSRC}/deps/simdjson/
@${RM} -r ${WRKSRC}/deps/sqlite/
@${RM} -r ${WRKSRC}/deps/uv/
@${RM} -r ${WRKSRC}/deps/uvwasi/
@${RM} -r ${WRKSRC}/deps/v8/third_party/highway/
@${RM} -r ${WRKSRC}/deps/zlib/
@${RM} -r ${WRKSRC}/deps/zstd/
post-configure:
# Post-process Makefile and *.mk files created by node-gyp and remove
# all occurrences of -I${LOCALBASE}/include. C*FLAGS include this
# before all -I../deps/* for bundled code. This can cause build
# breakages if the dependency is installed in ${LOCALBASE}. The
# USES+=localbase above will ensure that we pick up includes for real
# external dependencies.
@${FIND} ${WRKSRC}/out -type f -print0 | ${XARGS} -0 ${REINPLACE_CMD} -e 's|-I${LOCALBASE}/include||g'
post-install:
${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/node
post-install-BUNDLED_SSL-on:
cd ${STAGEDIR}${PREFIX} && ${FIND} include/node/openssl/ -type f >> ${TMPPLIST}
.include <bsd.port.mk>
|