Tweak math/geg version 1.0.2_7
[dports.git] / math / R / Makefile
1 # Created by: Maurice Castro <maurice@serc.rmit.edu.au>
2 # $FreeBSD$
3
4 PORTNAME?=      R
5 PORTVERSION=    3.0.2
6 PORTREVISION=   2
7 CATEGORIES=     math lang
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}
24
25 PATCH_SITES=            ${MASTER_SITE_LOCAL}
26 PATCH_SITE_SUBDIR=      bf
27 PATCHFILES=             R-patched-20131112-r64207.diff.bz2
28
29 MAINTAINER=     bf@FreeBSD.org
30 COMMENT?=       A language for statistical computing and graphics
31
32 LICENSE=        GPLv2
33
34 BUILD_DEPENDS=          ${LOCALBASE}/bin/gsed:${PORTSDIR}/textproc/gsed
35
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
39
40 OPTIONS_DEFINE=         MISSING DOCS
41
42 MISSING_DESC=           use libmissing rather than libquadmath
43
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}"
52 USE_LDCONFIG=           yes
53 .else # LIBRMATH_SLAVEPORT
54 ALL_TARGET=             all
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
63
64 OPTIONS_DEFINE+=        ATLAS ICU PCRE_PORT THREADS
65
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
69
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:
75 USES+=                  makeinfo perl5
76 USE_PERL5=              build
77
78 OPTIONS_DEFINE+=        GHOSTSCRIPT INFO_MANUALS JPEG LETTER_PAPER LIBR \
79                         PANGOCAIRO PDF_MANUALS PNG TCLTK TIFF X11
80
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
91
92 OPTIONS_DEFAULT+=       GHOSTSCRIPT INFO_MANUALS JPEG LIBR PANGOCAIRO PNG \
93                         TCLTK TIFF X11
94
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
100 USES+=                  iconv
101 .endif # LIBRMATH_SLAVEPORT
102 GNU_CONFIGURE=          yes
103 MAKE_JOBS_UNSAFE=       yes
104 R_SOVERSION=            1
105 RBLAS_SOVERSION=        2
106 RLAPACK_SOVERSION=      4
107 RMATH_SOVERSION=        0
108 USES+=                  fortran
109 USE_GCC=                yes
110
111 .include <bsd.port.options.mk>
112
113 .if ${ARCH} == "sparc64" || ${ARCH} == "powerpc64"
114 PICFLAG?=               -fPIC
115 .else
116 PICFLAG?=               -fpic
117 .endif
118 .for flag in LD CXXLD
119 CONFIGURE_ENV +=        SHLIB_${flag}FLAGS="${PICFLAG}"
120 .endfor
121
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}
127 .endfor
128 .endif
129
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
133 .endfor
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
139 .endif
140 .else
141 LIBM=                   -lquadmath -lm
142 LIBMH=                  <quadmath.h>
143 .endif
144
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
150 .else
151 BLAS?=                  no
152 LAPACK?=                no
153 .endif
154 CONFIGURE_ARGS+=        --with-blas="${BLAS}" --with-lapack="${LAPACK}"
155 .if ${BLAS} == "no" || ${LAPACK} == "no"
156 PLIST_SUB+=             LAPACK=""
157 .else
158 PLIST_SUB+=             LAPACK="@comment "
159 .endif
160
161 .if ${PORT_OPTIONS:MICU}
162 LIB_DEPENDS+=           libicui18n.so:${PORTSDIR}/devel/icu
163 CONFIGURE_ARGS+=        --with-ICU
164 .else
165 CONFIGURE_ARGS+=        --without-ICU
166 .endif
167
168 .if ${PORT_OPTIONS:MNLS}
169 USES+=                  gettext
170 PLIST_SUB+=             NLS=""
171 .else
172 CONFIGURE_ARGS+=        --disable-nls
173 PLIST_SUB+=             NLS="@comment "
174 .endif
175
176 .if ${PORT_OPTIONS:MPCRE_PORT}
177 LIB_DEPENDS+=           libpcre.so:${PORTSDIR}/devel/pcre
178 CONFIGURE_ARGS+=        --with-system-pcre
179 .else
180 CONFIGURE_ARGS+=        --without-system-pcre
181 .endif
182
183 .if ${PORT_OPTIONS:MTHREADS}
184 CONFIGURE_ARGS+=        --enable-threads=posix
185 .else
186 CONFIGURE_ARGS+=        --disable-threads
187 .endif
188
189 .if defined(LIBR_SLAVEPORT)
190
191 CONFIGURE_ARGS+=        --disable-BLAS-shlib --without-pic --without-x
192 USES+=                  readline
193
194 .else # LIBR_SLAVEPORT
195
196 .if ${PORT_OPTIONS:MGHOSTSCRIPT}
197 USE_GHOSTSCRIPT_RUN=    yes
198 .endif
199
200 .if ${PORT_OPTIONS:MJPEG}
201 LIB_DEPENDS+=           libjpeg.so:${PORTSDIR}/graphics/jpeg
202 CONFIGURE_ARGS+=        --with-jpeglib
203 .else
204 CONFIGURE_ARGS+=        --without-jpeglib
205 .endif
206
207 .if ${PORT_OPTIONS:MLETTER_PAPER}
208 CONFIGURE_ENV +=        R_PAPERSIZE=letter
209 .endif
210
211 .if ${PORT_OPTIONS:MLIBR}
212 CONFIGURE_ARGS+=        --enable-R-shlib
213 PLIST_SUB+=             LIBR=""
214 .else
215 PLIST_SUB+=             LIBR="@comment "
216 .endif
217
218 .if ${PORT_OPTIONS:MPANGOCAIRO}
219 USES+=                  pkgconfig
220 USE_GNOME+=             pango
221 PLIST_SUB+=             PANGOCAIRO=""
222 .else
223 CONFIGURE_ARGS+=        --without-cairo
224 PLIST_SUB+=             PANGOCAIRO="@comment "
225 .endif
226
227 .if ${PORT_OPTIONS:MPNG}
228 LIB_DEPENDS+=           libpng15.so:${PORTSDIR}/graphics/png
229 CONFIGURE_ARGS+=        --with-libpng
230 .else
231 CONFIGURE_ARGS+=        --without-libpng
232 .endif
233
234 .if ${PORT_OPTIONS:MTCLTK}
235 USES+=                  tk:84+
236 CONFIGURE_ARGS+=        --with-tcltk \
237                         --with-tcl-config=${TCL_LIBDIR}/tclConfig.sh \
238                         --with-tk-config=${TK_LIBDIR}/tkConfig.sh
239 PLIST_SUB+=             TCLTK=""
240 .else
241 CONFIGURE_ARGS+=        --without-tcltk
242 PLIST_SUB+=             TCLTK="@comment "
243 .endif
244
245 .if ${PORT_OPTIONS:MTIFF}
246 LIB_DEPENDS+=           libtiff.so:${PORTSDIR}/graphics/tiff
247 CONFIGURE_ARGS+=        --with-libtiff
248 .else
249 CONFIGURE_ARGS+=        --without-libtiff
250 .endif
251
252 .if ${PORT_OPTIONS:MX11}
253 CONFIGURE_ARGS+=        --with-x
254 USE_XORG=               x11 xmu xt
255 PLIST_SUB+=             X11=""
256 .else
257 CONFIGURE_ARGS+=        --without-x
258 PLIST_SUB+=             X11="@comment "
259 .endif
260
261 .if ${PORT_OPTIONS:MINFO_MANUALS} && ${PORT_OPTIONS:MDOCS}
262 ALL_TARGET+=    info
263 INFO=           R-FAQ R-admin R-data R-exts R-intro R-lang
264 .endif
265
266 .if ${PORT_OPTIONS:MPDF_MANUALS} && ${PORT_OPTIONS:MDOCS}
267 USE_TEX=                texlive dvipsk kpathsea pdftex
268 BUILD_DEPENDS +=        texi2dvi:${PORTSDIR}/print/texinfo
269 ALL_TARGET+=            pdf
270 CONFIGURE_ENV +=        INSTALL_INFO="${LOCALBASE}/bin/install-info" \
271                         MAKEINFO="${LOCALBASE}/bin/makeinfo"
272 INSTALL_TARGET+=        install-pdf
273 PLIST_SUB+=             PDF_MANUAL=""
274 .else
275 .for _b in KPSEWHICH MAKEINDEX PDFLATEX PDFTEX TEX TEXI2DVI
276 CONFIGURE_ENV+=         ac_cv_path_${_b}=""
277 .endfor
278 PLIST_SUB+=             PDF_MANUAL="@comment "
279 .endif
280 .endif # LIBR_SLAVEPORT
281 .endif # !LIBRMATH_SLAVEPORT
282
283 post-patch:
284         @${REINPLACE_CMD} -e '\|LIBS=|s|-lrt ||' \
285                 -e '\|-lm[". ]|s|-lm|${LIBM}|' \
286                 ${WRKSRC}/configure
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
291 .endif
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
296 .endif
297         @${REINPLACE_CMD} -Ee 's/powl\((.*)(long double)/(long double)powq((__float128)\1__float128/' \
298                 ${WRKSRC}/src/main/format.c
299 .else
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} |' \
303                 ${WRKSRC}/configure
304 .endif
305         @${REINPLACE_CMD} -e \
306         '\|#[[:blank:]]*include[[:blank:]]*<complex.h>|{x;s|^.*$$|#include "missing_complex.h"|;H;x;}' \
307                 ${WRKSRC}/src/main/complex.c
308 .endif
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 ; \
329         done)
330         @${REINPLACE_CMD} -e '/ls -d $$(srcdir)\/inst/d' \
331                 ${WRKSRC}/src/library/translations/Makefile.in
332 .endif
333
334 .if !${PORT_OPTIONS:MMISSING}
335 pre-configure:
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." ; \
339         exit 1 ; fi
340 .endif
341
342 .if defined(LIBR_SLAVEPORT)
343 do-build:
344 .for d in include extra
345         @(cd ${WRKSRC}/src/${d}; ${SETENV} ${MAKE_ENV} ${MAKE} ${_MAKE_JOBS} \
346         ${MAKE_ARGS} R)
347 .endfor
348         @(cd ${WRKSRC}/src/main; ${SETENV} ${MAKE_ENV} ${MAKE} ${_MAKE_JOBS} \
349         ${MAKE_ARGS} Makefile Makedeps libR.a)
350
351 do-install:
352         @${MKDIR} ${STAGEDIR}${PREFIX}/lib/R/lib
353         @${INSTALL_LIB} ${WRKSRC}/src/main/libR.a ${STAGEDIR}${PREFIX}/lib/R/lib
354
355 .else # LIBR_SLAVEPORT
356
357 pre-configure-script:
358         @${FIND} ${WRKSRC} \( -name '*.orig' -o -name '*.bak' \) -delete
359
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} \
363         check)
364
365 check-all: build
366         @(cd ${WRKSRC}; ${SETENV} ${MAKE_ENV} LANGUAGE=en \
367         LC_COLLATE=C LC_TIME=C ${MAKE} ${_MAKE_JOBS} ${MAKE_ARGS} \
368         check-all)
369
370 post-install:
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)
374 .endfor
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}/; \
379         done)
380 .endif
381
382 .endif # LIBR_SLAVEPORT
383 .else # !LIBRMATH_SLAVEPORT
384 do-install:
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)
390
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)
395
396 .endif # !LIBRMATH_SLAVEPORT
397
398 .include <bsd.port.mk>