aboutsummaryrefslogtreecommitdiff
path: root/Mk
diff options
context:
space:
mode:
Diffstat (limited to 'Mk')
-rw-r--r--Mk/Uses/mpi.mk67
1 files changed, 67 insertions, 0 deletions
diff --git a/Mk/Uses/mpi.mk b/Mk/Uses/mpi.mk
new file mode 100644
index 000000000000..3f5962bca896
--- /dev/null
+++ b/Mk/Uses/mpi.mk
@@ -0,0 +1,67 @@
+# $FreeBSD$
+#
+# Handle dependencies on MPICH / OpenMPI
+#
+# Feature: mpi
+# Usage: USES=mpi or USES=mpi:ARGS
+# Valid ARGS: mpich (default) openmpi
+# Note: mpich2 and openmpi3 are not handled
+#
+# Provides: MPI_LIBS MPI_CFLAGS MPICC MPICXX MPIF90 MPIFC MPI_HOME \
+# MPIEXEC MPIRUN
+# Sets: LIB_DEPENDS
+# + CMAKE_ARGS if cmake is enabled to drive FindMPI.cmake
+#
+# Maintainer: thierry@FreeBSD.org
+
+.if !defined(_INCLUDE_USES_MPI_MK)
+_INCLUDE_USES_MPI_MK= yes
+
+_valid_ARGS= mpich openmpi
+
+_DEFAULT_MPI= mpich
+
+.if empty(mpi_ARGS)
+mpi_ARGS= ${_DEFAULT_MPI}
+.endif
+
+.if ! ${USES:Mpkgconfig}
+USES+= pkgconfig
+.endif
+
+.if ${mpi_ARGS} == mpich
+LIB_DEPENDS+= libmpich.so:net/mpich
+MPI_HOME= ${LOCALBASE}
+MPI_LIBS+= `pkgconf --libs mpich`
+. if ${USES:Mfortran}
+MPI_LIBS+= -lmpifort
+MPIFC= ${MPI_HOME}/bin/mpif90
+MPIF90= ${MPIFC}
+. endif
+MPI_CFLAGS+= `pkgconf --cflags mpich`
+.elif ${mpi_ARGS} == openmpi
+LIB_DEPENDS+= libmpi_cxx.so:net/openmpi
+MPI_HOME= ${LOCALBASE}/mpi/openmpi
+. if ${USES:Mfortran}
+MPI_LIBS+= `pkgconf --libs ompi-fort`
+MPIFC= ${MPI_HOME}/bin/mpif90
+MPIF90= ${MPIFC}
+. else
+MPI_LIBS+= `pkgconf --libs ompi`
+. endif
+MPI_CFLAGS+= `pkgconf --cflags ompi`
+.else
+IGNORE= USES=mpi: invalid arguments: ${mpi_ARGS}
+.endif
+
+MPICC= ${MPI_HOME}/bin/mpicc
+MPICXX= ${MPI_HOME}/bin/mpicxx
+MPIEXEC= ${MPI_HOME}/bin/mpiexec
+MPIRUN= ${MPI_HOME}/bin/mpirun
+
+.if ${USES:Mcmake}
+CMAKE_ARGS+= -DMPIEXEC_EXECUTABLE:FILEPATH="${MPIEXEC}" \
+ -DMPI_HOME:PATH="${MPI_HOME}"
+.endif
+
+.endif