diff --git a/Mk/Uses/mpi.mk b/Mk/Uses/mpi.mk index 2d9987bbbebc..29c417ce62f8 100644 --- a/Mk/Uses/mpi.mk +++ b/Mk/Uses/mpi.mk @@ -1,70 +1,65 @@ # 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 \ - libhwloc.so:devel/hwloc2 \ - libjson-c.so:devel/json-c \ - libfabric.so:net/libfabric \ - libze_loader.so:devel/level-zero\ - libepoll-shim.so:devel/libepoll-shim +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} || ${USES:Mcmake\:*} CMAKE_ARGS+= -DMPIEXEC_EXECUTABLE:FILEPATH="${MPIEXEC}" \ -DMPI_HOME:PATH="${MPI_HOME}" . endif .endif diff --git a/net/mpich/Makefile b/net/mpich/Makefile index d3298e7410ad..5ea3cb59a771 100644 --- a/net/mpich/Makefile +++ b/net/mpich/Makefile @@ -1,106 +1,107 @@ PORTNAME= mpich PORTVERSION= 3.4.3 +PORTREVISION= 1 CATEGORIES= net parallel MASTER_SITES= https://www.mpich.org/static/downloads/${DISTVERSION}/ MAINTAINER= ports@FreeBSD.org COMMENT= Portable implementation of MPI-1, MPI-2 and MPI-3 WWW= https://www.mpich.org/ LICENSE= MPICH LICENSE_NAME= MPICH LICENSE_FILE= ${WRKSRC}/COPYRIGHT LICENSE_PERMS= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept # Unfortunately mpicc is BROKEN with sh (Bad substitution on arrays) BUILD_DEPENDS= bash:shells/bash LIB_DEPENDS= libhwloc.so:devel/hwloc2 \ libjson-c.so:devel/json-c \ libfabric.so:net/libfabric \ libslurm.so:sysutils/slurm-wlm \ libepoll-shim.so:devel/libepoll-shim RUN_DEPENDS= bash:shells/bash CONFLICTS= mpd mpich2 GNU_CONFIGURE= yes INSTALL_TARGET= install-strip USES= compiler:c11 libtool perl5 pkgconfig USE_LDCONFIG= yes TEST_TARGET= check OPTIONS_DEFINE= DOCS FORTRAN L0 OPTIONS_GROUP= PM OPTIONS_GROUP_PM= GFORKER HYDRA OPTIONS_RADIO= DEFAULTPM OPTIONS_RADIO_DEFAULTPM=DGFORKER DHYDRA OPTIONS_DEFAULT= FORTRAN GFORKER HYDRA DHYDRA L0 OPTIONS_SUB= yes FORTRAN_USES= fortran FORTRAN_CONFIGURE_ENABLE= fortran FORTRAN_CONFIGURE_ON= \ MPICH_MPICC_LDFLAGS="${MPICH_LDFLAGS}" \ MPICH_MPICXX_LDFLAGS="${MPICH_LDFLAGS}" \ MPICH_MPIF77_LDFLAGS="${MPICH_LDFLAGS}" \ MPICH_MPIFORT_LDFLAGS="${MPICH_LDFLAGS}" MPICH_LDFLAGS= -Wl,-rpath=${LOCALBASE}/lib/gcc${_GCC_VER} \ -L${LOCALBASE}/lib/gcc${_GCC_VER} -B${LOCALBASE}/bin PM_DESC= Process managers GFORKER_DESC= Simple local process manager HYDRA_DESC= Parallel process manager DEFAULTPM_DESC= Default process manager DGFORKER_DESC= Make gforker the default process manager DHYDRA_DESC= Make hydra the default process manager L0_DESC= oneAPI Level Zero support L0_LIB_DEPENDS= libze_loader.so:devel/level-zero L0_CONFIGURE_OFF= --without-ze CONFIGURE_ARGS= --enable-fast="" --with-hwloc-prefix=${LOCALBASE} \ --with-libfabric=${LOCALBASE} \ pkgconfigdir="${PREFIX}/libdata/pkgconfig" \ MPICHLIB_CFLAGS="${CFLAGS}" \ CFLAGS="-I${LOCALBASE}/include/json-c" \ MPICHLIB_CPPFLAGS="${CPPFLAGS}" CPPFLAGS="" \ MPICHLIB_CXXFLAGS="${CXXFLAGS}" CXXFLAGS="" \ MPICHLIB_FFLAGS="${FFLAGS}" FFLAGS="" \ MPICHLIB_FCFLAGS="${FCFLAGS}" FCFLAGS="" \ MPICHLIB_LDFLAGS="${LDFLAGS}" LDFLAGS="" \ MPICHLIB_LIBS="${LIBS}" \ LIBS="-L${LOCALBASE}/lib -lepoll-shim -ljson-c -lm" \ BASH_SHELL=${LOCALBASE}/bin/bash CFLAGS_powerpc64= -D__BIG_ENDIAN .include .for pm in ${OPTIONS_GROUP_PM} . if ${PORT_OPTIONS:M${pm}} . if empty(PMLIST) PMLIST= ${pm:tl} . elif ${PORT_OPTIONS:MD${pm}} PMLIST:= ${pm:tl},${PMLIST} . else PMLIST:= ${PMLIST},${pm:tl} . endif . endif .endfor .if empty(PMLIST) CONFIGURE_ARGS+=--without-pm PLIST_SUB+= EXEC="@comment " EXECGFORKER="@comment " .else CONFIGURE_ARGS+=--with-pm=${PMLIST} PLIST_SUB+= EXEC="" .if ${PMLIST:M*,gforker*} PLIST_SUB+= EXECGFORKER="" .else PLIST_SUB+= EXECGFORKER="@comment " .endif .endif post-patch: ${RM} -r ${WRKSRC}/www .include diff --git a/net/mpich/files/patch-src-packaging-pkgconfig-mpich.pc.in b/net/mpich/files/patch-src-packaging-pkgconfig-mpich.pc.in new file mode 100644 index 000000000000..0dce6dc7928f --- /dev/null +++ b/net/mpich/files/patch-src-packaging-pkgconfig-mpich.pc.in @@ -0,0 +1,12 @@ +--- src/packaging/pkgconfig/mpich.pc.in.orig 2021-12-16 16:59:29 UTC ++++ src/packaging/pkgconfig/mpich.pc.in +@@ -9,7 +9,8 @@ Requires: + Version: @MPICH_VERSION@ + URL: http://www.mcs.anl.gov/research/projects/mpich + Requires: +-Libs: @WRAPPER_C_DYNAMIC_LOADING_FLAGS@ @WRAPPER_LDFLAGS@ -L${libdir} -l@MPILIBNAME@ @LPMPILIBNAME@ @WRAPPER_LIBS@ ++Libs: @WRAPPER_C_DYNAMIC_LOADING_FLAGS@ @WRAPPER_LDFLAGS@ -L${libdir} -l@MPILIBNAME@ @LPMPILIBNAME@ ++Libs.private: @WRAPPER_LIBS@ + Cflags: @WRAPPER_CPPFLAGS@ @WRAPPER_CFLAGS@ -I${includedir} + + # pkg-config does not understand Cxxflags, etc. So we allow users to