Import lang/pharo version 1.4
[dports.git] / math / octave / Makefile
1 # Created by: chuckr@FreeBSD.org
2 # $FreeBSD$
3
4 PORTNAME=       octave
5 PORTVERSION=    3.8.1
6 PORTREVISION=   3
7 CATEGORIES=     math
8 MASTER_SITES=   ${MASTER_SITE_GNU}
9 MASTER_SITE_SUBDIR=     octave
10
11 MAINTAINER=     maho@FreeBSD.org
12 COMMENT=        High-level interactive language for numerical computations
13
14 LICENSE=        GPLv3
15
16 BUILD_DEPENDS=  gnuplot:${PORTSDIR}/math/gnuplot \
17                 ${LOCALBASE}/bin/gperf:${PORTSDIR}/devel/gperf \
18                 gsed:${PORTSDIR}/textproc/gsed \
19                 ${LOCALBASE}/bin/makeinfo:${PORTSDIR}/print/texinfo
20 RUN_DEPENDS=    gnuplot:${PORTSDIR}/math/gnuplot \
21                 gsed:${PORTSDIR}/textproc/gsed \
22                 ${LOCALBASE}/bin/makeinfo:${PORTSDIR}/print/texinfo
23 LIB_DEPENDS=    libGraphicsMagick.so.14:${PORTSDIR}/graphics/GraphicsMagick \
24                 libarpack.so:${PORTSDIR}/math/arpack \
25                 libcurl.so:${PORTSDIR}/ftp/curl \
26                 libfftw3.so:${PORTSDIR}/math/fftw3 \
27                 libfftw3f.so:${PORTSDIR}/math/fftw3-float \
28                 libfltk.so:${PORTSDIR}/x11-toolkits/fltk \
29                 libftgl.so:${PORTSDIR}/graphics/ftgl \
30                 libhdf5.so:${PORTSDIR}/science/hdf5 \
31                 libpcre.so:${PORTSDIR}/devel/pcre \
32                 libqhull.so.5:${PORTSDIR}/math/qhull5 \
33                 libqrupdate.so:${PORTSDIR}/math/qrupdate \
34                 libumfpack.so:${PORTSDIR}/math/suitesparse \
35                 libglpk.so:${PORTSDIR}/math/glpk \
36                 libgl2ps.so:${PORTSDIR}/print/gl2ps \
37                 libqscintilla2.so:${PORTSDIR}/devel/qscintilla2
38
39 USES=           charsetfix fortran gmake libtool perl5 pkgconfig tar:bzip2
40 USE_PERL5=      build
41 USE_TEX=        dvipsk:build
42 GNU_CONFIGURE=  yes
43 USE_JAVA=       yes
44 JAVA_VERSION=   1.7+
45 USE_QT4=        gui network uic_build moc_build rcc_build linguist_build
46
47 OCTAVE_VERSION= ${PORTVERSION}
48 GNU_HOST=       ${CONFIGURE_TARGET}
49 PLIST_SUB=      OCTAVE_VERSION=${OCTAVE_VERSION} GNU_HOST=${GNU_HOST}
50 CPPFLAGS+=      -I${LOCALBASE}/include
51 LDFLAGS+=       -L${LOCALBASE}/lib
52 CONFIGURE_ENV=  GPERF="${LOCALBASE}/bin/gperf" \
53                 JAVA_HOME=${JAVA_HOME} \
54                 MAKEINFO=${LOCALBASE}/bin/makeinfo
55 CONFIGURE_ARGS= --host=${GNU_HOST} \
56                 --with-blas="-L${LOCALBASE}/lib ${BLAS}" \
57                 --with-lapack="${LAPACK}" \
58                 --enable-shared \
59                 --disable-jit
60
61 OPTIONS_DEFINE= DOCS
62
63 INFO=           octave liboctave
64
65 .include <bsd.port.pre.mk>
66
67 .if exists(${LOCALBASE}/lib/libopenblas.so)
68 WITH_BLAS?=     openblas
69 .elif exists(${LOCALBASE}/lib/libgoto2.so)
70 WITH_BLAS?=     gotoblas
71 .elif exists(${LOCALBASE}/lib/libatlas.so)
72 WITH_BLAS?=     atlas
73 .else
74 WITH_BLAS?=     reference
75 .endif
76
77 . if ${WITH_BLAS} == reference
78 LIB_DEPENDS+=   libblas.so.2:${PORTSDIR}/math/blas \
79                 liblapack.so.4:${PORTSDIR}/math/lapack
80 BLAS=           -lblas
81 LAPACK=         -llapack
82 .elif ${WITH_BLAS} == openblas
83 LIB_DEPENDS+=   libopenblas.so:${PORTSDIR}/math/openblas
84 BLAS=           -lopenblasp
85 LAPACK=         -lopenblasp
86 .elif ${WITH_BLAS} == gotoblas
87 LIB_DEPENDS+=   libgoto2.so:${PORTSDIR}/math/gotoblas
88 BLAS=           -lgoto2p
89 LAPACK=         -lgoto2p
90 .elif ${WITH_BLAS} == atlas
91 LIB_DEPENDS+=   libatlas.so:${PORTSDIR}/math/atlas
92 BLAS=           -lptf77blas
93 LAPACK=         -lalapack -lptcblas
94 .endif
95
96 post-patch:
97         ${REINPLACE_CMD} 's+"makeinfo"+"${LOCALBASE}/bin/makeinfo"+' ${WRKSRC}/libinterp/corefcn/help.cc
98         ${REINPLACE_CMD} 's+-lumfpack+-lumfpack -lsuitesparseconfig -lamd -lcholmod -lcolamd ${LAPACK}+' ${WRKSRC}/configure
99         ${REINPLACE_CMD} 's+-lcholmod+-lumfpack -lsuitesparseconfig -lamd -lcholmod -lcolamd ${LAPACK}+' ${WRKSRC}/configure
100
101 post-install:
102         ${INSTALL_DATA} ${WRKSRC}/doc/icons/octave.desktop \
103                 ${STAGEDIR}${DESKTOPDIR}/www.octave.org-octave.desktop
104         @${MKDIR} ${STAGEDIR}${DOCSDIR}
105 .for file in liboctave/liboctave.ps \
106         refcard/refcard-a4.ps refcard/refcard-legal.ps \
107         refcard/refcard-letter.ps interpreter/octave.ps
108         ${INSTALL_DATA} ${WRKSRC}/doc/${file} ${STAGEDIR}${DOCSDIR}
109 .endfor
110         ${RM} -f ${WRKDIR}/PLIST
111 .for d in ${PREFIX}/include/octave-${OCTAVE_VERSION} ${PREFIX}/share/octave/${OCTAVE_VERSION} ${PREFIX}/share/octave/site ${PREFIX}/lib/octave/${OCTAVE_VERSION} ${PREFIX}/libexec/octave/${OCTAVE_VERSION}
112         @${FIND} -s ${STAGEDIR}$d -not -type d -not -name '*.la' | \
113                 ${SED} -e 's#^${STAGEDIR}${PREFIX}/##' >> ${WRKDIR}/PLIST
114         @${FIND} -s ${STAGEDIR}$d -type d -empty | \
115                 ${SED} -e 's,^${STAGEDIR}${PREFIX}/,@exec ${MKDIR} %D/,' \
116                 -e 's,$$, 2>/dev/null || true,' >> ${WRKDIR}/PLIST
117         @${FIND} -s ${STAGEDIR}$d -type d -depth | \
118                 ${SED} -e 's,^${STAGEDIR}${PREFIX}/,@dirrm ,' >> ${WRKDIR}/PLIST
119 .endfor
120 .for d in ${PREFIX}/libexec/octave/api-v49+ ${PREFIX}/libexec/octave/site ${PREFIX}/lib/octave/site
121         @${FIND} -s ${STAGEDIR}$d -type d -empty | \
122                 ${SED} -e 's,^${STAGEDIR}${PREFIX}/,@exec ${MKDIR} %D/,' \
123                 -e 's,$$, 2>/dev/null || true,' >> ${WRKDIR}/PLIST
124         @${FIND} -s ${STAGEDIR}$d -type d -depth | \
125                 ${SED} -e 's,^${STAGEDIR}${PREFIX}/,@dirrm ,' >> ${WRKDIR}/PLIST
126 .endfor
127         ${ECHO_CMD} @dirrm libexec/octave >> ${WRKDIR}/PLIST
128         ${ECHO_CMD} @dirrm share/octave >> ${WRKDIR}/PLIST
129         cd ${WRKDIR} ; ${SED} -i.bak -e "/PLIST/ r PLIST" ${TMPPLIST}
130
131 check regression-test: build
132         @(cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} check)
133
134 .include <bsd.port.post.mk>