aboutsummaryrefslogtreecommitdiffstats
path: root/math/mumps/Makefile
blob: 2be0a3153db8916b7d814f91910654198dcb6579 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# New ports collection makefile for:    MUMPS
# Date created:     5 Mar 2006
# Whom:         Pedro Giffuni
#
# $FreeBSD$
#

PORTNAME=   mumps
PORTVERSION=    4.6.3
CATEGORIES= math
MASTER_SITES=   http://www.enseeiht.fr/apo/MUMPS/   \
        http://graal.ens-lyon.fr/MUMPS/
DISTNAME=   MUMPS_${PORTVERSION}

MAINTAINER= giffunip@asme.org
COMMENT=    MUltifrontal Massively Parallel sparse direct Solver

BUILD_DEPENDS=  ${FC}:${PORTSDIR}/lang/gfortran
.ifdef WITH_MPI
BUILD_DEPENDS+= ${LOCALBASE}/mpich/include/mpif.h:${PORTSDIR}/net/mpich \
        ${LOCALBASE}/lib/libscalapack.a:${PORTSDIR}/math/scalapack  \
        ${LOCALBASE}/lib/libblacs.a:${PORTSDIR}/math/blacs
.endif
.ifdef WITH_METIS
BUILD_DEPENDS+= ${LOCALBASE}/lib/libmetis.a:${PORTSDIR}/math/metis
.endif

#-----------------------------------------------------------------------

# WARNING: Non-serviceable parts inside, can break other ports
# You may define these options/knobs:
#
# FFLAGS: Fortran compiler flags for gfortran
# WITH_OPTIMIZED_FLAGS:Try to use agressive (non-CPU) FFLAGS
# BLAS_LIBS: specify other version of BLAS
# WITH_ATLAS: Use ATLAS instead of the regular BLAS
# WITH_GFC_BLAS: BLAS was generated with gfortran, not g77
# WITH_METIS: Add METIS ordering
# WITH_MPI: Use mpich for the parallel version
#-----------------------------------------------------------------------

USE_GCC=    4.1+
WITH_FORTRAN=   yes
FC= ${LOCALBASE}/bin/gfortran41

.if defined(WITH_OPTIMIZED_FLAGS)
FFLAGS+=    -O3 -ffast-math
.endif

.ifndef WITH_GFC_BLAS   # g77 compatibility
MAKE_ENV+=  CDEFS=-DAdd__
FCFLAGS=    -ff2c ${FFLAGS}
.else
FCFLAGS?=   ${FFLAGS}
.endif

.ifdef WITH_ATLAS
LIB_DEPENDS+=   atlas.1:${PORTSDIR}/math/atlas
BLAS_LIBS=  -lptf77blas -latlas_r
.else
LIB_DEPENDS+=   blas.1:${PORTSDIR}/math/blas
BLAS_LIBS?= -lblas
.endif

.ifdef WITH_METIS
MAKE_ENV+=  ORDERINGSF=-Dmetis
.endif

.ifndef WITH_MPI
PLIST_SUB+= WITH_LIBSEQ=""
.else
PLIST_SUB+= WITH_LIBSEQ="@comment "
.endif
PLIST_SUB+= MUMPSVERSION=${PORTVERSION}

post-patch:
.ifdef WITH_MPI
    @${INSTALL_DATA} ${WRKSRC}/Make.inc/Makefile.inc.generic \
        ${WRKSRC}/Makefile.inc
.else
    @${INSTALL_DATA} ${WRKSRC}/Make.inc/Makefile.inc.generic.SEQ \
        ${WRKSRC}/Makefile.inc
.endif

pre-build:
    @${REINPLACE_CMD} -e 's+@CC@+${CC}+g ; s+@FC@+${FC}+g ; \
    s+@CFLAGS@+${CFLAGS}+g; \
    s+@FCFLAGS@+${FCFLAGS}+g; \
    s+@PTHREAD_LIBS@+${PTHREAD_LIBS}+g; \
    s+@BLAS_LIBS@+${BLAS_LIBS}+ ; \
    s+@LOCALBASE@+${LOCALBASE}+g;' \
        ${WRKSRC}/Makefile.inc
.ifdef WITH_METIS
    @${REINPLACE_CMD} -e 's+#LMETIS+LMETIS+' ${WRKSRC}/Makefile.inc
.endif

do-install:
    ${INSTALL_DATA} ${WRKSRC}/include/*.h ${PREFIX}/include
    ${INSTALL_DATA} ${WRKSRC}/lib/lib*.a ${PREFIX}/lib
.ifndef WITH_MPI
    ${INSTALL_DATA} ${WRKSRC}/libseq/libmpiseq.a ${PREFIX}/lib
.endif
.ifndef NOPORTDOCS
    @${MKDIR} ${DOCSDIR}
    ${INSTALL_DATA} ${WRKSRC}/doc/userguide_${PORTVERSION}.pdf ${DOCSDIR}
    ${INSTALL_DATA} ${WRKSRC}/doc/userguide_${PORTVERSION}.ps ${DOCSDIR}
    ${GZIP_CMD} ${DOCSDIR}/userguide_${PORTVERSION}.ps
.endif

.include <bsd.port.mk>