I have built the mpich port because the default package didn't have Fortran. Along this effort I noticed that the wrappers (mpicc, mpif90 etc.) insert optimizer flags, which is unwelcome since that makes it harder to see what's going on for the user or perform debug builds.
I used the following command to still build an optimized library, that does not pass optimizer flags to the wrappers:
$ cd /usr/ports/net/mpich
$ sudo make install CFLAGS= \
MPICHLIB_CFLAGS="-O2 -pipe -fstack-protector -fno-strict-aliasing" \
MPICHLIB_CXXFLAGS="-O2 -pipe -fstack-protector -fno-strict-aliasing"
To add a working Fortran integration, the following was added to the above command:
MPICHLIB_FCFLAGS="-O2" FFLAGS="-Wl,-rpath=/usr/local/lib/gcc49" \
MPICH_LIBS="-L/usr/local/lib/gcc49 -Wl,-rpath,/usr/local/lib/gcc49 -lgcc_s"
That way the libgcc_s.so dependency of libmpi will be addressed by the wrappers when Fortran is part of the mix. Obviously using gfortran49 is my choice and not necessary.
Probably the ports Makefile can be changed to address this, but unfortunately I don't understand the ports system well enough to make the change myself.
I did this build on FreeBSD 10.1 on x86_64 hardware. But I assume my changes are general enough to translate to basically any hw FreeBSD runs on.
Auto-assigned to maintainer tijl@FreeBSD.org
Since that's probably non-obvious: the version I used was mpich 3.1.3
Created attachment 153035 [details]
This patch should fix the port. Please give it a try and report back.
The patch seems to work as intended. Many thanks.
A commit references this bug:
Date: Thu Feb 26 18:07:13 UTC 2015
New revision: 380043
- Update to MPICH 3.1.4
- Pass *FLAGS variables to configure via MPICHLIB_*FLAGS because otherwise
they are hardcoded into mpicc 
PR: 197563