summaryrefslogtreecommitdiff
path: root/math/mumps
diff options
context:
space:
mode:
Diffstat (limited to 'math/mumps')
-rw-r--r--math/mumps/Makefile137
-rw-r--r--math/mumps/distinfo2
-rw-r--r--math/mumps/files/patch-Make.inc_Makefile.FREEBSD10.PAR89
-rw-r--r--math/mumps/files/patch-Make.inc_Makefile.FREEBSD10.SEQ73
-rw-r--r--math/mumps/files/patch-Makefile20
-rw-r--r--math/mumps/files/patch-PORD_lib_Makefile23
-rw-r--r--math/mumps/files/patch-examples_Makefile15
-rw-r--r--math/mumps/files/patch-libseq_Makefile27
-rw-r--r--math/mumps/files/patch-src_Makefile53
-rw-r--r--math/mumps/pkg-descr16
-rw-r--r--math/mumps/pkg-plist51
11 files changed, 506 insertions, 0 deletions
diff --git a/math/mumps/Makefile b/math/mumps/Makefile
new file mode 100644
index 000000000000..fe03475b993f
--- /dev/null
+++ b/math/mumps/Makefile
@@ -0,0 +1,137 @@
+# Created by: Pedro Giffuni
+# $FreeBSD$
+
+PORTNAME= mumps
+DISTVERSION= 5.1.1-aster2
+PORTREVISION= 4
+CATEGORIES= math
+PKGNAMESUFFIX= -edf
+
+MAINTAINER= thierry@FreeBSD.org
+COMMENT= MUltifrontal Massively Parallel sparse direct Solver for Code_Aster
+
+LICENSE= CeCILL_C
+LICENSE_NAME= CeCILL-C
+LICENSE_FILE= ${WRKSRC}/LICENSE
+LICENSE_PERMS= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
+
+LIB_DEPENDS= libblas.so:math/blas \
+ liblapack.so:math/lapack \
+ libmetis.so:math/metis
+
+USES= fortran
+
+WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION:R}
+BLAS_LIBS= -lblas
+LAPACK_LIBS= -llapack
+FORTRANLIBS= -lgfortran
+GCCLIBDIR= ${LDFLAGS}
+USE_LDCONFIG= yes
+VEM= ${PORTVERSION:R:R:R}
+MUMPSVERSION= ${PORTVERSION:R}
+LIBS= cmumps dmumps mumps_common pord smumps zmumps
+PLIST_SUB= VE=${VEM} MUMPSVERSION=${MUMPSVERSION}
+
+CONFLICTS= mumps4-4*
+
+OPTIONS_DEFINE= DOCS EXAMPLES
+
+MAKE_JOBS_UNSAFE=yes
+
+.include <bsd.port.pre.mk>
+.include "${.CURDIR}/../../french/aster/bsd.aster.mk"
+
+.ifdef WITH_MPI
+PKGNAMESUFFIX+= -mpich
+BUILD_DEPENDS+= ${LOCALBASE}/include/mpif.h:net/mpich2 \
+ ${LOCALBASE}/lib/libblacs.a:math/blacs \
+ ${LOCALBASE}/lib/libptscotch.a:cad/scotch \
+ ${LOCALBASE}/lib/libscalapack.a:math/scalapack \
+ ${LOCALBASE}/lib/parmetis/libmetis.a:math/parmetis
+LIB_DEPENDS+= liblapack.so:math/lapack
+# Note: -l?mumps still requires to be linked with -lblacs + -lscalapack
+RUN_DEPENDS+= ${LOCALBASE}/bin/mpirun:net/mpich2 \
+ ${LOCALBASE}/lib/libblacs.a:math/blacs \
+ ${LOCALBASE}/lib/libscalapack.a:math/scalapack
+PLIST_SUB+= WITH_LIBSEQ="@comment "
+CONFLICTS+= mumps-5*
+.else
+BUILD_DEPENDS+= ${LOCALBASE}/lib/libscotch.a:cad/scotch
+PLIST_SUB+= WITH_LIBSEQ=""
+LIBS+= mpiseq
+CONFLICTS+= mumps-mpich-5*
+.endif
+
+pre-configure:
+.ifdef WITH_MPI
+ ${INSTALL_DATA} ${WRKSRC}/Make.inc/Makefile.FREEBSD10.PAR \
+ ${WRKSRC}/Makefile.inc
+.else
+ ${INSTALL_DATA} ${WRKSRC}/Make.inc/Makefile.FREEBSD10.SEQ \
+ ${WRKSRC}/Makefile.inc
+.endif
+ ${DIRNAME} `${FC} -print-libgcc-file-name` > ${WRKSRC}/LIBDIR
+.for MF in Makefile Makefile.inc PORD/lib/Makefile libseq/Makefile src/Makefile
+ ${REINPLACE_CMD} -e 's+@CC@+${CC}+g ; s+@FC@+${FC}+g ; \
+ s+/usr/local+${LOCALBASE}+; \
+ s+@CFLAGS@+${CFLAGS} -fPIC+g; \
+ s+@FCFLAGS@+${FCFLAGS} -fPIC+g; \
+ s+@SOVER@+${VEM}+g; \
+ s+@GCCLIBDIR@+${GCCLIBDIR}+g; \
+ s+@FORTRANLIBS@+${FORTRANLIBS}+g; \
+ s+@BLAS_LIBS@+${BLAS_LIBS}+ ; \
+ s+@LAPACK_LIBS@+${LAPACK_LIBS}+ ; \
+ s+@LOCALBASE@+${LOCALBASE}+g;' \
+ ${WRKSRC}/${MF}
+.endfor
+
+do-install:
+ ${INSTALL_DATA} ${WRKSRC}/include/*.h ${STAGEDIR}${PREFIX}/include
+ ${INSTALL_DATA} ${WRKSRC}/lib/lib*.a ${STAGEDIR}${PREFIX}/lib
+ ${INSTALL_LIB} ${WRKSRC}/lib/lib*.so.${VEM} ${STAGEDIR}${PREFIX}/lib
+.ifndef WITH_MPI
+ ${INSTALL_DATA} ${WRKSRC}/libseq/libmpiseq.a ${STAGEDIR}${PREFIX}/lib
+ ${INSTALL_LIB} ${WRKSRC}/libseq/libmpiseq*.so.${VEM} ${STAGEDIR}${PREFIX}/lib
+.endif
+.for lib in ${LIBS}
+ (cd ${STAGEDIR}${PREFIX}/lib && ${LN} -sf lib${lib}.so.${VEM} ${STAGEDIR}${PREFIX}/lib/lib${lib}.so)
+. endfor
+ ${MKDIR} ${STAGEDIR}${DOCSDIR}
+ ${INSTALL_DATA} ${WRKSRC}/doc/userguide_${MUMPSVERSION}.pdf ${STAGEDIR}${DOCSDIR}
+ ${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
+. for ex in Makefile README *.c *.F input_simpletest_*
+ ${INSTALL_DATA} ${WRKSRC}/examples/${ex} ${STAGEDIR}${EXAMPLESDIR}
+. endfor
+. for ex in c_example *simpletest
+ ${INSTALL_PROGRAM} ${WRKSRC}/examples/${ex} ${STAGEDIR}${EXAMPLESDIR}
+. endfor
+
+regression-test: install
+.if defined (WITH_MPI) && defined(MAINTAINER_MODE)
+. if !exists(${HOME}/.mpd.conf)
+ @${ECHO_CMD} "MPD_SECRETWORD=change_on_install" > ${HOME}/.mpd.conf
+ ${CHMOD} go-r ${HOME}/.mpd.conf
+ @${ECHO_MSG} "${HOME}/.mpd.conf has been generated - please change the secret word!"
+. endif
+ ${LOCALBASE}/bin/mpd &
+ (cd ${WRKSRC}/examples && \
+ ${LOCALBASE}/bin/mpirun -np 2 ./ssimpletest < input_simpletest_real ; \
+ ${LOCALBASE}/bin/mpirun -np 2 ./dsimpletest < input_simpletest_real ; \
+ ${LOCALBASE}/bin/mpirun -np 2 ./csimpletest < input_simpletest_cmplx ; \
+ ${LOCALBASE}/bin/mpirun -np 2 ./zsimpletest < input_simpletest_cmplx ; \
+ ${ECHO_MSG} "The solution should be (1,2,3,4,5)" ; \
+ ${LOCALBASE}/bin/mpirun -np 3 ./c_example ; \
+ ${ECHO_MSG} "The solution should be (1,2)")
+ ${LOCALBASE}/bin/mpdallexit
+.else
+ (cd ${WRKSRC}/examples && \
+ ./ssimpletest < input_simpletest_real ; \
+ ./dsimpletest < input_simpletest_real ; \
+ ./csimpletest < input_simpletest_cmplx ; \
+ ./zsimpletest < input_simpletest_cmplx ; \
+ ${ECHO_MSG} "The solution should be (1,2,3,4,5)" ; \
+ ./c_example ; \
+ ${ECHO_MSG} "The solution should be (1,2)")
+.endif
+
+.include <bsd.port.post.mk>
diff --git a/math/mumps/distinfo b/math/mumps/distinfo
new file mode 100644
index 000000000000..aca42d6ee1bc
--- /dev/null
+++ b/math/mumps/distinfo
@@ -0,0 +1,2 @@
+SHA256 (MUMPS_4.10.0.tar.gz) = d0f86f91a74c51a17a2ff1be9c9cee2338976f13a6d00896ba5b43a5ca05d933
+SIZE (MUMPS_4.10.0.tar.gz) = 2481516
diff --git a/math/mumps/files/patch-Make.inc_Makefile.FREEBSD10.PAR b/math/mumps/files/patch-Make.inc_Makefile.FREEBSD10.PAR
new file mode 100644
index 000000000000..a42435038545
--- /dev/null
+++ b/math/mumps/files/patch-Make.inc_Makefile.FREEBSD10.PAR
@@ -0,0 +1,89 @@
+--- Make.inc/Makefile.FREEBSD10.PAR.orig 2017-08-08 07:32:58 UTC
++++ Make.inc/Makefile.FREEBSD10.PAR
+@@ -20,7 +20,7 @@
+ #
+
+ #SCOTCHDIR = ${HOME}/scotch_6.0
+-#ISCOTCH = -I$(SCOTCHDIR)/include
++ISCOTCH = -I@LOCALBASE@/include
+ #
+ # You have to choose one among the following two lines depending on
+ # the type of analysis you want to perform. If you want to perform only
+@@ -28,16 +28,16 @@
+ # variable below); for both parallel and sequential analysis choose the second
+ # line (remember to add -Dptscotch in the ORDERINGSF variable below)
+
+-#LSCOTCH = -L$(SCOTCHDIR)/lib -lesmumps -lscotch -lscotcherr
+-#LSCOTCH = -L$(SCOTCHDIR)/lib -lptesmumps -lptscotch -lptscotcherr
++#LSCOTCH = -L@LOCALBASE@/lib -lesmumps -lscotch -lscotcherr
++LSCOTCH = -L@LOCALBASE@/lib -lptesmumps -lptscotch -lptscotcherr
+
+
+ LPORDDIR = $(topdir)/PORD/lib/
+ IPORD = -I$(topdir)/PORD/include/
+ LPORD = -L$(LPORDDIR) -lpord
+
+-#LMETISDIR = /opt/metis-5.1.0/build/Linux-x86_64/libmetis
+-#IMETIS = /opt/metis-5.1.0/include
++LMETISDIR = @LOCALBASE@/lib/parmetis
++IMETIS = @LOCALBASE@/include/parmetis
+
+ # You have to choose one among the following two lines depending on
+ # the type of analysis you want to perform. If you want to perform only
+@@ -46,7 +46,7 @@ LPORD = -L$(LPORDDIR) -lpord
+ # line (remember to add -Dparmetis in the ORDERINGSF variable below)
+
+ #LMETIS = -L$(LMETISDIR) -lmetis
+-#LMETIS = -L$(LMETISDIR) -lparmetis -lmetis
++LMETIS = -L$(LMETISDIR) -lparmetis -lmetis
+
+ # The following variables will be used in the compilation process.
+ # Please note that -Dptscotch and -Dparmetis imply -Dscotch and -Dmetis respectively.
+@@ -66,34 +66,34 @@ IORDERINGSC = $(IMETIS) $(IPORD) $(ISCOT
+
+ PLAT =
+ LIBEXT = .a
+-OUTC = -o ""
+-OUTF = -o ""
++OUTC = -o
++OUTF = -o
+ RM = /bin/rm -f
+-CC = cc
+-FC = gfortran48
+-FL = gfortran48
++CC = @CC@
++FC = @FC@
++FL = @FC@
+ # keep a space at the end if options have to be separated from lib name
+-AR = ar -vr ""
++AR = ar -vr
+ RANLIB = ranlib
+ LAPACK = -llapack
+-SCALAP = -lscalapack -lblacs
++SCALAP = -L@LOCALBASE@/lib -lblacs -lblacsc -lblacsf77 -lscalapack
+
+ INCPAR = -I/usr/local/include
+-LIBPAR = $(SCALAP) $(LAPACK) -L/usr/local/lib -lmpi
++LIBPAR = -L@LOCALBASE@/lib -lfmpich -lmpich -lmpl $(SCALAP)
+
+ INCSEQ = -I$(topdir)/libseq
+ LIBSEQ = $(LAPACK) -L$(topdir)/libseq -lmpiseq
+-LIBBLAS = -lblas
+-LIBOTHERS = -lpthread
++LIBBLAS = -L@LOCALBASE@/lib @LAPACK_LIBS@ @BLAS_LIBS@
++LIBOTHERS = -lpthread @GCCLIBDIR@ @FORTRANLIBS@
+
+ #Preprocessor defs for calling Fortran from C (-DAdd_ or -DAdd__ or -DUPPER)
+-CDEFS = -DAdd_
++CDEFS ?= -DAdd_
+
+ #Begin Optimized options
+ # uncomment -fopenmp in lines below to benefit from OpenMP
+-OPTF = -O #-fopenmp
++OPTF = @FCFLAGS@ #-fopenmp
+ OPTL = -O #-fopenmp
+-OPTC = -O -I. #-fopenmp
++OPTC = @CFLAGS@ -I. #-fopenmp
+ #End Optimized options
+ INCS = $(INCPAR)
+ LIBS = $(LIBPAR)
diff --git a/math/mumps/files/patch-Make.inc_Makefile.FREEBSD10.SEQ b/math/mumps/files/patch-Make.inc_Makefile.FREEBSD10.SEQ
new file mode 100644
index 000000000000..a1ac8868dd67
--- /dev/null
+++ b/math/mumps/files/patch-Make.inc_Makefile.FREEBSD10.SEQ
@@ -0,0 +1,73 @@
+--- Make.inc/Makefile.FREEBSD10.SEQ.orig 2017-08-08 07:32:58 UTC
++++ Make.inc/Makefile.FREEBSD10.SEQ
+@@ -20,7 +20,7 @@
+ #
+
+ #SCOTCHDIR = ${HOME}/scotch_6.0
+-#ISCOTCH = -I$(SCOTCHDIR)/include
++ISCOTCH = -I@LOCALBASE@/include
+ #
+ # You have to choose one among the following two lines depending on
+ # the type of analysis you want to perform. If you want to perform only
+@@ -36,8 +36,8 @@ LPORDDIR = $(topdir)/PORD/lib/
+ IPORD = -I$(topdir)/PORD/include/
+ LPORD = -L$(LPORDDIR) -lpord
+
+-#LMETISDIR = /opt/metis-5.1.0/build/Linux-x86_64/libmetis
+-#IMETIS = /opt/metis-5.1.0/include
++LMETISDIR = @LOCALBASE@/lib
++IMETIS = @LOCALBASE@/include
+
+ # You have to choose one among the following two lines depending on
+ # the type of analysis you want to perform. If you want to perform only
+@@ -45,7 +45,7 @@ LPORD = -L$(LPORDDIR) -lpord
+ # variable below); for both parallel and sequential analysis choose the second
+ # line (remember to add -Dparmetis in the ORDERINGSF variable below)
+
+-#LMETIS = -L$(LMETISDIR) -lmetis
++LMETIS = -L$(LMETISDIR) -lmetis
+ #LMETIS = -L$(LMETISDIR) -lparmetis -lmetis
+
+ # The following variables will be used in the compilation process.
+@@ -66,14 +66,14 @@ IORDERINGSC = $(IMETIS) $(IPORD) $(ISCOT
+
+ PLAT =
+ LIBEXT = .a
+-OUTC = -o ""
+-OUTF = -o ""
++OUTC = -o
++OUTF = -o
+ RM = /bin/rm -f
+-CC = cc
+-FC = gfortran48
+-FL = gfortran48
++CC = @CC@
++FC = @FC@
++FL = @FC@
+ # keep a space at the end if options have to be separated from lib name
+-AR = ar -vr ""
++AR = ar -vr
+ RANLIB = ranlib
+ LAPACK = -llapack
+
+@@ -81,16 +81,16 @@ LAPACK = -llapack
+ INCSEQ = -I$(topdir)/libseq
+ LIBSEQ = $(LAPACK) -L$(topdir)/libseq -lmpiseq
+ LIBBLAS = -lblas
+-LIBOTHERS = -lpthread
++LIBOTHERS = -lpthread @GCCLIBDIR@ @FORTRANLIBS@
+
+ #Preprocessor defs for calling Fortran from C (-DAdd_ or -DAdd__ or -DUPPER)
+-CDEFS = -DAdd_
++CDEFS ?= -DAdd_
+
+ #Begin Optimized options
+ # uncomment -fopenmp in lines below to benefit from OpenMP
+-OPTF = -O #-fopenmp
++OPTF = @FCFLAGS@ #-fopenmp
+ OPTL = -O #-fopenmp
+-OPTC = -O -I. #-fopenmp
++OPTC = @CFLAGS@ -I. #-fopenmp
+ #End Optimized options
+ INCS = $(INCSEQ)
+ LIBS = $(LIBSEQ)
diff --git a/math/mumps/files/patch-Makefile b/math/mumps/files/patch-Makefile
new file mode 100644
index 000000000000..731981025fdc
--- /dev/null
+++ b/math/mumps/files/patch-Makefile
@@ -0,0 +1,20 @@
+--- Makefile.orig 2017-08-08 07:32:58 UTC
++++ Makefile
+@@ -54,7 +54,7 @@ dexamples: d
+ multi_example: s d c z
+ (cd examples ; $(MAKE) multi)
+
+-requiredobj: Makefile.inc $(LIBSEQNEEDED) $(libdir)/libpord$(PLAT)$(LIBEXT)
++requiredobj: Makefile.inc $(LIBSEQNEEDED) $(libdir)/libpord$(PLAT)$(LIBEXT) $(libdir)/libpord$(PLAT).so.@SOVER@
+
+ # dummy MPI library (sequential version)
+
+@@ -68,7 +68,7 @@ $(libdir)/libpord$(PLAT)$(LIBEXT):
+ $(MAKE) CC="$(CC)" CFLAGS="$(OPTC)" AR="$(AR)" RANLIB="$(RANLIB)" OUTC="$(OUTC)" LIBEXT=$(LIBEXT); \
+ fi;
+ if [ "$(LPORDDIR)" != "" ] ; then \
+- cp $(LPORDDIR)/libpord$(LIBEXT) $@; \
++ cp $(LPORDDIR)/libpord* $(libdir)/; \
+ fi;
+
+ clean:
diff --git a/math/mumps/files/patch-PORD_lib_Makefile b/math/mumps/files/patch-PORD_lib_Makefile
new file mode 100644
index 000000000000..b13ad0eea785
--- /dev/null
+++ b/math/mumps/files/patch-PORD_lib_Makefile
@@ -0,0 +1,23 @@
+--- PORD/lib/Makefile.orig 2017-08-08 07:32:58 UTC
++++ PORD/lib/Makefile
+@@ -22,12 +22,17 @@ OBJS = graph.o gbipart.o gbisect.o ddcre
+ # OUTC = -o
+
+ .c.o:
+- $(CC) $(COPTIONS) -c $*.c $(OUTC)$*.o
++ $(CC) $(COPTIONS) -c $*.c $(OUTC) $*.o
+
+-libpord$(LIBEXT):$(OBJS)
+- $(AR)$@ $(OBJS)
++all: libpord$(LIBEXT) libpord.so.@SOVER@
++
++libpord$(LIBEXT): $(OBJS)
++ $(AR) $@ $(OBJS)
+ $(RANLIB) $@
+
++libpord.so.@SOVER@: $(OBJS)
++ $(CC) -shared $(OBJS) -Wl,-soname,libpord$(PLAT).so.@SOVER@ -o libpord$(PLAT).so.@SOVER@
++
+ clean:
+ rm -f *.o
+
diff --git a/math/mumps/files/patch-examples_Makefile b/math/mumps/files/patch-examples_Makefile
new file mode 100644
index 000000000000..69740489ab6a
--- /dev/null
+++ b/math/mumps/files/patch-examples_Makefile
@@ -0,0 +1,15 @@
+--- examples/Makefile.orig 2017-08-08 07:32:58 UTC
++++ examples/Makefile
+@@ -57,9 +57,10 @@ multiple_arithmetics_example: $(LIBSMUMP
+
+ .SUFFIXES: .c .F .o
+ .F.o:
+- $(FC) $(OPTF) $(INCS) -I. -I$(topdir)/include -c $*.F $(OUTF)$*.o
++ $(FC) $(OPTF) $(INCS) -I. -I$(topdir)/include -c $*.F $(OUTF) $*.o
++
+ .c.o:
+- $(CC) $(OPTC) $(INCS) $(CDEFS) -I. -I$(topdir)/include -I$(topdir)/src -c $*.c $(OUTC)$*.o
++ $(CC) $(OPTC) $(INCS) $(CDEFS) -I. -I$(topdir)/include -I$(topdir)/src -c $*.c $(OUTC) $*.o
+
+
+ $(libdir)/libsmumps$(PLAT)$(LIBEXT):
diff --git a/math/mumps/files/patch-libseq_Makefile b/math/mumps/files/patch-libseq_Makefile
new file mode 100644
index 000000000000..6b8b95b0d229
--- /dev/null
+++ b/math/mumps/files/patch-libseq_Makefile
@@ -0,0 +1,27 @@
+--- libseq/Makefile.orig 2017-08-08 07:32:58 UTC
++++ libseq/Makefile
+@@ -8,15 +8,20 @@ all: libmpiseq
+
+ include ../Makefile.inc
+
+-libmpiseq: libmpiseq$(PLAT)$(LIBEXT)
++libmpiseq: libmpiseq$(PLAT)$(LIBEXT) libmpiseq$(PLAT).so.@SOVER@
+
+ libmpiseq$(PLAT)$(LIBEXT): mpi.o mpic.o elapse.o
+- $(AR)$@ mpi.o mpic.o elapse.o
++ $(AR) $@ mpi.o mpic.o elapse.o
+ $(RANLIB) $@
++
++libmpiseq$(PLAT).so.@SOVER@: mpi.o mpic.o elapse.o
++ $(FC) -shared ${.ALLSRC} -Wl,-soname,libmpiseq$(PLAT).so.@SOVER@ -o libmpiseq$(PLAT).so.@SOVER@
++
+ .f.o:
+- $(FC) $(OPTF) -c $*.f $(OUTF)$*.o
++ $(FC) $(OPTF) -c $*.f $(OUTF) $*.o
++
+ .c.o:
+- $(CC) $(OPTC) $(CDEFS) -I. -c $*.c $(OUTC)$*.o
++ $(CC) $(OPTC) $(CDEFS) -I. -c $*.c $(OUTC) $*.o
+
+ clean:
+ $(RM) *.o *$(LIBEXT)
diff --git a/math/mumps/files/patch-src_Makefile b/math/mumps/files/patch-src_Makefile
new file mode 100644
index 000000000000..6756a0652a75
--- /dev/null
+++ b/math/mumps/files/patch-src_Makefile
@@ -0,0 +1,53 @@
+--- src/Makefile.orig 2017-08-08 07:32:58 UTC
++++ src/Makefile
+@@ -24,7 +24,9 @@ z:
+ include $(topdir)/Makefile.inc
+
+ mumps_lib: $(libdir)/libmumps_common$(PLAT)$(LIBEXT) \
+- $(libdir)/lib$(ARITH)mumps$(PLAT)$(LIBEXT)
++ $(libdir)/libmumps_common$(PLAT).so.@SOVER@ \
++ $(libdir)/lib$(ARITH)mumps$(PLAT)$(LIBEXT) \
++ $(libdir)/lib$(ARITH)mumps$(PLAT).so.@SOVER@
+
+ OBJS_COMMON_MOD = \
+ lr_common.o \
+@@ -168,13 +170,19 @@ OBJS_OTHER = \
+ $(ARITH)type3_root.o
+
+ $(libdir)/libmumps_common$(PLAT)$(LIBEXT): $(OBJS_COMMON_MOD) $(OBJS_COMMON_OTHER)
+- $(AR)$@ $?
++ $(AR) $@ $?
+ $(RANLIB) $@
+
++$(libdir)/libmumps_common$(PLAT).so.@SOVER@: $(OBJS_COMMON_MOD) $(OBJS_COMMON_OTHER)
++ $(FC) -shared ${.ALLSRC} -Wl,-soname,libmumps_common$(PLAT).so.@SOVER@ -L$(libdir) $(LORDERINGS) $(LIBPAR) $(LIBOTHERS) -o $(libdir)/libmumps_common$(PLAT).so.@SOVER@
++
+ $(libdir)/lib$(ARITH)mumps$(PLAT)$(LIBEXT): $(OBJS_MOD) $(OBJS_OTHER)
+- $(AR)$@ $?
++ $(AR) $@ $?
+ $(RANLIB) $@
+
++$(libdir)/lib$(ARITH)mumps$(PLAT).so.@SOVER@: $(OBJS_MOD) $(OBJS_OTHER)
++ $(FC) -shared ${.ALLSRC} -Wl,-soname,lib$(ARITH)mumps$(PLAT).so.@SOVER@ -L$(libdir) -lmumps_common$(PLAT) $(LORDERINGS) $(LIBPAR) -lblas $(SCALAP) $(LIBOTHERS) -o $(libdir)/lib$(ARITH)mumps$(PLAT).so.@SOVER@
++
+ # Dependencies between modules:
+ $(ARITH)mumps_load.o: $(ARITH)mumps_comm_buffer.o \
+ $(ARITH)mumps_struc_def.o \
+@@ -290,13 +298,14 @@ $(OBJS_OTHER):$(OBJS_COMMON_MOD) $(OBJS_
+
+ .SUFFIXES: .c .F .o
+ .F.o:
+- $(FC) $(OPTF) $(INCS) $(IORDERINGSF) $(ORDERINGSF) -I. -I../include -c $*.F $(OUTF)$*.o
++ $(FC) $(OPTF) $(INCS) $(IORDERINGSF) $(ORDERINGSF) -I. -I../include -c $*.F $(OUTF) $*.o
++
+ .c.o:
+- $(CC) $(OPTC) $(INCS) -I../include $(CDEFS) $(IORDERINGSC) $(ORDERINGSC) -c $*.c $(OUTC)$*.o
++ $(CC) $(OPTC) $(INCS) -I../include $(CDEFS) $(IORDERINGSC) $(ORDERINGSC) -c $*.c $(OUTC) $*.o
+
+ $(ARITH)mumps_c.o: mumps_c.c
+ $(CC) $(OPTC) $(INCS) $(CDEFS) -DMUMPS_ARITH=MUMPS_ARITH_$(ARITH) \
+- $(IORDERINGSC) $(ORDERINGSC) -I../include -c mumps_c.c $(OUTC)$@
++ $(IORDERINGSC) $(ORDERINGSC) -I../include -c mumps_c.c $(OUTC) $@
+
+
+ clean:
diff --git a/math/mumps/pkg-descr b/math/mumps/pkg-descr
new file mode 100644
index 000000000000..ce8f956266a4
--- /dev/null
+++ b/math/mumps/pkg-descr
@@ -0,0 +1,16 @@
+MUMPS is a Distributed Multifrontal Solver (F90, MPI based) with Dynamic
+Distributed Scheduling to accomodate both numerical fill-in and multi-user
+environment.
+
+- Solution of large linear systems with symmetric positive definite
+matrices; general symmetric matrices; general unsymmetric matrices.
+- Version for complex arithmetic.
+- Parallel factorization and solve phases (uniprocessor version also
+available).
+- Iterative refinement and backward error analysis.
+- Various matrix input formats: assembled format; distributed assembled
+format; elemental format.
+- Partial factorization and Schur complement matrix.
+- Several orderings interfaced : AMD, AMF, PORD, METIS
+
+WWW: http://graal.ens-lyon.fr/MUMPS/
diff --git a/math/mumps/pkg-plist b/math/mumps/pkg-plist
new file mode 100644
index 000000000000..5eca59545f93
--- /dev/null
+++ b/math/mumps/pkg-plist
@@ -0,0 +1,51 @@
+include/cmumps_c.h
+include/cmumps_root.h
+include/cmumps_struc.h
+include/dmumps_c.h
+include/dmumps_root.h
+include/dmumps_struc.h
+include/mumps_c_types.h
+include/mumps_compat.h
+include/smumps_c.h
+include/smumps_root.h
+include/smumps_struc.h
+include/zmumps_c.h
+include/zmumps_root.h
+include/zmumps_struc.h
+lib/libcmumps.a
+lib/libcmumps.so
+lib/libcmumps.so.%%VE%%
+lib/libdmumps.a
+lib/libdmumps.so
+lib/libdmumps.so.%%VE%%
+%%WITH_LIBSEQ%%lib/libmpiseq.a
+%%WITH_LIBSEQ%%lib/libmpiseq.so
+%%WITH_LIBSEQ%%lib/libmpiseq.so.%%VE%%
+lib/libmumps_common.a
+lib/libmumps_common.so
+lib/libmumps_common.so.%%VE%%
+lib/libpord.a
+lib/libpord.so
+lib/libpord.so.%%VE%%
+lib/libsmumps.a
+lib/libsmumps.so
+lib/libsmumps.so.%%VE%%
+lib/libzmumps.a
+lib/libzmumps.so
+lib/libzmumps.so.%%VE%%
+%%PORTDOCS%%%%DOCSDIR%%/userguide_%%MUMPSVERSION%%.pdf
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/Makefile
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/README
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/c_example
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/c_example.c
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/csimpletest
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/csimpletest.F
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/dsimpletest
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/dsimpletest.F
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/input_simpletest_cmplx
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/input_simpletest_real
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/multiple_arithmetics_example.F
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/ssimpletest
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/ssimpletest.F
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/zsimpletest
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/zsimpletest.F