Bug 197563 - net/mpich: port injects optimizer flags into wrappers
Summary: net/mpich: port injects optimizer flags into wrappers
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Some People
Assignee: Tijl Coosemans
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-02-12 10:12 UTC by Thomas Jahns
Modified: 2015-02-26 18:09 UTC (History)
0 users

See Also:


Attachments
patch (1.31 KB, patch)
2015-02-16 12:42 UTC, Tijl Coosemans
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Thomas Jahns 2015-02-12 10:12:44 UTC
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:

_GCC_VER=49 \
MPICHLIB_FCFLAGS="-O2" FFLAGS="-Wl,-rpath=/usr/local/lib/gcc49" \
MPICHLIB_FFLAGS="-O2" \
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.
Comment 1 Bugzilla Automation freebsd_committer 2015-02-12 10:12:44 UTC
Auto-assigned to maintainer tijl@FreeBSD.org
Comment 2 Thomas Jahns 2015-02-12 10:13:38 UTC
Since that's probably non-obvious: the version I used was mpich 3.1.3
Comment 3 Tijl Coosemans freebsd_committer 2015-02-16 12:42:40 UTC
Created attachment 153035 [details]
patch

This patch should fix the port.  Please give it a try and report back.
Comment 4 Thomas Jahns 2015-02-26 09:54:53 UTC
The patch seems to work as intended. Many thanks.
Comment 5 commit-hook freebsd_committer 2015-02-26 18:08:02 UTC
A commit references this bug:

Author: tijl
Date: Thu Feb 26 18:07:13 UTC 2015
New revision: 380043
URL: https://svnweb.freebsd.org/changeset/ports/380043

Log:
  - Update to MPICH 3.1.4
  - Pass *FLAGS variables to configure via MPICHLIB_*FLAGS because otherwise
    they are hardcoded into mpicc [1]

  PR:		197563 [1]

Changes:
  head/net/mpich/Makefile
  head/net/mpich/distinfo
  head/net/mpich/files/
  head/net/mpich/files/patch-src-mpi-pt2pt-greq_start.c
  head/net/mpich/files/patch-src-mutex-mutex_create.c
  head/net/mpich/files/patch-src-mutex-mutex_free.c
  head/net/mpich/files/patch-src-mutex-mutex_lock.c
  head/net/mpich/files/patch-src-mutex-mutex_unlock.c
  head/net/mpich/pkg-plist