From e5525ad5f8c2a906e893719349e600c8d34e29b5 Mon Sep 17 00:00:00 2001
From: Brian Barrett <brbarret@open-mpi.org>
Date: Fri, 18 Nov 2005 20:55:38 +0000
Subject: [PATCH] fix for issue found by Dries Kimpe -- if a user specifies two
 identical options as part of the --with-wrapper-{*flags,libs} options to
 configure, we'll eat one of them, which can have unintended issues.  For
 example,

  --with-wrapper-ldflags="-Wl,-rpath -Wl,pathA -Wl,-rpath -Wl,pathB"

will result in us removing the second -Wl,-rpath, which will result
in wrapper ldflags of -Wl,-rpath -Wl,pathA -Wl,pathB which doesn't
really do what the user intended.  We now always pass the user-
specified flags completely unmodified, bypassing the OMPI_UNIQ
routine

This commit was SVN r8193.
---
 config/ompi_setup_wrappers.m4 | 33 +++++++++++++++++++++++++++------
 1 file changed, 27 insertions(+), 6 deletions(-)

diff --git a/config/ompi_setup_wrappers.m4 b/config/ompi_setup_wrappers.m4
index 33a8e354e2..c910269bb4 100644
--- a/config/ompi_setup_wrappers.m4
+++ b/config/ompi_setup_wrappers.m4
@@ -18,6 +18,14 @@ dnl $HEADER$
 dnl
 
 
