1 # Created by: Pedro F. Giffuni
8 MASTER_SITES= http://www.caam.rice.edu/software/ARPACK/SRC/
9 DISTFILES= ${PORTNAME}${PORTVERSION}.tar.gz patch.tar.gz
11 EXTRACT_ONLY= ${PORTNAME}${PORTVERSION}.tar.gz
13 MAINTAINER= ports@FreeBSD.org
14 COMMENT= Argand Library: large eigenvalue subroutines (serial version)
16 BUILD_DEPENDS= tradcpp:devel/tradcpp
18 CONFLICTS= arpack-ng-[0-9]*
20 FFLAGS+= -ffixed-line-length-none
21 LDFLAGS+= -L${LOCALBASE}/lib
25 WRKSRC= ${WRKDIR}/ARPACK
27 # The following lapack symbols in arpack are renamed to avoid conflicts with other
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 \
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
67 SYMTESTS= ssdrv1 ssdrv2 ssdrv3 ssdrv4 ssdrv5 ssdrv6 \
68 dsdrv1 dsdrv2 dsdrv3 dsdrv4 dsdrv5 dsdrv6
72 .include <bsd.port.pre.mk>
74 .if ${PORT_OPTIONS:MDOCS}
78 .if exists(${LOCALBASE}/lib/libatlas.so)
84 .if ${WITH_BLAS} == atlas
85 LIB_DEPENDS+= libatlas.so:math/atlas
88 LIB_DEPENDS+= libblas.so:math/blas
92 .if ${ARCH} == "sparc64"
99 @${TAR} -C ${WRKDIR} -xzf ${_DISTDIR}/patch.tar.gz
100 @${GZIP_CMD} ${WRKSRC}/DOCUMENTS/ex-*.doc
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}|' \
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" }' -
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
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
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}
162 .if defined(MAINTAINER_MODE)
163 check regression-test test: simpletest
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|$| ; |}
176 fulltest: fulltest-static fulltest-shared
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|$| ; |}
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|$| ; |}
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
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
204 .include <bsd.port.post.mk>