1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-13 03:03:15 +00:00
freebsd-ports/math/arpack/Makefile
Gerald Pfeifer e4b7b9118a Bump PORTREVISIONS for ports depending on the canonical version of GCC and
lang/gcc which have moved from GCC 4.8.5 to GCC 4.9.4 (at least under some
circumstances such as versions of FreeBSD or platforms), part II.

The first part covered  ports with USE_GCC=yes, USE_GCC=any, or one of
gcc-c++11-lib, openmp, nestedfct, c++11-lib as well as c++14-lang,
c++11-lang, c++0x, c11 requested via USES=compiler.

This adds ports with USES=fortran and ports using Mk/bsd.octave.mk
which in turn has USES=fortran.

PR:		214965
Reported by:	thierry
2016-12-07 13:24:56 +00:00

205 lines
7.1 KiB
Makefile

# Created by: Pedro F. Giffuni
# $FreeBSD$
PORTNAME= arpack
PORTVERSION= 96
PORTREVISION= 14
CATEGORIES= math
MASTER_SITES= http://www.caam.rice.edu/software/ARPACK/SRC/
DISTFILES= ${PORTNAME}${PORTVERSION}.tar.gz patch.tar.gz
DIST_SUBDIR= arpack
EXTRACT_ONLY= ${PORTNAME}${PORTVERSION}.tar.gz
MAINTAINER= ports@FreeBSD.org
COMMENT= Argand Library: large eigenvalue subroutines (serial version)
BUILD_DEPENDS= tradcpp:devel/tradcpp
CONFLICTS= arpack-ng-[0-9]*
CPP= tradcpp
FFLAGS+= -ffixed-line-length-none
LDFLAGS+= -L${LOCALBASE}/lib
MAKE_JOBS_UNSAFE= yes
USES= fortran
USE_LDCONFIG= yes
WRKSRC= ${WRKDIR}/ARPACK
# The following lapack symbols in arpack are renamed to avoid conflicts with other
# lapack libraries:
RENAMED_SYMBOLS= cgbtf2 cgbtrf cgbtrs cgeqr2 cgttrf cgttrs clacgv \
clacon clacpy cladiv clahqr clange clanhs clarf \
clarfg clarnv clartg clascl claset classq claswp \
clatrs cmach crot ctrevc ctrexc ctrsen ctrsyl cunm2r \
dgbtf2 dgbtrf dgbtrs dgeqr2 dgttrf dgttrs dlabad \
dlacon dlacpy dladiv dlae2 dlaev2 dlaexc dlagtm \
dlahqr dlaln2 dlamc1 dlamc2 dlamc3 dlamc4 dlamc5 \
dlamch dlange dlanhs dlanst dlanv2 dlaptm dlapy2 \
dlapy3 dlaran dlarf dlarfg dlarfx dlarnd dlarnv \
dlartg dlaruv dlascl dlaset dlasr dlasrt dlassq \
dlaswp dlasy2 dorm2r dpttrf dpttrs dsteqr dtrevc \
dtrexc dtrsen dtrsyl dzsum1 icmax1 ilaenv izmax1 \
lsame lsamen scsum1 second sgbtf2 sgbtrf sgbtrs \
sgeqr2 sgttrf sgttrs slabad slacon slacpy sladiv \
slae2 slaev2 slaexc slagtm slahqr slaln2 slamc1 \
slamc2 slamc3 slamc4 slamc5 slamch slange slanhs \
slanst slanv2 slaptm slapy2 slapy3 slaran slarf \
slarfg slarfx slarnd slarnv slartg slaruv slascl \
slaset slasr slasrt slassq slaswp slasy2 sorm2r \
spttrf spttrs ssteqr strevc strexc strsen strsyl \
xerbla xlaenv zgbtf2 zgbtrf zgbtrs zgeqr2 zgttrf \
zgttrs zlacgv zlacon zlacpy zladiv zlahqr zlange \
zlanhs zlarf zlarfg zlarnv zlartg zlascl zlaset \
zlassq zlaswp zlatrs zmach zrot ztrevc ztrexc ztrsen \
ztrsyl zunm2r
BANDTESTS= ssbdr1 ssbdr2 ssbdr3 ssbdr4 ssbdr5 ssbdr6 \
dsbdr1 dsbdr2 dsbdr3 dsbdr4 dsbdr5 dsbdr6 \
snbdr1 snbdr2 snbdr3 snbdr4 snbdr5 snbdr6 \
dnbdr1 dnbdr2 dnbdr3 dnbdr4 dnbdr5 dnbdr6 \
cnbdr1 cnbdr2 cnbdr3 cnbdr4 \
znbdr1 znbdr2 znbdr3 znbdr4
COMPLEXTESTS= cndrv1 cndrv2 cndrv3 cndrv4 \
zndrv1 zndrv2 zndrv3 zndrv4
NONSYMTESTS= sndrv1 sndrv2 sndrv3 sndrv4 sndrv5 sndrv6 \
dndrv1 dndrv2 dndrv3 dndrv4 dndrv5 dndrv6
SIMPLETESTS= sssimp dssimp snsimp dnsimp cnsimp znsimp
SVDTESTS= ssvd dsvd
SYMTESTS= ssdrv1 ssdrv2 ssdrv3 ssdrv4 ssdrv5 ssdrv6 \
dsdrv1 dsdrv2 dsdrv3 dsdrv4 dsdrv5 dsdrv6
OPTIONS_DEFINE= DOCS
.include <bsd.port.pre.mk>
.if ${PORT_OPTIONS:MDOCS}
DISTFILES+= ug.ps.gz
.endif
.if exists(${LOCALBASE}/lib/libatlas.so)
WITH_BLAS?= atlas
.else
WITH_BLAS?= reference
.endif
.if ${WITH_BLAS} == atlas
LIB_DEPENDS+= libatlas.so:math/atlas
BLAS?= -lf77blas
.else
LIB_DEPENDS+= libblas.so:math/blas
BLAS?= -lblas
.endif
.if ${ARCH} == "sparc64"
PICFLAG?= -fPIC
.else
PICFLAG?= -fpic
.endif
post-extract:
@${TAR} -C ${WRKDIR} -xzf ${_DISTDIR}/patch.tar.gz
@${GZIP_CMD} ${WRKSRC}/DOCUMENTS/ex-*.doc
post-patch:
@${REINPLACE_CMD} -E \
-e '/^(home|AR|FC|LDFLAGS|MAKE|PLAT|RANLIB|SHELL)[[:blank:]]+=/d' \
-e '/^ARPACKLIB[[:blank:]]+=/s/_\$$\(PLAT\)//' \
-e '\|^BLASLIB[[:blank:]]+=|s|=.*|= ${LDFLAGS} ${BLAS}|' \
-e '/^DIRS[[:blank:]]+=/s/\$$\(BLASdir\)//' \
-e '\|^FFLAGS[[:blank:]]+=|s|=.*|= ${FFLAGS} $${PICFLAG}|' \
${WRKSRC}/ARmake.inc
@${CP} -R ${WRKSRC} ${WRKSRC}_SHARED
@${ECHO_CMD} ${RENAMED_SYMBOLS} | ${AWK} \
'BEGIN { printf "%s\n\n%s\t%s\n%s\t%s\n\n", \
"/* arpack symbol renaming preprocessor macros, C interface */", \
"#ifndef", "_ARPACK_COMPAT_C_H_", \
"#define", "_ARPACK_COMPAT_C_H_" \
> "${WRKDIR}/arpack_compat_c.h" ; \
printf "%s\n\n%s\t%s\n%s\t%s\n\n", \
"/* arpack symbol renaming preprocessor macros, FORTRAN interface */", \
"#ifndef", "_ARPACK_COMPAT_F_H_", \
"#define", "_ARPACK_COMPAT_F_H_" \
> "${WRKDIR}/arpack_compat_f.h" } ; \
{ for (i = 1; i <= NF; i++) { \
printf "%s\t%s%s\t%s%s%s\n", "#define", $$i, "_", \
"arpack_", $$i, "_" > "${WRKDIR}/arpack_compat_c.h" ; \
printf "%s\t%s\t%s%s\n%s\t%s\t%s%s\n", "#define", \
toupper($$i), "ARPACK_", toupper($$i), "#define", $$i, \
"ARPACK_", toupper($$i) \
> "${WRKDIR}/arpack_compat_f.h" } } ; \
END { print "\n#endif" > "${WRKDIR}/arpack_compat_c.h" ; \
print "\n#endif" > "${WRKDIR}/arpack_compat_f.h" }' -
pre-build:
@${ECHO_CMD} "Renaming LAPACK functions ..."
@for f in `${FIND} ${WRKDIR} -type f -mindepth 2 -name '*.f'` ; do \
${MV} $${f} $${f}.unproc ; \
${CPP} -C -I${WRKDIR} -imacros arpack_compat_f.h \
$${f}.unproc $${f} ; done
do-build:
@cd ${WRKSRC} ; ${SETENV} ${MAKE_ENV} \
PICFLAG= home="${WRKSRC}" \
${MAKE} ${_MAKE_JOBS} ${MAKE_ARGS} ${ALL_TARGET}
@cd ${WRKSRC}_SHARED ; ${SETENV} ${MAKE_ENV} \
PICFLAG=${PICFLAG} home="${WRKSRC}_SHARED" \
${MAKE} ${_MAKE_JOBS} ${MAKE_ARGS} ${ALL_TARGET} ; \
${FC} ${FFLAGS} ${PICFLAG} ${LDFLAGS} -shared \
-o libarpack.so.1 -Wl,-x -Wl,-soname,libarpack.so.1 \
-Wl,--whole-archive libarpack.a -Wl,--no-whole-archive
do-install:
@${INSTALL_DATA} ${FILESDIR}/arpack.h ${WRKDIR}/arpack_compat_c.h \
${WRKDIR}/arpack_compat_f.h ${STAGEDIR}${PREFIX}/include
@${INSTALL_DATA} ${WRKSRC}/libarpack.a ${STAGEDIR}${PREFIX}/lib
@${INSTALL_DATA} -s ${WRKSRC}_SHARED/libarpack.so.1 ${STAGEDIR}${PREFIX}/lib
@${LN} -sf libarpack.so.1 ${STAGEDIR}${PREFIX}/lib/libarpack.so
.if ${PORT_OPTIONS:MDOCS}
@${MKDIR} ${STAGEDIR}${DOCSDIR}
@${INSTALL_DATA} ${WRKSRC}/DOCUMENTS/ex-*.doc.gz ${STAGEDIR}${DOCSDIR}
@${INSTALL_DATA} ${DISTDIR}/${DIST_SUBDIR}/ug.ps.gz ${STAGEDIR}${DOCSDIR}
.endif
.if defined(MAINTAINER_MODE)
check regression-test test: simpletest
.endif
simpletest: build
@cd ${WRKSRC}/EXAMPLES/SIMPLE ; ${SETENV} ${MAKE_ENV} \
PICFLAG= home="${WRKSRC}" \
${MAKE} ${_MAKE_JOBS} ${MAKE_ARGS} simple ; \
${SIMPLETESTS:S|^|./|:S|$| ; |}
@cd ${WRKSRC}_SHARED/EXAMPLES/SIMPLE ; ${SETENV} ${MAKE_ENV} \
PICFLAG=${PICFLAG} home="${WRKSRC}_SHARED" \
${MAKE} ${_MAKE_JOBS} ${MAKE_ARGS} simple ; \
${SIMPLETESTS:S|^|./|:S|$| ; |}
fulltest: fulltest-static fulltest-shared
fulltest-static: lapack-drivers-static
.for d in BAND COMPLEX NONSYM SVD SYM
@cd ${WRKSRC}/EXAMPLES/${d} ; ${SETENV} ${MAKE_ENV} \
PICFLAG= home="${WRKSRC}" \
${MAKE} ${_MAKE_JOBS} ${MAKE_ARGS} ${${d}TESTS} ; \
${${d}TESTS:S|^|./|:S|$| ; |}
.endfor
fulltest-shared: lapack-drivers-shared
.for d in BAND COMPLEX NONSYM SIMPLE SVD SYM
@cd ${WRKSRC}_SHARED/EXAMPLES/${d} ; ${SETENV} ${MAKE_ENV} \
PICFLAG=${PICFLAG} home="${WRKSRC}_SHARED" \
${MAKE} ${_MAKE_JOBS} ${MAKE_ARGS} ${${d}TESTS} ; \
${${d}TESTS:S|^|./|:S|$| ; |}
.endfor
lapack-drivers-static: build
@cd ${WRKSRC}/LAPACK ; ${SETENV} ${MAKE_ENV} \
PICFLAG= home="${WRKSRC}" \
${MAKE} ${_MAKE_JOBS} ${MAKE_ARGS} sdrv ddrv cdrv zdrv
lapack-drivers-shared: build
@cd ${WRKSRC}_SHARED/LAPACK ; ${SETENV} ${MAKE_ENV} \
PICFLAG=${PICFLAG} home="${WRKSRC}_SHARED" \
${MAKE} ${_MAKE_JOBS} ${MAKE_ARGS} sdrv ddrv cdrv zdrv
.include <bsd.port.post.mk>