+# OMPI_SETUP_WRAPPER_INIT()
+# -------------------------
+# Setup wrapper compiler configuration information - should be called
+# before the bulk of the tests that can affect the wrapper compilers
+#
+# Note that we keep the user-specified flags seperately because we
+# don't want them to go through OMPI_UNIQ because that has resulted in
+# unexpected behavior for the user in the past.
 AC_DEFUN([OMPI_SETUP_WRAPPER_INIT],[
     WRAPPER_EXTRA_CFLAGS=
     WRAPPER_EXTRA_CXXFLAGS=
@@ -26,13 +34,20 @@ AC_DEFUN([OMPI_SETUP_WRAPPER_INIT],[
     WRAPPER_EXTRA_LDFLAGS=
     WRAPPER_EXTRA_LIBS=
 
+    USER_WRAPPER_EXTRA_CFLAGS=
+    USER_WRAPPER_EXTRA_CXXFLAGS=
+    USER_WRAPPER_EXTRA_FFLAGS=
+    USER_WRAPPER_EXTRA_FCFLAGS=
+    USER_WRAPPER_EXTRA_LDFLAGS=
+    USER_WRAPPER_EXTRA_LIBS=
+
     AC_ARG_WITH([wrapper-cflags], 
                 [AC_HELP_STRING([--with-wrapper-cflags],
                                 [Extra flags to add to CFLAGS when using mpicc])])
     if test "$with_wrapper_cflags" = "yes" -o "$with_wrapper_cflags" = "no"; then
         AC_MSG_ERROR([--with-wrapper-cflags must have an argument.  Aborting])
     elif test ! -z "$with_wrapper_cflags" ; then
-        WRAPPER_EXTRA_CFLAGS="$with_wrapper_cflags"
+        USER_WRAPPER_EXTRA_CFLAGS="$with_wrapper_cflags"
     fi
 
     AC_ARG_WITH([wrapper-cxxflags], 
@@ -41,7 +56,7 @@ AC_DEFUN([OMPI_SETUP_WRAPPER_INIT],[
     if test "$with_wrapper_cxxflags" = "yes" -o "$with_wrapper_cxxflags" = "no"; then
         AC_MSG_ERROR([--with-wrapper-cxxflags must have an argument.  Aborting])
     elif test ! -z "$with_wrapper_cxxflags" ; then
-        WRAPPER_EXTRA_CXXFLAGS="$with_wrapper_cxxflags"
+        USER_WRAPPER_EXTRA_CXXFLAGS="$with_wrapper_cxxflags"
     fi
 
     AC_ARG_WITH([wrapper-fflags], 
@@ -50,7 +65,7 @@ AC_DEFUN([OMPI_SETUP_WRAPPER_INIT],[
     if test "$with_wrapper_fflags" = "yes" -o "$with_wrapper_fflags" = "no"; then
         AC_MSG_ERROR([--with-wrapper-fflags must have an argument.  Aborting])
     elif test ! -z "$with_wrapper_fflags" ; then
-        WRAPPER_EXTRA_FFLAGS="$with_wrapper_fflags"
+        USER_WRAPPER_EXTRA_FFLAGS="$with_wrapper_fflags"
     fi
 
     AC_ARG_WITH([wrapper-fcflags], 
@@ -59,7 +74,7 @@ AC_DEFUN([OMPI_SETUP_WRAPPER_INIT],[
     if test "$with_wrapper_fcflags" = "yes" -o "$with_wrapper_fcflags" = "no"; then
         AC_MSG_ERROR([--with-wrapper-fcflags must have an argument.  Aborting])
     elif test ! -z "$with_wrapper_fcflags" ; then
-        WRAPPER_EXTRA_FCFLAGS="$with_wrapper_fcflags"
+        USER_WRAPPER_EXTRA_FCFLAGS="$with_wrapper_fcflags"
     fi
 
     AC_ARG_WITH([wrapper-ldflags], 
@@ -68,7 +83,7 @@ AC_DEFUN([OMPI_SETUP_WRAPPER_INIT],[
     if test "$with_wrapper_ldflags" = "yes" -o "$with_wrapper_ldflags" = "no"; then
         AC_MSG_ERROR([--with-wrapper-ldflags must have an argument.  Aborting])
     elif test ! -z "$with_wrapper_ldflags" ; then
-        WRAPPER_EXTRA_LDFLAGS="$with_wrapper_ldflags"
+        USER_WRAPPER_EXTRA_LDFLAGS="$with_wrapper_ldflags"
     fi
 
     AC_ARG_WITH([wrapper-libs], 
@@ -77,7 +92,7 @@ AC_DEFUN([OMPI_SETUP_WRAPPER_INIT],[
     if test "$with_wrapper_libs" = "yes" -o "$with_wrapper_libs" = "no"; then
         AC_MSG_ERROR([--with-wrapper-libs must have an argument.  Aborting])
     elif test ! -z "$with_wrapper_libs" ; then
-        WRAPPER_EXTRA_LIBS="$with_wrapper_libs"
+        USER_WRAPPER_EXTRA_LIBS="$with_wrapper_libs"
     fi
 ])
 
@@ -90,6 +105,7 @@ AC_DEFUN([OMPI_SETUP_WRAPPER_FINAL],[
     #
     AC_MSG_CHECKING([for mpicc CFLAGS])
     OMPI_UNIQ(WRAPPER_EXTRA_CFLAGS)
+    WRAPPER_EXTRA_CFLAGS="$WRAPPER_EXTRA_CFLAGS $USER_WRAPPER_EXTRA_CFLAGS"
     AC_SUBST(WRAPPER_EXTRA_CFLAGS)
     AC_DEFINE_UNQUOTED(WRAPPER_EXTRA_CFLAGS, "$WRAPPER_EXTRA_CFLAGS",
         [Additional CFLAGS to pass through the wrapper compilers])
@@ -100,6 +116,7 @@ AC_DEFUN([OMPI_SETUP_WRAPPER_FINAL],[
     #
     AC_MSG_CHECKING([for mpiCC CXXFLAGS])
     OMPI_UNIQ(WRAPPER_EXTRA_CXXFLAGS)
+    WRAPPER_EXTRA_CXXFLAGS="$WRAPPER_EXTRA_CXXFLAGS $USER_WRAPPER_EXTRA_CXXFLAGS"
     AC_SUBST(WRAPPER_EXTRA_CXXFLAGS)
     AC_DEFINE_UNQUOTED(WRAPPER_EXTRA_CXXFLAGS, "$WRAPPER_EXTRA_CXXFLAGS",
         [Additional CXXFLAGS to pass through the wrapper compilers])
@@ -110,6 +127,7 @@ AC_DEFUN([OMPI_SETUP_WRAPPER_FINAL],[
     #
     AC_MSG_CHECKING([for mpif77/mpif90 FFLAGS])
     OMPI_UNIQ(WRAPPER_EXTRA_FFLAGS)
+    WRAPPER_EXTRA_FFLAGS="$WRAPPER_EXTRA_FFLAGS $USER_WRAPPER_EXTRA_FFLAGS"
     AC_SUBST(WRAPPER_EXTRA_FFLAGS)
     AC_DEFINE_UNQUOTED(WRAPPER_EXTRA_FFLAGS, "$WRAPPER_EXTRA_FFLAGS",
         [Additional FFLAGS to pass through the wrapper compilers])
@@ -120,6 +138,7 @@ AC_DEFUN([OMPI_SETUP_WRAPPER_FINAL],[
     #
     AC_MSG_CHECKING([for mpif77/mpif90 FCFLAGS])
     OMPI_UNIQ(WRAPPER_EXTRA_FCFLAGS)
+    WRAPPER_EXTRA_FCFLAGS="$WRAPPER_EXTRA_FCFLAGS $USER_WRAPPER_EXTRA_FCFLAGS"
     AC_SUBST(WRAPPER_EXTRA_FCFLAGS)
     AC_DEFINE_UNQUOTED(WRAPPER_EXTRA_FCFLAGS, "$WRAPPER_EXTRA_FCFLAGS",
         [Additional FCFLAGS to pass through the wrapper compilers])
@@ -130,6 +149,7 @@ AC_DEFUN([OMPI_SETUP_WRAPPER_FINAL],[
     #
     AC_MSG_CHECKING([for wrapper compiler LDFLAGS])
     OMPI_UNIQ(WRAPPER_EXTRA_LDFLAGS)
+    WRAPPER_EXTRA_LDFLAGS="$WRAPPER_EXTRA_LDFLAGS $USER_WRAPPER_EXTRA_LDFLAGS"
     AC_SUBST(WRAPPER_EXTRA_LDFLAGS)
     AC_DEFINE_UNQUOTED(WRAPPER_EXTRA_LDFLAGS, "$WRAPPER_EXTRA_LDFLAGS",
         [Additional LDFLAGS to pass through the wrapper compilers])
@@ -139,6 +159,7 @@ AC_DEFUN([OMPI_SETUP_WRAPPER_FINAL],[
     # WRAPPER_EXTRA_LIBS
     #
     AC_MSG_CHECKING([for wrapper compiler LIBS])
+    WRAPPER_EXTRA_LIBS="$WRAPPER_EXTRA_LIBS $USER_WRAPPER_EXTRA_LIBS"
     AC_SUBST(WRAPPER_EXTRA_LIBS)
     AC_DEFINE_UNQUOTED(WRAPPER_EXTRA_LIBS, "$WRAPPER_EXTRA_LIBS",
         [Additional LIBS to pass through the wrapper compilers])