1PORTNAME= mumps 2DISTVERSION= 5.1.2-aster7 3CATEGORIES= math 4PKGNAMESUFFIX= -edf 5 6MAINTAINER= ports@MidnightBSD.org 7COMMENT= MUltifrontal Massively Parallel sparse direct Solver for Code_Aster 8WWW= https://mumps-solver.org/ 9 10LICENSE= CeCILL_C 11LICENSE_NAME= CeCILL-C 12LICENSE_FILE= ${WRKSRC}/LICENSE 13LICENSE_PERMS= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept 14 15LIB_DEPENDS= libmetis.so:math/metis 16 17USES= blaslapack fortran 18 19WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION:R} 20FORTRANLIBS= -lgfortran 21GCCLIBDIR= ${LDFLAGS} 22USE_LDCONFIG= yes 23VEM= ${PORTVERSION:R:R:R} 24MUMPSVERSION= ${PORTVERSION:R} 25LIBS= cmumps dmumps mumps_common pord smumps zmumps 26SEQ_LIBS= ${LIBS} mpiseq 27PLIST_SUB= VE=${VEM} MUMPSVERSION=${MUMPSVERSION} 28 29OPTIONS_DEFINE= DOCS EXAMPLES 30 31MAKE_JOBS_UNSAFE=yes 32 33.include <bsd.port.pre.mk> 34.include "${.CURDIR}/../../french/aster/bsd.aster.mk" 35 36.if ${GCC_DEFAULT} >= 10 37# workaround for Type mismatch in argument 's' at (1); passed INTEGER(4) to LOGICAL(4) 38FCFLAGS+= -fallow-argument-mismatch 39.endif 40 41.if ${FORTRAN_DEFAULT} == gfortran && ${GCC_DEFAULT} >= 10 42FCFLAGS+= -fallow-argument-mismatch 43.endif 44 45post-patch: 46 ${INSTALL_DATA} ${WRKSRC}/Make.inc/Makefile.FREEBSD10.SEQ \ 47 ${WRKSRC}/Makefile.inc 48 49pre-configure: 50 ${DIRNAME} `${FC} -print-libgcc-file-name` > ${WRKSRC}/LIBDIR 51.for MF in Makefile Makefile.inc PORD/lib/Makefile libseq/Makefile src/Makefile 52 ${REINPLACE_CMD} -e 's+@CC@+${CC}+g ; s+@FC@+${FC}+g ; \ 53 s+/usr/local+${LOCALBASE}+; \ 54 s+@CFLAGS@+${CFLAGS} -fPIC+g; \ 55 s+@FCFLAGS@+${FCFLAGS} -fPIC+g; \ 56 s+@SOVER@+${VEM}+g; \ 57 s+@GCCLIBDIR@+${GCCLIBDIR}+g; \ 58 s+@FORTRANLIBS@+${FORTRANLIBS}+g; \ 59 s+@BLAS_LIBS@+${BLASLIB}+ ; \ 60 s+@LAPACK_LIBS@+${LAPACKLIB}+ ; \ 61 s+@LOCALBASE@+${LOCALBASE}+g;' \ 62 ${WRKSRC}/${MF} 63.endfor 64 65do-install: 66 ${INSTALL_DATA} ${WRKSRC}/include/*.h ${PREFIX}/include 67 ${INSTALL_DATA} ${WRKSRC}/lib/lib*.a ${PREFIX}/lib 68 ${INSTALL_LIB} ${WRKSRC}/lib/lib*.so.${VEM} ${PREFIX}/lib 69.for lib in ${LIBS} 70 (cd ${PREFIX}/lib && \ 71 ${LN} -sf lib${lib}.so.${VEM} ${PREFIX}/lib/lib${lib}.so) 72.endfor 73 ${MKDIR} ${DOCSDIR} 74 ${INSTALL_DATA} ${WRKSRC}/doc/userguide_${MUMPSVERSION}.pdf ${DOCSDIR} 75 ${MKDIR} ${EXAMPLESDIR} 76.for ex in Makefile README *.c *.F input_simpletest_* 77 ${INSTALL_DATA} ${WRKSRC}/examples/${ex} ${EXAMPLESDIR} 78.endfor 79.for ex in c_example *simpletest 80 ${INSTALL_PROGRAM} ${WRKSRC}/examples/${ex} ${EXAMPLESDIR} 81.endfor 82 ${MKDIR} ${PREFIX}/include/mumps_seq 83 ${INSTALL_DATA} ${WRKSRC}/libseq/mpi.h ${PREFIX}/include/mumps_seq/mpi.h 84 ${INSTALL_DATA} ${WRKSRC}/libseq/libmpiseq.a ${PREFIX}/lib 85 ${INSTALL_LIB} ${WRKSRC}/libseq/libmpiseq*.so.${VEM} ${PREFIX}/lib 86 (cd ${PREFIX}/lib && \ 87 ${LN} -sf libmpiseq.so.${VEM} ${PREFIX}/lib/libmpiseq.so) 88.for lib in ${SEQ_LIBS} 89. for ext in a so so.${VEM} 90 (cd ${PREFIX}/lib && \ 91 ${LN} -sf lib${lib}.${ext} ${PREFIX}/lib/lib${lib}_seq.${ext}) 92. endfor 93.endfor 94 95test: build 96 (cd ${WRKSRC}/examples && \ 97 ./ssimpletest < input_simpletest_real ; \ 98 ./dsimpletest < input_simpletest_real ; \ 99 ./csimpletest < input_simpletest_cmplx ; \ 100 ./zsimpletest < input_simpletest_cmplx ; \ 101 ${ECHO_MSG} "The solution should be (1,2,3,4,5)" ; \ 102 ./c_example ; \ 103 ${ECHO_MSG} "The solution should be (1,2)") 104 105.include <bsd.port.post.mk> 106