This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "MPICH primary repository". The branch, master has been updated via eb42f62412655c0944e89a93dcd27f5a5feda0f3 (commit) via be278b7c77c18766495d9bc756ba4a3dc6d258e2 (commit) from 38ef5818a883568e7dcc80f0e2aa0cfc972469be (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- http://git.mpich.org/mpich.git/commitdiff/eb42f62412655c0944e89a93dcd27f5a5f... commit eb42f62412655c0944e89a93dcd27f5a5feda0f3 Author: Ken Raffenetti <[email protected]> Date: Fri Dec 20 15:39:42 2013 -0600 compile wrapper cleanup Simplify logic in compile wrapper scripts. Use configure substitutions where possible to better match pkg-config style. Signed-off-by: Pavan Balaji <[email protected]> Includes the following modifications by Pavan Balaji: Remove the PAC_COMPILER_SHLIB_FLAGS usage, instead of modifying the macro in confdb. The ordering of flags in mpicc and friends does not match that of pkg-config. This is because of two reasons. 1. pkg-config reorders flags when it outputs them. This requires us to manually adjust the flags in mpicc to match up, and is error prone. 2. mpicc and friends provide LDFLAGS before the user-specified flags, followed by the include and library directories. This is to make sure that the LDFLAGS are listed before the application source file. Reordering them to match pkg-config loses this flexibility. Signed-off-by: Ken Raffenetti <[email protected]> diff --git a/configure.ac b/configure.ac index 7b095b2..cd0eaf6 100644 --- a/configure.ac +++ b/configure.ac @@ -1797,14 +1797,6 @@ export NEEDSPLIB AM_CONDITIONAL([BUILD_PROFILING_LIB],[test "$NEEDSPLIB" = "yes"]) -# --------------------------------------------------------------------------- -# determine rpath and other shared library flags for CC -# src/env may not exist yet in a vpath build -$MKDIR_P src/env -cc_shlib_conf=src/env/cc_shlib.conf -PAC_COMPILER_SHLIB_FLAGS([CC],[$cc_shlib_conf]) -AC_SUBST_FILE([cc_shlib_conf]) - # output rpath flags in a usable format for mpich.pc (pkg-config) if test "X$enable_wrapper_rpath" = "Xyes"; then eval WRAPPER_RPATH_LDFLAGS=\"$hardcode_libdir_flag_spec\" @@ -2090,11 +2082,6 @@ fi # Now test for Fortran compiler characteristics # ---------------------------------------------------------------------------- if test "$enable_f77" = "yes" ; then - # determine rpath and other shared library flags for F77 - f77_shlib_conf=src/env/f77_shlib.conf - PAC_COMPILER_SHLIB_FLAGS([F77],[$f77_shlib_conf]) - AC_SUBST_FILE([f77_shlib_conf]) - AC_LANG_FORTRAN77 PAC_PROG_F77_EXCLAIM_COMMENTS(has_exclaim="yes",has_exclaim="no") PAC_PROG_F77_HAS_INCDIR(src) @@ -2191,11 +2178,6 @@ MPICONSTMODNAME=mpi_constants MPISIZEOFMODNAME=mpi_sizeofs MPIBASEMODNAME=mpi_base if test "$enable_fc" = "yes" ; then - # determine rpath and other shared library flags for FC - fc_shlib_conf=src/env/fc_shlib.conf - PAC_COMPILER_SHLIB_FLAGS([FC],[$fc_shlib_conf]) - AC_SUBST_FILE([fc_shlib_conf]) - # Determine characteristics of the Fortran 90 compiler # Find a Fortran 90 compiler. Sets FC # Work around bug in autoconf that adds -g to FCFLAGS @@ -2430,11 +2412,6 @@ int main() { AC_SUBST(MPIR_CXX_COMPLEX) AC_SUBST(MPIR_CXX_DOUBLE_COMPLEX) AC_SUBST(MPIR_CXX_LONG_DOUBLE_COMPLEX) - - # determine rpath and other shared library flags for CXX - cxx_shlib_conf=src/env/cxx_shlib.conf - PAC_COMPILER_SHLIB_FLAGS([CXX],[$cxx_shlib_conf]) - AC_SUBST_FILE([cxx_shlib_conf]) fi if test "$enable_cxx" = yes; then diff --git a/src/env/Makefile.mk b/src/env/Makefile.mk index e5480ae..b23a6c0 100644 --- a/src/env/Makefile.mk +++ b/src/env/Makefile.mk @@ -59,11 +59,7 @@ src/env/mpif90: $(top_builddir)/src/env/mpif90.sh cp -p $? $@ endif !BUILD_BASH_SCRIPTS -DISTCLEANFILES += $(top_builddir)/src/env/cc_shlib.conf \ - $(top_builddir)/src/env/cxx_shlib.conf \ - $(top_builddir)/src/env/f77_shlib.conf \ - $(top_builddir)/src/env/fc_shlib.conf \ - $(top_builddir)/src/env/mpicc \ +DISTCLEANFILES += $(top_builddir)/src/env/mpicc \ $(top_builddir)/src/env/mpicxx \ $(top_builddir)/src/env/mpif77 \ $(top_builddir)/src/env/mpif90 diff --git a/src/env/mpicc.bash.in b/src/env/mpicc.bash.in index b1bcee1..29cc415 100644 --- a/src/env/mpicc.bash.in +++ b/src/env/mpicc.bash.in @@ -37,15 +37,8 @@ libdir=@libdir@ # Determined by a combination of environment variables and tests within # configure (e.g., determining whehter -lsocket is needee) CC="@CC@" -CFLAGS="@WRAPPER_CFLAGS@" -CPPFLAGS="@WRAPPER_CPPFLAGS@" -LDFLAGS="@WRAPPER_LDFLAGS@" -LIBS="@WRAPPER_LIBS@" MPICH_VERSION="@MPICH_VERSION@" -enable_wrapper_rpath="@enable_wrapper_rpath@" -@cc_shlib_conf@ - # Internal variables # Show is set to echo to cause the compilation command to be echoed instead # of executed. @@ -189,13 +182,13 @@ fi # Derived variables. These are assembled from variables set from the # default, environment, configuration file (if any) and command-line # options (if any) -mpilibs="@LPMPILIBNAME@ -l@MPILIBNAME@" +PROFILE_FOO= # Handle the case of a profile switch if [ -n "$profConf" ] ; then profConffile= if [ -s "$libdir/lib$profConf.a" -o -s "$libdir/lib$profConf.so" ] ; then - mpilibs="-l$profConf $mpilibs" + PROFILE_FOO="-l$profConf" elif [ -s "$sysconfdir/$profConf.conf" ] ; then profConffile="$sysconfdir/$profConf.conf" elif [ -s "$profConf.conf" ] ; then @@ -205,15 +198,6 @@ if [ -n "$profConf" ] ; then fi if [ -n "$profConffile" -a -s "$profConffile" ] ; then . $profConffile - if [ -n "$PROFILE_INCPATHS" ] ; then - CFLAGS="$PROFILE_INCPATHS $CFLAGS" - fi - if [ -n "$PROFILE_PRELIB" ] ; then - mpilibs="$PROFILE_PRELIB $mpilibs" - fi - if [ -n "$PROFILE_POSTLIB" ] ; then - mpilibs="$mpilibs $PROFILE_POSTLIB" - fi fi fi @@ -230,34 +214,15 @@ fi # file or an object file. Instead, we just check for an option that # suppressing linking, such as -c or -M. if [ "$linking" = yes ] ; then - # Attempt to encode rpath info into the executable if the user has not - # disabled rpath usage and some flavor of rpath makes sense on this - # platform. - # TODO configure and config.rpath are computing more sophisticated rpath - # schemes than this simple one. Consider updating this logic accordingly. - if test "X$enable_wrapper_rpath" = "Xyes" ; then - # prepend the path for the shared libraries to the library list - eval mpilibs=\"${hardcode_libdir_flag_spec} \$mpilibs\" - fi - - path_list="" - for path in "-L$libdir" ; do - found_path=0 - for p in $path_list ; do - if [ "$path" = "$p" ] ; then found_path=1 ; break ; fi - done - if [ "$found_path" = "0" ] ; then path_list="$path_list $path" ; fi - done - if [ "$nativelinking" = yes ] ; then - $Show $CC $CPPFLAGS $CFLAGS $LDFLAGS "${allargs[@]}" -I$includedir + $Show $CC @WRAPPER_CPPFLAGS@ $PROFILE_INCPATHS @WRAPPER_CFLAGS@ @WRAPPER_LDFLAGS@ "${allargs[@]}" -I$includedir rc=$? else - $Show $CC $CPPFLAGS $CFLAGS $LDFLAGS "${allargs[@]}" -I$includedir ${path_list} $mpilibs $LIBS + $Show $CC @WRAPPER_CPPFLAGS@ $PROFILE_INCPATHS @WRAPPER_CFLAGS@ @WRAPPER_RPATH_LDFLAGS@ @WRAPPER_LDFLAGS@ "${allargs[@]}" -I$includedir -L$libdir $PROFILE_PRELIB $PROFILE_FOO @LPMPILIBNAME@ -l@MPILIBNAME@ $PROFILE_POSTLIB @WRAPPER_LIBS@ rc=$? fi else - $Show $CC $CPPFLAGS $CFLAGS "${allargs[@]}" -I$includedir + $Show $CC @WRAPPER_CPPFLAGS@ $PROFILE_INCPATHS @WRAPPER_CFLAGS@ "${allargs[@]}" -I$includedir rc=$? fi diff --git a/src/env/mpicc.sh.in b/src/env/mpicc.sh.in index db2074a..7a0f9db 100644 --- a/src/env/mpicc.sh.in +++ b/src/env/mpicc.sh.in @@ -37,15 +37,8 @@ libdir=@libdir@ # Determined by a combination of environment variables and tests within # configure (e.g., determining whehter -lsocket is needee) CC="@CC@" -CFLAGS="@WRAPPER_CFLAGS@" -CPPFLAGS="@WRAPPER_CPPFLAGS@" -LDFLAGS="@WRAPPER_LDFLAGS@" -LIBS="@WRAPPER_LIBS@" MPICH_VERSION="@MPICH_VERSION@" -enable_wrapper_rpath="@enable_wrapper_rpath@" -@cc_shlib_conf@ - # Internal variables # Show is set to echo to cause the compilation command to be echoed instead # of executed. @@ -198,13 +191,13 @@ fi # Derived variables. These are assembled from variables set from the # default, environment, configuration file (if any) and command-line # options (if any) -mpilibs="@LPMPILIBNAME@ -l@MPILIBNAME@" +PROFILE_FOO= # Handle the case of a profile switch if [ -n "$profConf" ] ; then profConffile= if [ -s "$libdir/lib$profConf.a" -o -s "$libdir/lib$profConf.so" ] ; then - mpilibs="-l$profConf $mpilibs" + PROFILE_FOO="-l$profConf" elif [ -s "$sysconfdir/$profConf.conf" ] ; then profConffile="$sysconfdir/$profConf.conf" elif [ -s "$profConf.conf" ] ; then @@ -214,15 +207,6 @@ if [ -n "$profConf" ] ; then fi if [ -n "$profConffile" -a -s "$profConffile" ] ; then . $profConffile - if [ -n "$PROFILE_INCPATHS" ] ; then - CFLAGS="$PROFILE_INCPATHS $CFLAGS" - fi - if [ -n "$PROFILE_PRELIB" ] ; then - mpilibs="$PROFILE_PRELIB $mpilibs" - fi - if [ -n "$PROFILE_POSTLIB" ] ; then - mpilibs="$mpilibs $PROFILE_POSTLIB" - fi fi fi @@ -239,33 +223,15 @@ fi # file or an object file. Instead, we just check for an option that # suppressing linking, such as -c or -M. if [ "$linking" = yes ] ; then - # Attempt to encode rpath info into the executable if the user has not - # disabled rpath usage and some flavor of rpath makes sense on this - # platform. - # TODO configure and config.rpath are computing more sophisticated rpath - # schemes than this simple one. Consider updating this logic accordingly. - if test "X$enable_wrapper_rpath" = "Xyes" ; then - eval mpilibs=\"${hardcode_libdir_flag_spec} \$mpilibs\" - fi - - path_list="" - for path in "-L$libdir" ; do - found_path=0 - for p in $path_list ; do - if [ "$path" = "$p" ] ; then found_path=1 ; break ; fi - done - if [ "$found_path" = "0" ] ; then path_list="$path_list $path" ; fi - done - if [ "$nativelinking" = yes ] ; then - $Show $CC $CPPFLAGS $CFLAGS $LDFLAGS $allargs -I$includedir + $Show $CC @WRAPPER_CPPFLAGS@ $PROFILE_INCPATHS @WRAPPER_CFLAGS@ @WRAPPER_LDFLAGS@ $allargs -I$includedir rc=$? else - $Show $CC $CPPFLAGS $CFLAGS $LDFLAGS $allargs -I$includedir ${path_list} $mpilibs $LIBS + $Show $CC @WRAPPER_CPPFLAGS@ $PROFILE_INCPATHS @WRAPPER_CFLAGS@ @WRAPPER_RPATH_LDFLAGS@ @WRAPPER_LDFLAGS@ $allargs -I$includedir -L$libdir $PROFILE_PRELIB $PROFILE_FOO @LPMPILIBNAME@ -l@MPILIBNAME@ $PROFILE_POSTLIB @WRAPPER_LIBS@ rc=$? fi else - $Show $CC $CPPFLAGS $CFLAGS $allargs -I$includedir + $Show $CC @WRAPPER_CPPFLAGS@ $PROFILE_INCPATHS @WRAPPER_CFLAGS@ $allargs -I$includedir rc=$? fi diff --git a/src/env/mpicxx.bash.in b/src/env/mpicxx.bash.in index bb031c8..61e56fe 100644 --- a/src/env/mpicxx.bash.in +++ b/src/env/mpicxx.bash.in @@ -34,14 +34,8 @@ libdir=@libdir@ # Default settings for compiler, flags, and libraries CXX="@CXX@" -CXXFLAGS="@WRAPPER_CXXFLAGS@" -LDFLAGS="@WRAPPER_LDFLAGS@" -LIBS="@WRAPPER_LIBS@" MPICH_VERSION="@MPICH_VERSION@" -enable_wrapper_rpath="@enable_wrapper_rpath@" -@cxx_shlib_conf@ - # Internal variables # Show is set to echo to cause the compilation command to be echoed instead # of executed. @@ -190,17 +184,17 @@ fi # Derived variables. These are assembled from variables set from the # default, environment, configuration file (if any) and command-line # options (if any) -mpilibs="@LPMPILIBNAME@ -l@MPILIBNAME@" cxxlibs= if [ "@MPICXXLIBNAME@" != "@MPILIBNAME@" ] ; then cxxlibs="-l@MPICXXLIBNAME@" fi +PROFILE_FOO= # Handle the case of a profile switch if [ -n "$profConf" ] ; then profConffile= if [ -s "$libdir/lib$profConf.a" -o -s "$libdir/lib$profConf.so" ] ; then - mpilibs="-l$profConf $mpilibs" + PROFILE_FOO="-l$profConf" elif [ -s "$sysconfdir/$profConf.conf" ] ; then profConffile="$sysconfdir/$profConf.conf" elif [ -s "$profConf.conf" ] ; then @@ -210,15 +204,6 @@ if [ -n "$profConf" ] ; then fi if [ -n "$profConffile" -a -s "$profConffile" ] ; then . $profConffile - if [ -n "$PROFILE_INCPATHS" ] ; then - CXXFLAGS="$PROFILE_INCPATHS $CXXFLAGS" - fi - if [ -n "$PROFILE_PRELIB" ] ; then - mpilibs="$PROFILE_PRELIB $mpilibs" - fi - if [ -n "$PROFILE_POSTLIB" ] ; then - mpilibs="$mpilibs $PROFILE_POSTLIB" - fi fi fi # A temporary statement to invoke the compiler @@ -226,34 +211,15 @@ fi # Eventually, we'll want to move this after any non-MPI implementation # libraries if [ "$linking" = yes ] ; then - # Attempt to encode rpath info into the executable if the user has not - # disabled rpath usage and some flavor of rpath makes sense on this - # platform. - # TODO configure and config.rpath are computing more sophisticated rpath - # schemes than this simple one. Consider updating this logic accordingly. - if test "X$enable_wrapper_rpath" = "Xyes" ; then - # prepend the path for the shared libraries to the library list - eval mpilibs=\"${hardcode_libdir_flag_spec} \$mpilibs\" - fi - - path_list="" - for path in "-L$libdir" ; do - found_path=0 - for p in $path_list ; do - if [ "$path" = "$p" ] ; then found_path=1 ; break ; fi - done - if [ "$found_path" = "0" ] ; then path_list="$path_list $path" ; fi - done - if [ "$nativelinking" = yes ] ; then - $Show $CXX $CXXFLAGS $LDFLAGS "${allargs[@]}" -I$includedir + $Show $CXX $PROFILE_INCPATHS @WRAPPER_CXXFLAGS@ @WRAPPER_LDFLAGS@ "${allargs[@]}" -I$includedir rc=$? else - $Show $CXX $CXXFLAGS $LDFLAGS "${allargs[@]}" -I$includedir ${path_list} $shllibpath $cxxlibs $mpilibs $LIBS + $Show $CXX $PROFILE_INCPATHS @WRAPPER_CXXFLAGS@ @WRAPPER_RPATH_LDFLAGS@ @WRAPPER_LDFLAGS@ "${allargs[@]}" -I$includedir -L$libdir $cxxlibs $PROFILE_PRELIB $PROFILE_FOO @LPMPILIBNAME@ -l@MPILIBNAME@ $PROFILE_POSTLIB @WRAPPER_LIBS@ rc=$? fi else - $Show $CXX $CXXFLAGS "${allargs[@]}" -I$includedir + $Show $CXX $PROFILE_INCPATHS @WRAPPER_CXXFLAGS@ "${allargs[@]}" -I$includedir rc=$? fi diff --git a/src/env/mpicxx.sh.in b/src/env/mpicxx.sh.in index a135bf7..92424cc 100644 --- a/src/env/mpicxx.sh.in +++ b/src/env/mpicxx.sh.in @@ -34,14 +34,8 @@ libdir=@libdir@ # Default settings for compiler, flags, and libraries CXX="@CXX@" -CXXFLAGS="@WRAPPER_CXXFLAGS@" -LDFLAGS="@WRAPPER_LDFLAGS@" -LIBS="@WRAPPER_LIBS@" MPICH_VERSION="@MPICH_VERSION@" -enable_wrapper_rpath="@enable_wrapper_rpath@" -@cxx_shlib_conf@ - # Internal variables # Show is set to echo to cause the compilation command to be echoed instead # of executed. @@ -199,17 +193,17 @@ fi # Derived variables. These are assembled from variables set from the # default, environment, configuration file (if any) and command-line # options (if any) -mpilibs="@LPMPILIBNAME@ -l@MPILIBNAME@" cxxlibs= if [ "@MPICXXLIBNAME@" != "@MPILIBNAME@" ] ; then cxxlibs="-l@MPICXXLIBNAME@" fi +PROFILE_FOO= # Handle the case of a profile switch if [ -n "$profConf" ] ; then profConffile= if [ -s "$libdir/lib$profConf.a" -o -s "$libdir/lib$profConf.so" ] ; then - mpilibs="-l$profConf $mpilibs" + PROFILE_FOO="-l$profConf" elif [ -s "$sysconfdir/$profConf.conf" ] ; then profConffile="$sysconfdir/$profConf.conf" elif [ -s "$profConf.conf" ] ; then @@ -219,15 +213,6 @@ if [ -n "$profConf" ] ; then fi if [ -n "$profConffile" -a -s "$profConffile" ] ; then . $profConffile - if [ -n "$PROFILE_INCPATHS" ] ; then - CXXFLAGS="$PROFILE_INCPATHS $CXXFLAGS" - fi - if [ -n "$PROFILE_PRELIB" ] ; then - mpilibs="$PROFILE_PRELIB $mpilibs" - fi - if [ -n "$PROFILE_POSTLIB" ] ; then - mpilibs="$mpilibs $PROFILE_POSTLIB" - fi fi fi # A temporary statement to invoke the compiler @@ -235,33 +220,15 @@ fi # Eventually, we'll want to move this after any non-MPI implementation # libraries if [ "$linking" = yes ] ; then - # Attempt to encode rpath info into the executable if the user has not - # disabled rpath usage and some flavor of rpath makes sense on this - # platform. - # TODO configure and config.rpath are computing more sophisticated rpath - # schemes than this simple one. Consider updating this logic accordingly. - if test "X$enable_wrapper_rpath" = "Xyes" ; then - eval mpilibs=\"${hardcode_libdir_flag_spec} \$mpilibs\" - fi - - path_list="" - for path in "-L$libdir" ; do - found_path=0 - for p in $path_list ; do - if [ "$path" = "$p" ] ; then found_path=1 ; break ; fi - done - if [ "$found_path" = "0" ] ; then path_list="$path_list $path" ; fi - done - if [ "$nativelinking" = yes ] ; then - $Show $CXX $CXXFLAGS $LDFLAGS $allargs -I$includedir + $Show $CXX $PROFILE_INCPATHS @WRAPPER_CXXFLAGS@ @WRAPPER_LDFLAGS@ $allargs -I$includedir rc=$? else - $Show $CXX $CXXFLAGS $LDFLAGS $allargs -I$includedir ${path_list} $shllibpath $cxxlibs $mpilibs $LIBS + $Show $CXX $PROFILE_INCPATHS @WRAPPER_CXXFLAGS@ @WRAPPER_RPATH_LDFLAGS@ @WRAPPER_LDFLAGS@ $allargs -I$includedir -L$libdir $cxxlibs $PROFILE_PRELIB $PROFILE_FOO @LPMPILIBNAME@ -l@MPILIBNAME@ $PROFILE_POSTLIB @WRAPPER_LIBS@ rc=$? fi else - $Show $CXX $CXXFLAGS $allargs -I$includedir + $Show $CXX $PROFILE_INCPATHS @WRAPPER_CXXFLAGS@ $allargs -I$includedir rc=$? fi diff --git a/src/env/mpif77.bash.in b/src/env/mpif77.bash.in index 04d7817..9625dd3 100644 --- a/src/env/mpif77.bash.in +++ b/src/env/mpif77.bash.in @@ -40,14 +40,8 @@ libdir=@libdir@ # configure (e.g., determining whehter -lsocket is needee) F77="@F77@" F77CPP="@F77CPP@" -FFLAGS="@WRAPPER_FFLAGS@" -LDFLAGS="@WRAPPER_LDFLAGS@" -LIBS="@WRAPPER_LIBS@ @F77_OTHER_LIBS@" MPICH_VERSION="@MPICH_VERSION@" -enable_wrapper_rpath="@enable_wrapper_rpath@" -@f77_shlib_conf@ - # Internal variables # Show is set to echo to cause the compilation command to be echoed instead # of executed. @@ -242,13 +236,13 @@ fi # Derived variables. These are assembled from variables set from the # default, environment, configuration file (if any) and command-line # options (if any) -mpilibs="@LPMPILIBNAME@ -l@MPILIBNAME@" +PROFILE_FOO= # Handle the case of a profile switch if [ -n "$profConf" ] ; then profConffile= if [ -s "$libdir/lib$profConf.a" -o -s "$libdir/lib$profConf.so" ] ; then - mpilibs="-l$profConf $mpilibs" + PROFILE_FOO="-l$profConf" elif [ -s "$sysconfdir/$profConf.conf" ] ; then profConffile="$sysconfdir/$profConf.conf" elif [ -s "$profConf.conf" ] ; then @@ -258,15 +252,6 @@ if [ -n "$profConf" ] ; then fi if [ -n "$profConffile" -a -s "$profConffile" ] ; then . $profConffile - if [ -n "$PROFILE_INCPATHS" ] ; then - FFLAGS="$PROFILE_INCPATHS $FFLAGS" - fi - if [ -n "$PROFILE_PRELIB" ] ; then - mpilibs="$PROFILE_PRELIB $mpilibs" - fi - if [ -n "$PROFILE_POSTLIB" ] ; then - mpilibs="$mpilibs $PROFILE_POSTLIB" - fi fi fi # @@ -276,34 +261,15 @@ fi # libraries # if [ "$linking" = yes ] ; then - # Attempt to encode rpath info into the executable if the user has not - # disabled rpath usage and some flavor of rpath makes sense on this - # platform. - # TODO configure and config.rpath are computing more sophisticated rpath - # schemes than this simple one. Consider updating this logic accordingly. - if test "X$enable_wrapper_rpath" = "Xyes" ; then - # prepend the path for the shared libraries to the library list - eval mpilibs=\"${hardcode_libdir_flag_spec} \$mpilibs\" - fi - - path_list="" - for path in "-L$libdir" ; do - found_path=0 - for p in $path_list ; do - if [ "$path" = "$p" ] ; then found_path=1 ; break ; fi - done - if [ "$found_path" = "0" ] ; then path_list="$path_list $path" ; fi - done - if [ "$nativelinking" = yes ] ; then - $Show $F77 $FFLAGS $LDFLAGS "${allargs[@]}" -I$includedir + $Show $F77 $PROFILE_INCPATHS @WRAPPER_FFLAGS@ @WRAPPER_LDFLAGS@ "${allargs[@]}" -I$includedir rc=$? else - $Show $F77 $FFLAGS $LDFLAGS "${allargs[@]}" -I$includedir ${path_list} $mpilibs $LIBS + $Show $F77 $PROFILE_INCPATHS @WRAPPER_FFLAGS@ @WRAPPER_RPATH_LDFLAGS@ @WRAPPER_LDFLAGS@ "${allargs[@]}" -I$includedir -L$libdir $PROFILE_PRELIB $PROFILE_FOO @LPMPILIBNAME@ -l@MPILIBNAME@ $PROFILE_POSTLIB @WRAPPER_LIBS@ @F77_OTHER_LIBS@ rc=$? fi else - $Show $F77 $FFLAGS "${allargs[@]}" -I$includedir + $Show $F77 $PROFILE_INCPATHS @WRAPPER_FFLAGS@ "${allargs[@]}" -I$includedir rc=$? fi if [ -n "$rmfiles" ] ; then diff --git a/src/env/mpif77.sh.in b/src/env/mpif77.sh.in index ab8077e..73f664d 100644 --- a/src/env/mpif77.sh.in +++ b/src/env/mpif77.sh.in @@ -40,14 +40,8 @@ libdir=@libdir@ # configure (e.g., determining whehter -lsocket is needee) F77="@F77@" F77CPP="@F77CPP@" -FFLAGS="@WRAPPER_FFLAGS@" -LDFLAGS="@WRAPPER_LDFLAGS@" -LIBS="@WRAPPER_LIBS@ @F77_OTHER_LIBS@" MPICH_VERSION="@MPICH_VERSION@" -enable_wrapper_rpath="@enable_wrapper_rpath@" -@f77_shlib_conf@ - # Internal variables # Show is set to echo to cause the compilation command to be echoed instead # of executed. @@ -264,13 +258,13 @@ fi # Derived variables. These are assembled from variables set from the # default, environment, configuration file (if any) and command-line # options (if any) -mpilibs="@LPMPILIBNAME@ -l@MPILIBNAME@" +PROFILE_FOO= # Handle the case of a profile switch if [ -n "$profConf" ] ; then profConffile= if [ -s "$libdir/lib$profConf.a" -o -s "$libdir/lib$profConf.so" ] ; then - mpilibs="-l$profConf $mpilibs" + PROFILE_FOO="-l$profConf" elif [ -s "$sysconfdir/$profConf.conf" ] ; then profConffile="$sysconfdir/$profConf.conf" elif [ -s "$profConf.conf" ] ; then @@ -280,15 +274,6 @@ if [ -n "$profConf" ] ; then fi if [ -n "$profConffile" -a -s "$profConffile" ] ; then . $profConffile - if [ -n "$PROFILE_INCPATHS" ] ; then - FFLAGS="$PROFILE_INCPATHS $FFLAGS" - fi - if [ -n "$PROFILE_PRELIB" ] ; then - mpilibs="$PROFILE_PRELIB $mpilibs" - fi - if [ -n "$PROFILE_POSTLIB" ] ; then - mpilibs="$mpilibs $PROFILE_POSTLIB" - fi fi fi # @@ -298,33 +283,15 @@ fi # libraries # if [ "$linking" = yes ] ; then - # Attempt to encode rpath info into the executable if the user has not - # disabled rpath usage and some flavor of rpath makes sense on this - # platform. - # TODO configure and config.rpath are computing more sophisticated rpath - # schemes than this simple one. Consider updating this logic accordingly. - if test "X$enable_wrapper_rpath" = "Xyes" ; then - eval mpilibs=\"${hardcode_libdir_flag_spec} \$mpilibs\" - fi - - path_list="" - for path in "-L$libdir" ; do - found_path=0 - for p in $path_list ; do - if [ "$path" = "$p" ] ; then found_path=1 ; break ; fi - done - if [ "$found_path" = "0" ] ; then path_list="$path_list $path" ; fi - done - if [ "$nativelinking" = yes ] ; then - $Show $F77 $FFLAGS $LDFLAGS $allargs -I$includedir + $Show $F77 $PROFILE_INCPATHS @WRAPPER_FFLAGS@ @WRAPPER_LDFLAGS@ $allargs -I$includedir rc=$? else - $Show $F77 $FFLAGS $LDFLAGS $allargs -I$includedir ${path_list} $mpilibs $LIBS + $Show $F77 $PROFILE_INCPATHS @WRAPPER_FFLAGS@ @WRAPPER_RPATH_LDFLAGS@ @WRAPPER_LDFLAGS@ $allargs -I$includedir -L$libdir $PROFILE_PRELIB $PROFILE_FOO @LPMPILIBNAME@ -l@MPILIBNAME@ $PROFILE_POSTLIB @WRAPPER_LIBS@ @F77_OTHER_LIBS@ rc=$? fi else - $Show $F77 $FFLAGS $allargs -I$includedir + $Show $F77 $PROFILE_INCPATHS @WRAPPER_FFLAGS@ $allargs -I$includedir rc=$? fi if [ -n "$rmfiles" ] ; then diff --git a/src/env/mpif90.bash.in b/src/env/mpif90.bash.in index e3529af..c93ff1f 100644 --- a/src/env/mpif90.bash.in +++ b/src/env/mpif90.bash.in @@ -53,14 +53,8 @@ FCMODINC="@FCMODINCFLAG@" FCMODINCSPEC="@FCMODINCSPEC@" FCEXT="@FCEXT@" -FCFLAGS="@WRAPPER_FCFLAGS@" -LDFLAGS="@WRAPPER_LDFLAGS@" -LIBS="@WRAPPER_LIBS@ @FC_OTHER_LIBS@" MPICH_VERSION="@MPICH_VERSION@" -enable_wrapper_rpath="@enable_wrapper_rpath@" -@fc_shlib_conf@ - # Internal variables # Show is set to echo to cause the compilation command to be echoed instead # of executed. @@ -259,13 +253,13 @@ fi # The library lib${MPILIBNAME}f90 contains the f90-specific features, # such as the module objects and the routines defined by them # (MPI_SIZEOF is handled in lib${MPILIBNAME)f90, for example). -mpilibs="@LPMPILIBNAME@ -l@MPILIBNAME@" +PROFILE_FOO= # Handle the case of a profile switch if [ -n "$profConf" ] ; then profConffile= if [ -s "$libdir/lib$profConf.a" -o -s "$libdir/lib$profConf.so" ] ; then - mpilibs="-l$profConf $mpilibs" + PROFILE_FOO="-l$profConf" elif [ -s "$sysconfdir/$profConf.conf" ] ; then profConffile="$sysconfdir/$profConf.conf" elif [ -s "$profConf.conf" ] ; then @@ -275,15 +269,6 @@ if [ -n "$profConf" ] ; then fi if [ -n "$profConffile" -a -s "$profConffile" ] ; then . $profConffile - if [ -n "$PROFILE_INCPATHS" ] ; then - FCFLAGS="$PROFILE_INCPATHS $FCFLAGS" - fi - if [ -n "$PROFILE_PRELIB" ] ; then - mpilibs="$PROFILE_PRELIB $mpilibs" - fi - if [ -n "$PROFILE_POSTLIB" ] ; then - mpilibs="$mpilibs $PROFILE_POSTLIB" - fi fi fi @@ -327,34 +312,15 @@ fi # libraries if [ "$linking" = yes ] ; then - # Attempt to encode rpath info into the executable if the user has not - # disabled rpath usage and some flavor of rpath makes sense on this - # platform. - # TODO configure and config.rpath are computing more sophisticated rpath - # schemes than this simple one. Consider updating this logic accordingly. - if test "X$enable_wrapper_rpath" = "Xyes" ; then - # prepend the path for the shared libraries to the library list - eval mpilibs=\"${hardcode_libdir_flag_spec} \$mpilibs\" - fi - - path_list="" - for path in "-L$libdir" ; do - found_path=0 - for p in $path_list ; do - if [ "$path" = "$p" ] ; then found_path=1 ; break ; fi - done - if [ "$found_path" = "0" ] ; then path_list="$path_list $path" ; fi - done - if [ "$nativelinking" = yes ] ; then - $Show $FC $FCFLAGS $LDFLAGS "${allargs[@]}" + $Show $FC $PROFILE_INCPATHS @WRAPPER_FCFLAGS@ @WRAPPER_LDFLAGS@ "${allargs[@]}" rc=$? else - $Show $FC $FCFLAGS $LDFLAGS "${allargs[@]}" $FCINCDIRS $FCMODDIRS ${path_list} $FCMODLIBS $mpilibs $LIBS + $Show $FC $PROFILE_INCPATHS @WRAPPER_FCFLAGS@ @WRAPPER_RPATH_LDFLAGS@ @WRAPPER_LDFLAGS@ "${allargs[@]}" $FCINCDIRS $FCMODDIRS -L$libdir $FCMODLIBS $PROFILE_PRELIB $PROFILE_FOO @LPMPILIBNAME@ -l@MPILIBNAME@ $PROFILE_POSTLIB @WRAPPER_LIBS@ @FC_OTHER_LIBS@ rc=$? fi else - $Show $FC $FCFLAGS "${allargs[@]}" $FCINCDIRS $FCMODDIRS + $Show $FC $PROFILE_INCPATHS @WRAPPER_FCFLAGS@ "${allargs[@]}" $FCINCDIRS $FCMODDIRS rc=$? fi if [ -n "$rmfiles" ] ; then diff --git a/src/env/mpif90.sh.in b/src/env/mpif90.sh.in index 238df12..6f862c0 100644 --- a/src/env/mpif90.sh.in +++ b/src/env/mpif90.sh.in @@ -53,14 +53,8 @@ FCMODINC="@FCMODINCFLAG@" FCMODINCSPEC="@FCMODINCSPEC@" FCEXT="@FCEXT@" # -FCFLAGS="@WRAPPER_FCFLAGS@" -LDFLAGS="@WRAPPER_LDFLAGS@" -LIBS="@WRAPPER_LIBS@ @FC_OTHER_LIBS@" MPICH_VERSION="@MPICH_VERSION@" -enable_wrapper_rpath="@enable_wrapper_rpath@" -@fc_shlib_conf@ - # Internal variables # Show is set to echo to cause the compilation command to be echoed instead # of executed. @@ -276,13 +270,13 @@ fi # Derived variables. These are assembled from variables set from the # default, environment, configuration file (if any) and command-line # options (if any) -mpilibs="@LPMPILIBNAME@ -l@MPILIBNAME@" +PROFILE_FOO= # Handle the case of a profile switch if [ -n "$profConf" ] ; then profConffile= if [ -s "$libdir/lib$profConf.a" -o -s "$libdir/lib$profConf.so" ] ; then - mpilibs="-l$profConf $mpilibs" + PROFILE_FOO="-l$profConf" elif [ -s "$sysconfdir/$profConf.conf" ] ; then profConffile="$sysconfdir/$profConf.conf" elif [ -s "$profConf.conf" ] ; then @@ -292,15 +286,6 @@ if [ -n "$profConf" ] ; then fi if [ -n "$profConffile" -a -s "$profConffile" ] ; then . $profConffile - if [ -n "$PROFILE_INCPATHS" ] ; then - FCFLAGS="$PROFILE_INCPATHS $FCFLAGS" - fi - if [ -n "$PROFILE_PRELIB" ] ; then - mpilibs="$PROFILE_PRELIB $mpilibs" - fi - if [ -n "$PROFILE_POSTLIB" ] ; then - mpilibs="$mpilibs $PROFILE_POSTLIB" - fi fi fi @@ -344,33 +329,15 @@ fi # libraries if [ "$linking" = yes ] ; then - # Attempt to encode rpath info into the executable if the user has not - # disabled rpath usage and some flavor of rpath makes sense on this - # platform. - # TODO configure and config.rpath are computing more sophisticated rpath - # schemes than this simple one. Consider updating this logic accordingly. - if test "X$enable_wrapper_rpath" = "Xyes" ; then - eval mpilibs=\"${hardcode_libdir_flag_spec} \$mpilibs\" - fi - - path_list="" - for path in "-L$libdir" ; do - found_path=0 - for p in $path_list ; do - if [ "$path" = "$p" ] ; then found_path=1 ; break ; fi - done - if [ "$found_path" = "0" ] ; then path_list="$path_list $path" ; fi - done - if [ "$nativelinking" = yes ] ; then - $Show $FC $FCFLAGS $LDFLAGS $allargs + $Show $FC $PROFILE_INCPATHS @WRAPPER_FCFLAGS@ @WRAPPER_LDFLAGS@ $allargs rc=$? else - $Show $FC $FCFLAGS $LDFLAGS $allargs $FCINCDIRS $FCMODDIRS ${path_list} $FCMODLIBS $mpilibs $LIBS + $Show $FC $PROFILE_INCPATHS @WRAPPER_FCFLAGS@ @WRAPPER_RPATH_LDFLAGS@ @WRAPPER_LDFLAGS@ $allargs $FCINCDIRS $FCMODDIRS -L$libdir $FCMODLIBS $PROFILE_PRELIB $PROFILE_FOO @LPMPILIBNAME@ -l@MPILIBNAME@ $PROFILE_POSTLIB @WRAPPER_LIBS@ @FC_OTHER_LIBS@ rc=$? fi else - $Show $FC $FCFLAGS $allargs $FCINCDIRS $FCMODDIRS + $Show $FC $PROFILE_INCPATHS @WRAPPER_FCFLAGS@ $allargs $FCINCDIRS $FCMODDIRS rc=$? fi if [ -n "$rmfiles" ] ; then http://git.mpich.org/mpich.git/commitdiff/be278b7c77c18766495d9bc756ba4a3dc6... commit be278b7c77c18766495d9bc756ba4a3dc6d258e2 Author: Ken Raffenetti <[email protected]> Date: Mon Dec 9 08:01:58 2013 -0600 Improve pkg-config support Add rpath flags to pkg-config to match compiler wrappers. Fixes #1044 Signed-off-by: Pavan Balaji <[email protected]> diff --git a/configure.ac b/configure.ac index 21fc951..7b095b2 100644 --- a/configure.ac +++ b/configure.ac @@ -1805,6 +1805,12 @@ cc_shlib_conf=src/env/cc_shlib.conf PAC_COMPILER_SHLIB_FLAGS([CC],[$cc_shlib_conf]) AC_SUBST_FILE([cc_shlib_conf]) +# output rpath flags in a usable format for mpich.pc (pkg-config) +if test "X$enable_wrapper_rpath" = "Xyes"; then + eval WRAPPER_RPATH_LDFLAGS=\"$hardcode_libdir_flag_spec\" +fi +AC_SUBST(WRAPPER_RPATH_LDFLAGS) + # --------------------------------------------------------------------------- # Support for MPI_T performance variables diff --git a/src/packaging/pkgconfig/mpich.pc.in b/src/packaging/pkgconfig/mpich.pc.in index ece3e55..48657fa 100644 --- a/src/packaging/pkgconfig/mpich.pc.in +++ b/src/packaging/pkgconfig/mpich.pc.in @@ -9,7 +9,7 @@ Description: High Performance and portable MPI Version: @MPICH_VERSION@ URL: http://www.mcs.anl.gov/research/projects/mpich Requires: -Libs: @WRAPPER_LDFLAGS@ -L${libdir} @LPMPILIBNAME@ -l@MPILIBNAME@ @WRAPPER_LIBS@ +Libs: @WRAPPER_RPATH_LDFLAGS@ @WRAPPER_LDFLAGS@ -L${libdir} @LPMPILIBNAME@ -l@MPILIBNAME@ @WRAPPER_LIBS@ Cflags: @WRAPPER_CPPFLAGS@ @WRAPPER_CFLAGS@ -I${includedir} # pkg-config does not understand Cxxflags, etc. So we allow users to ----------------------------------------------------------------------- Summary of changes: configure.ac | 27 ++++----------------- src/env/Makefile.mk | 6 +---- src/env/mpicc.bash.in | 45 ++++------------------------------- src/env/mpicc.sh.in | 44 ++++------------------------------ src/env/mpicxx.bash.in | 44 ++++------------------------------ src/env/mpicxx.sh.in | 43 ++++----------------------------- src/env/mpif77.bash.in | 44 ++++------------------------------ src/env/mpif77.sh.in | 43 ++++----------------------------- src/env/mpif90.bash.in | 44 ++++------------------------------ src/env/mpif90.sh.in | 43 ++++----------------------------- src/packaging/pkgconfig/mpich.pc.in | 2 +- 11 files changed, 47 insertions(+), 338 deletions(-) hooks/post-receive -- MPICH primary repository