Tweak audio/festvox-ked8 version 1.4.0_1
[dports.git] / math / arpack / Makefile
1 # Created by: Pedro F. Giffuni
2 # $FreeBSD$
3
4 PORTNAME=       arpack
5 PORTVERSION=    96
6 PORTREVISION=   13
7 CATEGORIES=     math
8 MASTER_SITES=   http://www.caam.rice.edu/software/ARPACK/SRC/
9 DISTFILES=      ${PORTNAME}${PORTVERSION}.tar.gz patch.tar.gz
10 DIST_SUBDIR=    arpack
11 EXTRACT_ONLY=   ${PORTNAME}${PORTVERSION}.tar.gz
12
13 MAINTAINER=     ports@FreeBSD.org
14 COMMENT=        Argand Library: large eigenvalue subroutines (serial version)
15
16 BUILD_DEPENDS=  tradcpp:devel/tradcpp
17
18 CONFLICTS=      arpack-ng-[0-9]*
19 CPP=            tradcpp
20 FFLAGS+=        -ffixed-line-length-none
21 LDFLAGS+=       -L${LOCALBASE}/lib
22 MAKE_JOBS_UNSAFE=       yes
23 USES=           fortran
24 USE_LDCONFIG=   yes
25 WRKSRC=         ${WRKDIR}/ARPACK
26
27 # The following lapack symbols in arpack are renamed to avoid conflicts with other
28 # lapack libraries:
29 RENAMED_SYMBOLS=        cgbtf2 cgbtrf cgbtrs cgeqr2 cgttrf cgttrs clacgv \
30                         clacon clacpy cladiv clahqr clange clanhs clarf \
31                         clarfg clarnv clartg clascl claset classq claswp \
32                         clatrs cmach crot ctrevc ctrexc ctrsen ctrsyl cunm2r \
33                         dgbtf2 dgbtrf dgbtrs dgeqr2 dgttrf dgttrs dlabad \
34                         dlacon dlacpy dladiv dlae2 dlaev2 dlaexc dlagtm \
35                         dlahqr dlaln2 dlamc1 dlamc2 dlamc3 dlamc4 dlamc5 \
36                         dlamch dlange dlanhs dlanst dlanv2 dlaptm dlapy2 \
37                         dlapy3 dlaran dlarf dlarfg dlarfx dlarnd dlarnv \
38                         dlartg dlaruv dlascl dlaset dlasr dlasrt dlassq \
39                         dlaswp dlasy2 dorm2r dpttrf dpttrs dsteqr dtrevc \
40                         dtrexc dtrsen dtrsyl dzsum1 icmax1 ilaenv izmax1 \
41                         lsame lsamen scsum1 second sgbtf2 sgbtrf sgbtrs \
42                         sgeqr2 sgttrf sgttrs slabad slacon slacpy sladiv \
43                         slae2 slaev2 slaexc slagtm slahqr slaln2 slamc1 \
44                         slamc2 slamc3 slamc4 slamc5 slamch slange slanhs \
45                         slanst slanv2 slaptm slapy2 slapy3 slaran slarf \
46                         slarfg slarfx slarnd slarnv slartg slaruv slascl \
47                         slaset slasr slasrt slassq slaswp slasy2 sorm2r \
48                         spttrf spttrs ssteqr strevc strexc strsen strsyl \
49                         xerbla xlaenv zgbtf2 zgbtrf zgbtrs zgeqr2 zgttrf \
50                         zgttrs zlacgv zlacon zlacpy zladiv zlahqr zlange \
51                         zlanhs zlarf zlarfg zlarnv zlartg zlascl zlaset \
52                         zlassq zlaswp zlatrs zmach zrot ztrevc ztrexc ztrsen \
53                         ztrsyl zunm2r
54
55 BANDTESTS=      ssbdr1 ssbdr2 ssbdr3 ssbdr4 ssbdr5 ssbdr6 \
56                 dsbdr1 dsbdr2 dsbdr3 dsbdr4 dsbdr5 dsbdr6 \
57                 snbdr1 snbdr2 snbdr3 snbdr4 snbdr5 snbdr6 \
58                 dnbdr1 dnbdr2 dnbdr3 dnbdr4 dnbdr5 dnbdr6 \
59                 cnbdr1 cnbdr2 cnbdr3 cnbdr4 \
60                 znbdr1 znbdr2 znbdr3 znbdr4
61 COMPLEXTESTS=   cndrv1 cndrv2 cndrv3 cndrv4 \
62                 zndrv1 zndrv2 zndrv3 zndrv4
63 NONSYMTESTS=    sndrv1 sndrv2 sndrv3 sndrv4 sndrv5 sndrv6 \
64                 dndrv1 dndrv2 dndrv3 dndrv4 dndrv5 dndrv6
65 SIMPLETESTS=    sssimp dssimp snsimp dnsimp cnsimp znsimp
66 SVDTESTS=       ssvd dsvd
67 SYMTESTS=       ssdrv1 ssdrv2 ssdrv3 ssdrv4 ssdrv5 ssdrv6 \
68                 dsdrv1 dsdrv2 dsdrv3 dsdrv4 dsdrv5 dsdrv6
69
70 OPTIONS_DEFINE= DOCS
71
72 .include <bsd.port.pre.mk>
73
74 .if ${PORT_OPTIONS:MDOCS}
75 DISTFILES+=     ug.ps.gz
76 .endif
77
78 .if exists(${LOCALBASE}/lib/libatlas.so)
79 WITH_BLAS?=     atlas
80 .else
81 WITH_BLAS?=     reference
82 .endif
83
84 .if ${WITH_BLAS} == atlas
85 LIB_DEPENDS+=           libatlas.so:math/atlas
86 BLAS?=                  -lf77blas
87 .else
88 LIB_DEPENDS+=           libblas.so:math/blas
89 BLAS?=                  -lblas
90 .endif
91
92 .if ${ARCH} == "sparc64"
93 PICFLAG?=       -fPIC
94 .else
95 PICFLAG?=       -fpic
96 .endif
97
98 post-extract:
99         @${TAR} -C ${WRKDIR} -xzf ${_DISTDIR}/patch.tar.gz
100         @${GZIP_CMD} ${WRKSRC}/DOCUMENTS/ex-*.doc
101
102 post-patch:
103         @${REINPLACE_CMD} -E \
104                 -e '/^(home|AR|FC|LDFLAGS|MAKE|PLAT|RANLIB|SHELL)[[:blank:]]+=/d' \
105                 -e '/^ARPACKLIB[[:blank:]]+=/s/_\$$\(PLAT\)//' \
106                 -e '\|^BLASLIB[[:blank:]]+=|s|=.*|= ${LDFLAGS} ${BLAS}|' \
107                 -e '/^DIRS[[:blank:]]+=/s/\$$\(BLASdir\)//' \
108                 -e '\|^FFLAGS[[:blank:]]+=|s|=.*|= ${FFLAGS} $${PICFLAG}|' \
109                         ${WRKSRC}/ARmake.inc
110         @${CP} -R ${WRKSRC} ${WRKSRC}_SHARED
111         @${ECHO_CMD} ${RENAMED_SYMBOLS} | ${AWK} \
112                 'BEGIN { printf "%s\n\n%s\t%s\n%s\t%s\n\n", \
113                         "/* arpack symbol renaming preprocessor macros, C interface */", \
114                         "#ifndef", "_ARPACK_COMPAT_C_H_", \
115                         "#define", "_ARPACK_COMPAT_C_H_" \
116                         > "${WRKDIR}/arpack_compat_c.h" ; \
117                         printf "%s\n\n%s\t%s\n%s\t%s\n\n", \
118                         "/* arpack symbol renaming preprocessor macros, FORTRAN interface */", \
119                         "#ifndef", "_ARPACK_COMPAT_F_H_", \
120                         "#define", "_ARPACK_COMPAT_F_H_" \
121                         > "${WRKDIR}/arpack_compat_f.h" } ; \
122                 { for (i = 1; i <= NF; i++) { \
123                         printf  "%s\t%s%s\t%s%s%s\n", "#define", $$i, "_", \
124                         "arpack_", $$i, "_" > "${WRKDIR}/arpack_compat_c.h" ; \
125                         printf  "%s\t%s\t%s%s\n%s\t%s\t%s%s\n", "#define", \
126                         toupper($$i), "ARPACK_", toupper($$i), "#define", $$i, \
127                         "ARPACK_", toupper($$i) \
128                         > "${WRKDIR}/arpack_compat_f.h" } } ; \
129                 END { print "\n#endif" >  "${WRKDIR}/arpack_compat_c.h" ; \
130                 print "\n#endif" >  "${WRKDIR}/arpack_compat_f.h" }' -
131
132 pre-build:
133         @${ECHO_CMD} "Renaming LAPACK functions ..."
134         @for f in `${FIND} ${WRKDIR} -type f -mindepth 2 -name '*.f'` ; do \
135                 ${MV} $${f} $${f}.unproc ; \
136                 ${CPP} -C -I${WRKDIR} -imacros arpack_compat_f.h \
137                         $${f}.unproc $${f} ; done
138
139 do-build:
140         @cd ${WRKSRC} ; ${SETENV} ${MAKE_ENV} \
141                 PICFLAG= home="${WRKSRC}" \
142                 ${MAKE} ${_MAKE_JOBS} ${MAKE_ARGS} ${ALL_TARGET}
143         @cd ${WRKSRC}_SHARED ; ${SETENV} ${MAKE_ENV} \
144                 PICFLAG=${PICFLAG}  home="${WRKSRC}_SHARED" \
145                 ${MAKE} ${_MAKE_JOBS} ${MAKE_ARGS} ${ALL_TARGET} ; \
146                 ${FC} ${FFLAGS} ${PICFLAG} ${LDFLAGS} -shared \
147                 -o libarpack.so.1 -Wl,-x -Wl,-soname,libarpack.so.1 \
148                 -Wl,--whole-archive libarpack.a -Wl,--no-whole-archive
149
150 do-install:
151         @${INSTALL_DATA} ${FILESDIR}/arpack.h ${WRKDIR}/arpack_compat_c.h \
152                 ${WRKDIR}/arpack_compat_f.h ${STAGEDIR}${PREFIX}/include
153         @${INSTALL_DATA} ${WRKSRC}/libarpack.a ${STAGEDIR}${PREFIX}/lib
154         @${INSTALL_DATA} -s ${WRKSRC}_SHARED/libarpack.so.1 ${STAGEDIR}${PREFIX}/lib
155         @${LN} -sf libarpack.so.1 ${STAGEDIR}${PREFIX}/lib/libarpack.so
156 .if ${PORT_OPTIONS:MDOCS}
157         @${MKDIR} ${STAGEDIR}${DOCSDIR}
158         @${INSTALL_DATA} ${WRKSRC}/DOCUMENTS/ex-*.doc.gz ${STAGEDIR}${DOCSDIR}
159         @${INSTALL_DATA} ${DISTDIR}/${DIST_SUBDIR}/ug.ps.gz ${STAGEDIR}${DOCSDIR}
160 .endif
161
162 .if defined(MAINTAINER_MODE)
163 check regression-test test: simpletest
164 .endif
165
166 simpletest: build
167         @cd ${WRKSRC}/EXAMPLES/SIMPLE ; ${SETENV} ${MAKE_ENV} \
168                 PICFLAG= home="${WRKSRC}" \
169                 ${MAKE} ${_MAKE_JOBS} ${MAKE_ARGS} simple ; \
170                 ${SIMPLETESTS:S|^|./|:S|$| ; |}
171         @cd ${WRKSRC}_SHARED/EXAMPLES/SIMPLE ; ${SETENV} ${MAKE_ENV} \
172                 PICFLAG=${PICFLAG}  home="${WRKSRC}_SHARED" \
173                 ${MAKE} ${_MAKE_JOBS} ${MAKE_ARGS} simple ; \
174                 ${SIMPLETESTS:S|^|./|:S|$| ; |}
175
176 fulltest: fulltest-static fulltest-shared
177
178 fulltest-static: lapack-drivers-static
179 .for d in BAND COMPLEX NONSYM SVD SYM
180         @cd ${WRKSRC}/EXAMPLES/${d} ; ${SETENV} ${MAKE_ENV} \
181                 PICFLAG= home="${WRKSRC}" \
182                 ${MAKE} ${_MAKE_JOBS} ${MAKE_ARGS} ${${d}TESTS} ; \
183                 ${${d}TESTS:S|^|./|:S|$| ; |}
184 .endfor
185
186 fulltest-shared: lapack-drivers-shared
187 .for d in BAND COMPLEX NONSYM SIMPLE SVD SYM
188         @cd ${WRKSRC}_SHARED/EXAMPLES/${d} ; ${SETENV} ${MAKE_ENV} \
189                 PICFLAG=${PICFLAG}  home="${WRKSRC}_SHARED" \
190                 ${MAKE} ${_MAKE_JOBS} ${MAKE_ARGS} ${${d}TESTS} ; \
191                 ${${d}TESTS:S|^|./|:S|$| ; |}
192 .endfor
193
194 lapack-drivers-static: build
195         @cd ${WRKSRC}/LAPACK ; ${SETENV} ${MAKE_ENV} \
196                 PICFLAG= home="${WRKSRC}" \
197                 ${MAKE} ${_MAKE_JOBS} ${MAKE_ARGS} sdrv ddrv cdrv zdrv
198
199 lapack-drivers-shared: build
200         @cd ${WRKSRC}_SHARED/LAPACK ; ${SETENV} ${MAKE_ENV} \
201                 PICFLAG=${PICFLAG}  home="${WRKSRC}_SHARED" \
202                 ${MAKE} ${_MAKE_JOBS} ${MAKE_ARGS} sdrv ddrv cdrv zdrv
203
204 .include <bsd.port.post.mk>