1 # Created by: ruslan@shevchenko.kiev.ua
7 CATEGORIES= lang parallel java
8 MASTER_SITES= http://www.erlang.org/download/:erlangorg \
9 http://erlang.stacken.kth.se/download/:erlangorg \
10 http://www.csd.uu.se/ftp/mirror/erlang/download/:erlangorg
11 PKGNAMESUFFIX= -runtime17
12 DISTNAME= otp_src_${ERL_RELEASE}
13 DISTFILES= ${DISTNAME}${EXTRACT_SUFX}:erlangorg \
14 ${ERLANG_MAN}:erlangorg
16 EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX}
18 PATCH_SITES= http://olgeni.olgeni.com/~olgeni/distfiles/ \
20 PATCHFILES= patch-otp-17.5.1 patch-otp-17.5.2 patch-otp-17.5.3 \
21 patch-otp-17.5.4 patch-otp-17.5.5 patch-otp-17.5.6 \
22 patch-otp-17.5.6.1 patch-otp-17.5.6.2 patch-otp-17.5.6.3 \
23 patch-otp-17.5.6.4 patch-otp-17.5.6.5 patch-otp-17.5.6.6 \
24 patch-otp-17.5.6.7 patch-otp-17.5.6.8 patch-otp-17.5.6.9
26 MAINTAINER= olgeni@FreeBSD.org
27 COMMENT= Functional programming language from Ericsson
29 WRKSRC= ${WRKDIR}/otp_src_${ERL_RELEASE}
31 ERLANG_LIB= ${PORTNAME}${PORTVERSION:C/\..*//}
33 SUB_FILES= pkg-message
34 SUB_LIST= ERLANG_LIB=${ERLANG_LIB}
38 OPTIONS_DEFINE= DOCS DTRACE GCC GS HIPE JAVA KQUEUE ODBC OPENSSL SCTP SMP THREADS WX DIRTY
40 DIRTY_DESC= Enable Dirty schedulers (experimental)
41 DTRACE_DESC= Enable DTrace support
42 GS_DESC= Enable GS application (deprecated)
43 HIPE_DESC= Build native HiPE compiler
44 KQUEUE_DESC= Enable Kernel Poll (kqueue) support
45 SCTP_DESC= Enable SCTP support
46 SMP_DESC= Enable SMP support
47 WX_DESC= Enable WX application
49 OPTIONS_DEFAULT=KQUEUE OPENSSL SCTP SMP THREADS
50 OPTIONS_EXCLUDE_DragonFly= HIPE SCTP
54 USES= gmake ncurses perl5
57 LDFLAGS+= -L${LOCALBASE}/lib
59 .include <bsd.port.options.mk>
61 .if ${PORT_OPTIONS:MDOCS}
62 DISTFILES+= ${ERLANG_DOCS}:erlangorg
65 # See http://wiki.freebsd.org/DTrace to learn how to enable DTrace
66 # on your system. You will need to configure STRIP, WITH_CTF and
67 # CFLAGS in your make.conf before building.
69 # If you run Erlang and get a message resembling "WARNING: number of
70 # probes fixed does not match the number of defined probes (54 != 132,
71 # respectively)" you probably misconfigured DTrace in some way.
73 .if ${OSVERSION} < 1000000
74 .if ${ARCH} == "x86_64" && ${PORT_OPTIONS:MDTRACE} && ! ${PORT_OPTIONS:MGCC}
75 IGNORE= support for DTrace on amd64 requires GCC option
79 .if ${PORT_OPTIONS:MGCC}
83 .if ${PORT_OPTIONS:MDTRACE}
84 CONFIGURE_ARGS+=--with-dynamic-trace=dtrace
86 CONFIGURE_ARGS+=--without-dynamic-trace
89 .if ${PORT_OPTIONS:MOPENSSL}
91 CONFIGURE_ARGS+=--with-ssl=${OPENSSLBASE}
93 CONFIGURE_ARGS+=--without-ssl
96 .if ${PORT_OPTIONS:MJAVA}
98 CONFIGURE_ARGS+=--with-javac
99 CONFIGURE_ENV+= ac_cv_prog_JAVAC="${JAVAC}"
101 CONFIGURE_ARGS+=--without-javac
104 .if ${PORT_OPTIONS:MHIPE}
105 CONFIGURE_ARGS+=--enable-hipe
107 CONFIGURE_ARGS+=--disable-hipe
110 .if ${PORT_OPTIONS:MKQUEUE}
111 CONFIGURE_ARGS+=--enable-kernel-poll
113 CONFIGURE_ARGS+=--disable-kernel-poll
116 .if ${PORT_OPTIONS:MGS}
120 .if ${PORT_OPTIONS:MWX}
124 CONFIGURE_ARGS+=--with-wx-config=${WX_CONFIG}
127 .if ${PORT_OPTIONS:MODBC}
128 CONFIGURE_ARGS+=--with-odbc
129 LIB_DEPENDS+= libodbc.so:databases/unixODBC
131 CONFIGURE_ARGS+=--without-odbc
134 ERLANG_MAN= otp_doc_man_${ERL_RELEASE}.tar.gz
135 ERLANG_DOCS= otp_doc_html_${ERL_RELEASE}.tar.gz
137 .if ${PORT_OPTIONS:MTHREADS}
138 CONFIGURE_ARGS+=--enable-threads
140 CONFIGURE_ARGS+=--disable-threads
143 .if ${PORT_OPTIONS:MSCTP}
144 CONFIGURE_ARGS+=--enable-sctp
146 CONFIGURE_ARGS+=--disable-sctp
149 # enabling --enable-smp-support crashes the OS when
150 # net_kernel:start([node_name, shortnames]) invoked repeatedly
151 # TODO verify if it still applies
153 .if ${PORT_OPTIONS:MSMP}
154 CONFIGURE_ARGS+=--enable-smp-support
156 CONFIGURE_ARGS+=--disable-smp-support
159 .if ${PORT_OPTIONS:MDIRTY}
160 CONFIGURE_ARGS+=--enable-dirty-schedulers
171 # The man-pages are put (in spite of FreeBSD's port convention) in a private
172 # subdir. This is to avoid cluttering up the man page name space. Also the
173 # Erlang man pages are more of internal documentation using the man format than
174 # actual system man pages. (erl.1 and epmd.1 perhaps being the exception).
176 # Install documentation. (HTML docs need to be in same dir as the
177 # rest, not in share/doc/erlang as it should, because of relative
178 # links in the documentation.
181 .if ${PORT_OPTIONS:MDTRACE}
182 @if ! /sbin/kldstat | ${GREP} dtraceall >/dev/null 2>&1; then \
184 ${ECHO_CMD} "DTRACE option requires kernel module \"dtraceall\" to be loaded."; \
189 .if ! ${PORT_OPTIONS:MWX}
190 echo "disabled by port options" > ${WRKSRC}/lib/wx/SKIP
194 .if ${PORT_OPTIONS:MODBC}
195 ${RM} ${WRKSRC}/lib/odbc/SKIP
199 for SECTION in 1 3 4 6 7; do \
200 ${TAR} --unlink -xzpf ${DISTDIR}/${DIST_SUBDIR}/${ERLANG_MAN} \
201 -C ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB} \
202 "man/man$${SECTION}/*.$${SECTION}" || ${TRUE}; \
204 ${RM} -rf ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/man/cat?
205 .if ${PORT_OPTIONS:MDOCS}
206 ${TAR} --unlink -xzpf ${DISTDIR}/${DIST_SUBDIR}/${ERLANG_DOCS} \
207 -C ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}
209 ${MV} ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/erts-6.4/* \
210 ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/erts-6.4.1.6
211 ${RMDIR} ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/erts-6.4
213 ${MV} ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/inets-5.10.6/* \
214 ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/inets-5.10.9
215 ${RMDIR} ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/inets-5.10.6
217 ${MV} ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/ssh-3.2/* \
218 ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/ssh-3.2.4
219 ${RMDIR} ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/ssh-3.2
221 ${MV} ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/common_test-1.10/* \
222 ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/common_test-1.10.1
223 ${RMDIR} ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/common_test-1.10
225 ${MV} ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/diameter-1.9/* \
226 ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/diameter-1.9.2.4
227 ${RMDIR} ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/diameter-1.9
229 ${MV} ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/debugger-4.0.3/* \
230 ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/debugger-4.0.3.1
231 ${RMDIR} ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/debugger-4.0.3
233 ${MV} ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/snmp-5.1.1/* \
234 ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/snmp-5.1.2
235 ${RMDIR} ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/snmp-5.1.1
237 ${MV} ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/test_server-3.8/* \
238 ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/test_server-3.8.1
239 ${RMDIR} ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/test_server-3.8
241 ${MV} ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/ssl-6.0/* \
242 ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/ssl-6.0.1.2
243 ${RMDIR} ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/ssl-6.0
245 ${MV} ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/runtime_tools-1.8.16/* \
246 ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/runtime_tools-1.8.16.1
247 ${RMDIR} ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/runtime_tools-1.8.16
249 ${MV} ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/kernel-3.2/* \
250 ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/kernel-3.2.0.1
251 ${RMDIR} ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/kernel-3.2
253 ${INSTALL_DATA} ${WRKSRC}/lib/dialyzer/doc/*.txt \
254 ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/lib/dialyzer-*/doc/
256 .if ! ${PORT_OPTIONS:MGS}
257 ${RM} -r ${STAGEDIR}${PREFIX}/lib/erlang/lib/gs-*
259 .if ! ${PORT_OPTIONS:MJAVA}
260 ${RM} -r ${STAGEDIR}${PREFIX}/lib/erlang/lib/jinterface-*
262 .if ! ${PORT_OPTIONS:MODBC}
263 ${RM} -r ${STAGEDIR}${PREFIX}/lib/erlang/lib/odbc-*
265 .if ! ${PORT_OPTIONS:MOPENSSL}
266 ${RM} -r ${STAGEDIR}${PREFIX}/lib/erlang/lib/crypto-*
267 ${RM} -r ${STAGEDIR}${PREFIX}/lib/erlang/lib/ssh-*
268 ${RM} -r ${STAGEDIR}${PREFIX}/lib/erlang/lib/ssl-*
270 .if ! ${PORT_OPTIONS:MWX}
271 ${RM} -r ${STAGEDIR}${PREFIX}/lib/erlang/lib/wx-*
273 ${FIND} ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/* -type d -empty -delete
275 @cd ${STAGEDIR}${PREFIX}; ${FIND} lib/${ERLANG_LIB}/* -type f -o -type l \
279 .include <bsd.port.mk>