Tom Lane wrote:
> Bruce Momjian <[EMAIL PROTECTED]> writes:
> > No.  The problem is that the test script just tries all options and if
> > it doesn't error out, it uses it.  Ideally we could test from configure
> > and ingnore meaningless options but we don't know how yet.
> 
> Drop any options that cause the compiler to write anything on stderr.

OK, the configure test is:

        AC_TRY_LINK([#include <pthread.h>],
                    [pthread_t th; pthread_join(th, 0);
                     pthread_attr_init(0); pthread_cleanup_push(0, 0);
                     pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
                    [acx_pthread_ok=yes], [acx_pthread_ok=no])

Seems we can't just jump in there and grab stderr so I added the
following code to CVS which should do the trick.

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  [EMAIL PROTECTED]               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
Index: configure
===================================================================
RCS file: /cvsroot/pgsql-server/configure,v
retrieving revision 1.391
diff -c -c -r1.391 configure
*** configure   10 Sep 2004 13:53:39 -0000      1.391
--- configure   10 Sep 2004 23:55:53 -0000
***************
*** 13325,13342 ****
  fi
  rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
  
          LIBS="$save_LIBS"
          CFLAGS="$save_CFLAGS"
  
          echo "$as_me:$LINENO: result: $acx_pthread_ok" >&5
  echo "${ECHO_T}$acx_pthread_ok" >&6
-         if test "x$acx_pthread_ok" = xyes; then
-             # we continue with more flags because Linux needs -lpthread
-             # for libpq builds on PostgreSQL.  The test above only
-             # tests for building binaries, not shared libraries.
-             PTHREAD_LIBS=" $tryPTHREAD_LIBS $PTHREAD_LIBS"
-             PTHREAD_CFLAGS="$PTHREAD_CFLAGS $tryPTHREAD_CFLAGS"
-         fi
  done
  fi
  
--- 13325,13356 ----
  fi
  rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
  
+         if test "x$acx_pthread_ok" = xyes; then
+             # Don't use options that are ignored by the compiler.
+             # We find them by checking stderror.
+             cat >conftest.$ac_ext <<_ACEOF
+ int
+ main ()
+ {
+   return 0;
+ }
+ _ACEOF
+             rm -f conftest.$ac_objext conftest$ac_exeext
+             if test "`(eval $ac_link 2>&1 >/dev/null)`" = ""; then
+                 # we continue with more flags because Linux needs -lpthread
+                 # for libpq builds on PostgreSQL.  The test above only
+                 # tests for building binaries, not shared libraries.
+                 PTHREAD_LIBS=" $tryPTHREAD_LIBS $PTHREAD_LIBS"
+                 PTHREAD_CFLAGS="$PTHREAD_CFLAGS $tryPTHREAD_CFLAGS"
+             else   acx_pthread_ok=no
+             fi
+         fi
+ 
          LIBS="$save_LIBS"
          CFLAGS="$save_CFLAGS"
  
          echo "$as_me:$LINENO: result: $acx_pthread_ok" >&5
  echo "${ECHO_T}$acx_pthread_ok" >&6
  done
  fi
  
Index: config/acx_pthread.m4
===================================================================
RCS file: /cvsroot/pgsql-server/config/acx_pthread.m4,v
retrieving revision 1.6
diff -c -c -r1.6 acx_pthread.m4
*** config/acx_pthread.m4       17 Aug 2004 15:19:09 -0000      1.6
--- config/acx_pthread.m4       10 Sep 2004 23:55:54 -0000
***************
*** 129,145 ****
                       pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
                      [acx_pthread_ok=yes], [acx_pthread_ok=no])
  
          LIBS="$save_LIBS"
          CFLAGS="$save_CFLAGS"
  
          AC_MSG_RESULT($acx_pthread_ok)
-         if test "x$acx_pthread_ok" = xyes; then
-             # we continue with more flags because Linux needs -lpthread
-             # for libpq builds on PostgreSQL.  The test above only
-             # tests for building binaries, not shared libraries.
-             PTHREAD_LIBS=" $tryPTHREAD_LIBS $PTHREAD_LIBS"
-             PTHREAD_CFLAGS="$PTHREAD_CFLAGS $tryPTHREAD_CFLAGS"
-         fi
  done
  fi
  
--- 129,159 ----
                       pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
                      [acx_pthread_ok=yes], [acx_pthread_ok=no])
  
+         if test "x$acx_pthread_ok" = xyes; then
+             # Don't use options that are ignored by the compiler.
+             # We find them by checking stderror.
+             cat >conftest.$ac_ext <<_ACEOF
+ int
+ main ()
+ {
+   return 0;
+ }
+ _ACEOF
+             rm -f conftest.$ac_objext conftest$ac_exeext
+             if test "`(eval $ac_link 2>&1 >/dev/null)`" = ""; then
+                 # we continue with more flags because Linux needs -lpthread
+                 # for libpq builds on PostgreSQL.  The test above only
+                 # tests for building binaries, not shared libraries.
+                 PTHREAD_LIBS=" $tryPTHREAD_LIBS $PTHREAD_LIBS"
+                 PTHREAD_CFLAGS="$PTHREAD_CFLAGS $tryPTHREAD_CFLAGS"
+             else   acx_pthread_ok=no
+             fi
+         fi
+ 
          LIBS="$save_LIBS"
          CFLAGS="$save_CFLAGS"
  
          AC_MSG_RESULT($acx_pthread_ok)
  done
  fi
  
---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]

Reply via email to