1 # Created by: Maho Nakata <maho@FreeBSD.org>
8 MASTER_SITES= http://www.cise.ufl.edu/research/sparse/SuiteSparse/
9 DISTNAME= SuiteSparse-${PORTVERSION}
11 MAINTAINER= maho@FreeBSD.org
12 COMMENT= SuiteSparse is a set of packages for sparse matrices calculation
19 .if defined (WITH_METIS)
20 LIB_DEPENDS= libmetis.so:${PORTSDIR}/math/metis4
22 RESTRICTED= GPL and METIS licenses are contradictory
27 .include <bsd.port.pre.mk>
29 .if exists(${LOCALBASE}/lib/libopenblas.so)
31 .elif exists(${LOCALBASE}/lib/libgoto2.so)
33 .elif exists(${LOCALBASE}/lib/libatlas.so)
39 CFLAGS+= ${PTHREAD_CFLAGS}
40 LDFLAGS+= -L${LOCALBASE}/lib
42 .if ${WITH_BLAS} == reference
43 LIB_DEPENDS+= libblas.so:${PORTSDIR}/math/blas
44 LIB_DEPENDS+= liblapack.so:${PORTSDIR}/math/lapack
47 .elif ${WITH_BLAS} == openblas
48 LIB_DEPENDS+= libopenblas.so:${PORTSDIR}/math/openblas
51 .elif ${WITH_BLAS} == gotoblas
52 LIB_DEPENDS+= libgoto2.so:${PORTSDIR}/math/gotoblas
53 LIB_DEPENDS+= liblapack.so:${PORTSDIR}/math/lapack
56 .elif ${WITH_BLAS} == atlas
57 LIB_DEPENDS+= libatlas.so:${PORTSDIR}/math/atlas
59 LAPACK= -lalapack -lptcblas
62 .if ${ARCH} == "sparc64"
69 WRKSRC=${WRKDIR}/SuiteSparse
70 WRKSRC_SHARED=${WRKSRC}_shared
73 .if defined (WITH_METIS)
74 METIS=${LOCALBASE}/lib/libmetis.a
75 METIS_PATH=${LOCALBASE}/include/metis
78 CHOLMOD_CONFIG= -DNPARTITION
82 @${FIND} -X ${WRKSRC} -type f -name 'Makefile' -or -name '*.mk' | ${XARGS} \
83 ${REINPLACE_CMD} -e '\|^AR =|s|ar|${AR}|' \
84 -e '\|^BLAS =|s|=.*|= ${LDFLAGS} ${BLAS}|' \
86 -e '\|^CFLAGS =|{s|-O[1-9]\{0,1\}||g;s|=|= ${CFLAGS} $${PICFLAG} |;}' \
87 -e '\|^CHOLMOD_CONFIG =|s|=.*|= ${CHOLMOD_CONFIG}|' \
88 -e '\|^CPLUSPLUS =|s|=.*|= ${CXX}|' \
90 -e '\|^F77FLAGS =|s|=.*|= ${FFLAGS} $${PICFLAG}|' \
91 -e '\|^LAPACK =|s|=.*|= ${LDFLAGS} ${LAPACK}|' \
92 -e '\|^METIS =|s|=.*|= ${METIS}|' \
93 -e '\|^METIS_PATH =|s|=.*|= ${METIS_PATH}|' \
94 -e 's|-I\$$(METIS_PATH)/Lib|-I${METIS_PATH}|' \
95 -e '\|^RANLIB =|s|ranlib|${RANLIB}|' \
96 -e '\|^SPQR_CONFIG =|s|=.*|= ${CHOLMOD_CONFIG}|' \
97 -e 's|# MAKE = gmake|MAKE = gmake|g' \
98 -e 's|/usr/local|${LOCALBASE}|g'
99 @${CP} -r ${WRKSRC} ${WRKSRC_SHARED}
100 @${FIND} -X ${WRKSRC_SHARED} -type f -name 'Makefile' -or -name '*.mk' | ${XARGS} \
101 ${REINPLACE_CMD} -e 's|$$(CFLAGS)|$$(CFLAGS) $$(PICFLAG)|g'
104 @cd ${WRKSRC} ; ${SETENV} ${MAKE_ENV} PICFLAG= \
105 ${MAKE_CMD} ${_MAKE_JOBS} ${MAKE_ARGS}
106 @cd ${WRKSRC_SHARED} ; ${SETENV} ${MAKE_ENV} PICFLAG=${PICFLAG} \
107 ${MAKE_CMD} ${_MAKE_JOBS} ${MAKE_ARGS}
110 @for i in `find ${WRKSRC_SHARED} -type f -name '*.a'` ; do \
111 j=$${i##*/} ; ${LD} -Bshareable -o $${i%.a}.so.${SVERSION} -x \
112 -soname $${j%.a}.so.${SVERSION} --whole-archive $${i} ; \
116 @${MKDIR} ${STAGEDIR}${PREFIX}/include/suitesparse
117 @${LN} -sf ${PREFIX}/include/suitesparse ${STAGEDIR}${PREFIX}/include/ufsparse
118 .for d in AMD BTF CAMD CCOLAMD CHOLMOD COLAMD CXSparse KLU SPQR UMFPACK
119 @${INSTALL_DATA} ${WRKSRC}/${d}/Include/*.h ${STAGEDIR}${PREFIX}/include/suitesparse
121 @${INSTALL_DATA} ${WRKSRC}/SuiteSparse_config/SuiteSparse_config.h ${STAGEDIR}${PREFIX}/include/suitesparse
122 @${INSTALL_DATA} ${WRKSRC}/UMFPACK/Source/umf_config.h ${STAGEDIR}${PREFIX}/include/suitesparse
123 @${INSTALL_DATA} ${WRKSRC}/SPQR/Include/*.hpp ${STAGEDIR}${PREFIX}/include/suitesparse
124 @for i in `find ${WRKSRC_SHARED} -type f -name '*.a'` ; do \
125 ${INSTALL_DATA} ${WRKSRC}/$${i##${WRKSRC_SHARED}/} \
126 $${i%.a}.so.${SVERSION} ${STAGEDIR}${PREFIX}/lib ; \
127 j=$${i##*/} ; ${LN} -sf $${j%.a}.so.${SVERSION} ${STAGEDIR}${PREFIX}/lib/$${j%.a}.so ; \
130 .include <bsd.port.post.mk>