Tweak math/qtiplot version 0.9.8.9_8
[dports.git] / math / suitesparse / Makefile
1 # Created by: Maho Nakata <maho@FreeBSD.org>
2 # $FreeBSD$
3
4 PORTNAME=       suitesparse
5 PORTVERSION=    4.0.2
6 PORTREVISION=   4
7 CATEGORIES=     math
8 MASTER_SITES=   http://www.cise.ufl.edu/research/sparse/SuiteSparse/
9 DISTNAME=       SuiteSparse-${PORTVERSION}
10
11 MAINTAINER=     maho@FreeBSD.org
12 COMMENT=        SuiteSparse is a set of packages for sparse matrices calculation
13
14 LICENSE=        GPLv2 LGPL21
15 LICENSE_COMB=   multi
16
17 USES=           fortran gmake
18
19 .if defined (WITH_METIS)
20 LIB_DEPENDS=    libmetis.so:${PORTSDIR}/math/metis4
21
22 RESTRICTED=     GPL and METIS licenses are contradictory
23 .endif
24
25 CONFLICTS=      umfpack-*
26
27 .include <bsd.port.pre.mk>
28
29 .if exists(${LOCALBASE}/lib/libopenblas.so)
30 WITH_BLAS?=     openblas
31 .elif exists(${LOCALBASE}/lib/libgoto2.so)
32 WITH_BLAS?=     gotoblas
33 .elif exists(${LOCALBASE}/lib/libatlas.so)
34 WITH_BLAS?=     atlas
35 .else
36 WITH_BLAS?=     reference
37 .endif
38
39 CFLAGS+=        ${PTHREAD_CFLAGS}
40 LDFLAGS+=       -L${LOCALBASE}/lib
41
42 .if ${WITH_BLAS} == reference
43 LIB_DEPENDS+=   libblas.so:${PORTSDIR}/math/blas
44 LIB_DEPENDS+=   liblapack.so:${PORTSDIR}/math/lapack
45 BLAS=           -lblas
46 LAPACK=         -llapack
47 .elif ${WITH_BLAS} == openblas
48 LIB_DEPENDS+=   libopenblas.so:${PORTSDIR}/math/openblas
49 BLAS=           -lopenblasp
50 LAPACK=         -lopenblasp
51 .elif ${WITH_BLAS} == gotoblas
52 LIB_DEPENDS+=   libgoto2.so:${PORTSDIR}/math/gotoblas
53 LIB_DEPENDS+=   liblapack.so:${PORTSDIR}/math/lapack
54 BLAS=           -lgoto2p
55 LAPACK=         -lgoto2p
56 .elif ${WITH_BLAS} == atlas
57 LIB_DEPENDS+=   libatlas.so:${PORTSDIR}/math/atlas
58 BLAS=           -lptf77blas
59 LAPACK=         -lalapack -lptcblas
60 .endif
61
62 .if ${ARCH} == "sparc64"
63 PICFLAG?=       -fPIC
64 .else
65 PICFLAG?=       -fpic
66 .endif
67
68 USE_LDCONFIG=   yes
69 WRKSRC=${WRKDIR}/SuiteSparse
70 WRKSRC_SHARED=${WRKSRC}_shared
71 SVERSION=1
72
73 .if defined (WITH_METIS)
74 METIS=${LOCALBASE}/lib/libmetis.a
75 METIS_PATH=${LOCALBASE}/include/metis
76 CHOLMOD_CONFIG= 
77 .else
78 CHOLMOD_CONFIG=         -DNPARTITION
79 .endif
80
81 post-patch:
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}|' \
85                         -e '\|^CC =|d' \
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}|' \
89                         -e '\|^F77 =|d' \
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'
102
103 do-build:
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}
108
109 post-build:
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} ; \
113         done
114
115 do-install:
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
120 .endfor
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 ; \
128         done
129
130 .include <bsd.port.post.mk>