1 # Created by: Maurice Castro <maurice@serc.rmit.edu.au>
8 MASTER_SITES= http://cran.r-project.org/%SUBDIR%/ \
9 ftp://cran.r-project.org/pub/R/%SUBDIR%/ \
10 http://cran.at.r-project.org/%SUBDIR%/ \
11 http://cran.au.r-project.org/%SUBDIR%/ \
12 http://cran.br.r-project.org/%SUBDIR%/ \
13 http://cran.ch.r-project.org/%SUBDIR%/ \
14 http://cran.es.r-project.org/%SUBDIR%/ \
15 http://cran.dk.r-project.org/%SUBDIR%/ \
16 http://cran.uk.r-project.org/%SUBDIR%/ \
17 http://cran.us.r-project.org/%SUBDIR%/ \
18 ftp://ftp.u-aizu.ac.jp/pub/lang/R/CRAN/%SUBDIR%/ \
19 http://lib.stat.cmu.edu/R/CRAN/%SUBDIR%/ \
20 http://cran.stat.ucla.edu/%SUBDIR%/ \
21 http://probability.ca/cran/%SUBDIR%/
22 MASTER_SITE_SUBDIR= src/base/R-${PORTVERSION:C|\..*||}
23 DISTNAME= R-${PORTVERSION}
25 PATCH_SITES= ${MASTER_SITE_LOCAL}
27 PATCHFILES= R-patched-20131112-r64207.diff.bz2
29 MAINTAINER= bf@FreeBSD.org
30 COMMENT?= A language for statistical computing and graphics
34 BUILD_DEPENDS= ${LOCALBASE}/bin/gsed:${PORTSDIR}/textproc/gsed
36 CONFIGURE_ENV= LIBR_LDFLAGS="${LDFLAGS}" OBJC="${CC}" \
37 SED="${LOCALBASE}/bin/gsed" \
38 ac_cv_have_decl_powl=yes ac_cv_have_decl_log1pl=yes
40 OPTIONS_DEFINE= MISSING DOCS
42 MISSING_DESC= use libmissing rather than libquadmath
44 .if defined(LIBRMATH_SLAVEPORT)
45 BUILD_WRKSRC= ${WRKSRC}/src/nmath/standalone
46 CONFIGURE_ARGS= --disable-nls --with-ICU=no --with-cairo=no \
47 --with-jpeglib=no --with-libpng=no --with-libtiff=no \
48 --with-readline=no --with-tcltk=no --with-x=no \
49 --without-libintl-prefix
50 CONFIGURE_ENV+= ac_cv_header_iconv_h=no
51 PLIST_SUB= RMATH_SOVERSION="${RMATH_SOVERSION}"
53 .else # LIBRMATH_SLAVEPORT
55 INSTALL_TARGET= install
56 CONFIGURE_ARGS= --enable-memory-profiling rdocdir=${DOCSDIR} \
57 --with-system-bzlib --with-system-zlib
58 CONFIGURE_ENV+= FCFLAGS="${FFLAGS}" \
59 INSTALL_DATA="${INSTALL} ${COPY} ${_SHROWNGRP} -m 644" \
60 R_LD_LIBRARY_PATH="${R_LD_LIBRARY_PATH}" TAR="${TAR}"
61 CPPFLAGS+= -I${LOCALBASE}/include
62 LDFLAGS+= -L${LOCALBASE}/lib
64 OPTIONS_DEFINE+= ATLAS ICU PCRE_PORT THREADS
66 ATLAS_DESC= Use ATLAS instead of BLAS/LAPACK
67 ICU_DESC= Use ICU for collation in multibyte locales
68 PCRE_PORT_DESC= Use devel/pcre instead of the bundled PCRE
70 OPTIONS_DEFAULT+= ICU PCRE_PORT THREADS
71 .if !defined(LIBR_SLAVEPORT)
72 RUN_DEPENDS+= ${LOCALBASE}/bin/gsed:${PORTSDIR}/textproc/gsed
73 USE_LDCONFIG= ${PREFIX}/lib/R/lib
74 #now only used to build the R.1 manpage:
78 OPTIONS_DEFINE+= GHOSTSCRIPT INFO_MANUALS JPEG LETTER_PAPER LIBR \
79 PANGOCAIRO PDF_MANUALS PNG TCLTK TIFF X11
81 GHOSTSCRIPT_DESC= [dev2]bitmap() graphics devices
82 INFO_MANUALS_DESC= GNU info manuals
83 JPEG_DESC= jpeg() graphics device
84 LETTER_PAPER_DESC= US Letter paper
85 LIBR_DESC= R shared library and a dynamically-linked R
86 PANGOCAIRO_DESC= cairo and pango graphics support
87 PDF_MANUALS_DESC= PDF manuals (requires TeX)
88 PNG_DESC= png() graphics device
89 TCLTK_DESC= tcltk package
90 X11_DESC= X11() graphics device
92 OPTIONS_DEFAULT+= GHOSTSCRIPT INFO_MANUALS JPEG LIBR PANGOCAIRO PNG \
95 .endif # !LIBR_SLAVEPORT
96 PLIST_SUB= R_SOVERSION="${R_SOVERSION}" \
97 RBLAS_SOVERSION="${RBLAS_SOVERSION}" \
98 RLAPACK_SOVERSION="${RLAPACK_SOVERSION}"
99 R_LD_LIBRARY_PATH= ${_GCC_RUNTIME}:${LOCALBASE}/lib
101 .endif # LIBRMATH_SLAVEPORT
103 MAKE_JOBS_UNSAFE= yes
111 .include <bsd.port.options.mk>
113 .if ${ARCH} == "sparc64" || ${ARCH} == "powerpc64"
118 .for flag in LD CXXLD
119 CONFIGURE_ENV += SHLIB_${flag}FLAGS="${PICFLAG}"
122 .if ${OSVERSION} > 1000052 && \
123 (${ARCH} == x86_64 || ${ARCH} == i386 || ${ARCH} == ia64 || ${ARCH} == pc98 || ${ARCH} == sparc64)
124 .for _f in coshl erfcl erfl lgammal powl sinhl tanhl tgammal
125 CFLAGS+= -fno-builtin-${_f}
126 LDFLAGS+= -fno-builtin-${_f}
130 .if ${PORT_OPTIONS:MMISSING}
131 .for _f in acos asin atan cos cosh exp log pow sin sinh tan tanh
132 CONFIGURE_ENV+= ac_cv_have_decl_c${_f}=yes
134 LIB_DEPENDS+= libmissing.so:${PORTSDIR}/math/libmissing
135 LIBM= -L${LOCALBASE}/lib -lmissing -lm
136 LIBMH= "missing_math.h"
137 .if defined(LIBRMATH_SLAVEPORT)
138 CPPFLAGS+= -I${LOCALBASE}/include
145 .if !defined(LIBRMATH_SLAVEPORT)
146 .if ${PORT_OPTIONS:MATLAS}
147 LIB_DEPENDS+= libatlas.so:${PORTSDIR}/math/atlas
148 BLAS?= ${LIBM} -lf77blas
149 LAPACK?= ${LIBM} -lalapack -lcblas
154 CONFIGURE_ARGS+= --with-blas="${BLAS}" --with-lapack="${LAPACK}"
155 .if ${BLAS} == "no" || ${LAPACK} == "no"
156 PLIST_SUB+= LAPACK=""
158 PLIST_SUB+= LAPACK="@comment "
161 .if ${PORT_OPTIONS:MICU}
162 LIB_DEPENDS+= libicui18n.so:${PORTSDIR}/devel/icu
163 CONFIGURE_ARGS+= --with-ICU
165 CONFIGURE_ARGS+= --without-ICU
168 .if ${PORT_OPTIONS:MNLS}
172 CONFIGURE_ARGS+= --disable-nls
173 PLIST_SUB+= NLS="@comment "
176 .if ${PORT_OPTIONS:MPCRE_PORT}
177 LIB_DEPENDS+= libpcre.so:${PORTSDIR}/devel/pcre
178 CONFIGURE_ARGS+= --with-system-pcre
180 CONFIGURE_ARGS+= --without-system-pcre
183 .if ${PORT_OPTIONS:MTHREADS}
184 CONFIGURE_ARGS+= --enable-threads=posix
186 CONFIGURE_ARGS+= --disable-threads
189 .if defined(LIBR_SLAVEPORT)
191 CONFIGURE_ARGS+= --disable-BLAS-shlib --without-pic --without-x
194 .else # LIBR_SLAVEPORT
196 .if ${PORT_OPTIONS:MGHOSTSCRIPT}
197 USE_GHOSTSCRIPT_RUN= yes
200 .if ${PORT_OPTIONS:MJPEG}
201 LIB_DEPENDS+= libjpeg.so:${PORTSDIR}/graphics/jpeg
202 CONFIGURE_ARGS+= --with-jpeglib
204 CONFIGURE_ARGS+= --without-jpeglib
207 .if ${PORT_OPTIONS:MLETTER_PAPER}
208 CONFIGURE_ENV += R_PAPERSIZE=letter
211 .if ${PORT_OPTIONS:MLIBR}
212 CONFIGURE_ARGS+= --enable-R-shlib
215 PLIST_SUB+= LIBR="@comment "
218 .if ${PORT_OPTIONS:MPANGOCAIRO}
221 PLIST_SUB+= PANGOCAIRO=""
223 CONFIGURE_ARGS+= --without-cairo
224 PLIST_SUB+= PANGOCAIRO="@comment "
227 .if ${PORT_OPTIONS:MPNG}
228 LIB_DEPENDS+= libpng15.so:${PORTSDIR}/graphics/png
229 CONFIGURE_ARGS+= --with-libpng
231 CONFIGURE_ARGS+= --without-libpng
234 .if ${PORT_OPTIONS:MTCLTK}
236 CONFIGURE_ARGS+= --with-tcltk \
237 --with-tcl-config=${TCL_LIBDIR}/tclConfig.sh \
238 --with-tk-config=${TK_LIBDIR}/tkConfig.sh
241 CONFIGURE_ARGS+= --without-tcltk
242 PLIST_SUB+= TCLTK="@comment "
245 .if ${PORT_OPTIONS:MTIFF}
246 LIB_DEPENDS+= libtiff.so:${PORTSDIR}/graphics/tiff
247 CONFIGURE_ARGS+= --with-libtiff
249 CONFIGURE_ARGS+= --without-libtiff
252 .if ${PORT_OPTIONS:MX11}
253 CONFIGURE_ARGS+= --with-x
257 CONFIGURE_ARGS+= --without-x
258 PLIST_SUB+= X11="@comment "
261 .if ${PORT_OPTIONS:MINFO_MANUALS} && ${PORT_OPTIONS:MDOCS}
263 INFO= R-FAQ R-admin R-data R-exts R-intro R-lang
266 .if ${PORT_OPTIONS:MPDF_MANUALS} && ${PORT_OPTIONS:MDOCS}
267 USE_TEX= texlive dvipsk kpathsea pdftex
268 BUILD_DEPENDS += texi2dvi:${PORTSDIR}/print/texinfo
270 CONFIGURE_ENV += INSTALL_INFO="${LOCALBASE}/bin/install-info" \
271 MAKEINFO="${LOCALBASE}/bin/makeinfo"
272 INSTALL_TARGET+= install-pdf
273 PLIST_SUB+= PDF_MANUAL=""
275 .for _b in KPSEWHICH MAKEINDEX PDFLATEX PDFTEX TEX TEXI2DVI
276 CONFIGURE_ENV+= ac_cv_path_${_b}=""
278 PLIST_SUB+= PDF_MANUAL="@comment "
280 .endif # LIBR_SLAVEPORT
281 .endif # !LIBRMATH_SLAVEPORT
284 @${REINPLACE_CMD} -e '\|LIBS=|s|-lrt ||' \
285 -e '\|-lm[". ]|s|-lm|${LIBM}|' \
287 .if !${PORT_OPTIONS:MMISSING}
288 .if ${OSVERSION} < 1000016
289 @${REINPLACE_CMD} -e 's/# define EXP expl/# define EXP(x) (long double)expq((__float128)(x))/' \
290 ${WRKSRC}/src/nmath/pnchisq.c
292 .if ${OSVERSION} < 1000034
293 @${REINPLACE_CMD} -Ee 's/(log)(1p)?l\(/(long double)\1\2q((__float128)/' \
294 ${WRKSRC}/src/nmath/dnbeta.c \
295 ${WRKSRC}/src/nmath/pnbeta.c
297 @${REINPLACE_CMD} -Ee 's/powl\((.*)(long double)/(long double)powq((__float128)\1__float128/' \
298 ${WRKSRC}/src/main/format.c
300 .if ${OSVERSION} > 1000052 && \
301 (${ARCH} == x86_64 || ${ARCH} == i386 || ${ARCH} == ia64 || ${ARCH} == pc98 || ${ARCH} == sparc64)
302 @${REINPLACE_CMD} -e '\|^FLIBS="$$ac_cv_f77_libs"|s|"|&${LIBM} |' \
305 @${REINPLACE_CMD} -e \
306 '\|#[[:blank:]]*include[[:blank:]]*<complex.h>|{x;s|^.*$$|#include "missing_complex.h"|;H;x;}' \
307 ${WRKSRC}/src/main/complex.c
309 @${REINPLACE_CMD} -e \
310 '\|#[[:blank:]]*include[[:blank:]]*<math.h>|{x;s|^.*$$|#include ${LIBMH}|;H;x;}' \
311 ${WRKSRC}/src/nmath/nmath.h \
312 ${WRKSRC}/src/include/Rmath.h0.in
313 @${REINPLACE_CMD} -e 's|(libdir)/pkgconfig|(prefix)/libdata/pkgconfig|g' \
314 ${WRKSRC}/src/nmath/standalone/Makefile.in \
315 ${WRKSRC}/src/unix/Makefile.in
316 @${REINPLACE_CMD} -e "s|-lpthread|${PTHREAD_LIBS}|g" \
317 ${WRKSRC}/configure \
318 ${WRKSRC}/src/scripts/javareconf.in
319 @${REINPLACE_CMD} -e "s|/usr/local|${LOCALBASE}|g" \
320 ${WRKSRC}/configure \
321 ${WRKSRC}/src/library/profile/Rprofile.unix \
322 ${WRKSRC}/src/scripts/javareconf.in
323 .if !defined(LIBRMATH_SLAVEPORT)
324 .if !${PORT_OPTIONS:MNLS}
325 @(cd ${WRKSRC}/src/library/Recommended; \
326 for tarfile in *.tgz *.tar.gz ; do \
327 ${TAR} -czf temptgz --exclude='*/po/*' @$$tarfile ; \
328 ${MV} temptgz $$tarfile ; \
330 @${REINPLACE_CMD} -e '/ls -d $$(srcdir)\/inst/d' \
331 ${WRKSRC}/src/library/translations/Makefile.in
334 .if !${PORT_OPTIONS:MMISSING}
336 @if [ ! -f ${_GCC_RUNTIME}/libquadmath.a ] ; then \
337 ${PRINTF} "\n\n\n%s\n\n\n" "libquadmath is not available for your\
338 compiler and architecture: please enable the MISSING option." ; \
342 .if defined(LIBR_SLAVEPORT)
344 .for d in include extra
345 @(cd ${WRKSRC}/src/${d}; ${SETENV} ${MAKE_ENV} ${MAKE} ${_MAKE_JOBS} \
348 @(cd ${WRKSRC}/src/main; ${SETENV} ${MAKE_ENV} ${MAKE} ${_MAKE_JOBS} \
349 ${MAKE_ARGS} Makefile Makedeps libR.a)
352 @${MKDIR} ${STAGEDIR}${PREFIX}/lib/R/lib
353 @${INSTALL_LIB} ${WRKSRC}/src/main/libR.a ${STAGEDIR}${PREFIX}/lib/R/lib
355 .else # LIBR_SLAVEPORT
357 pre-configure-script:
358 @${FIND} ${WRKSRC} \( -name '*.orig' -o -name '*.bak' \) -delete
360 check regression-test test: build
361 @(cd ${WRKSRC}; ${SETENV} ${MAKE_ENV} LANGUAGE=en \
362 LC_COLLATE=C LC_TIME=C ${MAKE} ${_MAKE_JOBS} ${MAKE_ARGS} \
366 @(cd ${WRKSRC}; ${SETENV} ${MAKE_ENV} LANGUAGE=en \
367 LC_COLLATE=C LC_TIME=C ${MAKE} ${_MAKE_JOBS} ${MAKE_ARGS} \
371 .for L in R Rblas Rlapack
372 @(cd ${STAGEDIR}${PREFIX}/lib/R/lib; if [ -f lib${L}.so ] ; then \
373 ${LN} -sf lib${L}.so lib${L}.so.${${L:tu}_SOVERSION} ; fi)
375 .if ${PORT_OPTIONS:MINFO_MANUALS} && ${PORT_OPTIONS:MDOCS}
376 @(cd ${WRKSRC}/doc/manual; \
377 for infofile in ${INFO}; do \
378 ${INSTALL_DATA} $${infofile}.info* ${STAGEDIR}${PREFIX}/${INFO_PATH}/; \
382 .endif # LIBR_SLAVEPORT
383 .else # !LIBRMATH_SLAVEPORT
385 @${INSTALL_DATA} ${WRKSRC}/src/include/Rmath.h ${STAGEDIR}${PREFIX}/include
386 @${INSTALL_DATA} ${BUILD_WRKSRC}/libRmath.a ${STAGEDIR}${PREFIX}/lib
387 @${INSTALL_LIB} ${BUILD_WRKSRC}/libRmath.so \
388 ${STAGEDIR}${PREFIX}/lib/libRmath.so.${RMATH_SOVERSION}
389 @(cd ${STAGEDIR}${PREFIX}/lib; ${LN} -sf libRmath.so.${RMATH_SOVERSION} libRmath.so)
391 check regression-test test: build
392 @(cd ${BUILD_WRKSRC}; ${SETENV} ${MAKE_ENV} LANGUAGE=en \
393 LC_COLLATE=C LC_TIME=C ${MAKE} ${_MAKE_JOBS} ${MAKE_ARGS} test; \
394 ${SETENV} LD_LIBRARY_PATH="${BUILD_WRKSRC}" ${BUILD_WRKSRC}/test)
396 .endif # !LIBRMATH_SLAVEPORT
398 .include <bsd.port.mk>