]> granicus.if.org Git - postgresql/commitdiff
Make NEED_REENTRANT_FUNC_NAMES _require_ *_r functions, and add tests to
authorBruce Momjian <bruce@momjian.us>
Sat, 16 Aug 2003 15:35:51 +0000 (15:35 +0000)
committerBruce Momjian <bruce@momjian.us>
Sat, 16 Aug 2003 15:35:51 +0000 (15:35 +0000)
configure to report if they are not found.

configure
configure.in
src/include/pg_config.h.in
src/port/thread.c
src/template/bsdi
src/template/freebsd
src/template/linux
src/template/netbsd
src/template/osf
src/template/unixware

index 2ba5879468ff6cb2ccd241a92c84a1fe1b25e5c9..662eaabc27a95c3ac27b484a6852b9ee5e8c6865 100755 (executable)
--- a/configure
+++ b/configure
@@ -13102,6 +13102,7 @@ fi
 #
 # For each platform, we need to know about any special compile and link
 # libraries, and whether the normal C function names are thread-safe.
+# See the comment at the top of src/port/thread.c for more information.
 #
 if test "$enable_thread_safety" = yes; then
 if test "${ac_cv_header_pthread_h+set}" = set; then
@@ -13208,8 +13209,8 @@ fi
 if test $ac_cv_header_pthread_h = yes; then
   :
 else
-  { { echo "$as_me:$LINENO: error: pthread.h not found, required for --with-threads" >&5
-echo "$as_me: error: pthread.h not found, required for --with-threads" >&2;}
+  { { echo "$as_me:$LINENO: error: pthread.h not found, required for --enable-thread-safetys" >&5
+echo "$as_me: error: pthread.h not found, required for --enable-thread-safetys" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
@@ -13221,12 +13222,14 @@ Cannot enable threads on your platform.
 Please report your platform threading info to the PostgreSQL mailing lists
 so it can be added to the next release.  Report all compile flags, link flags,
 functions, or libraries required for threading support.
+See the comment at the top of src/port/thread.c for more information.
 " >&5
 echo "$as_me: error:
 Cannot enable threads on your platform.
 Please report your platform threading info to the PostgreSQL mailing lists
 so it can be added to the next release.  Report all compile flags, link flags,
 functions, or libraries required for threading support.
+See the comment at the top of src/port/thread.c for more information.
 " >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -13254,22 +13257,88 @@ _CFLAGS="$CFLAGS"
 _LIBS="$LIBS"
 CFLAGS="$CFLAGS $THREAD_CFLAGS"
 LIBS="$LIBS $THREAD_LIBS"
+echo "$as_me:$LINENO: checking for strerror_r" >&5
+echo $ECHO_N "checking for strerror_r... $ECHO_C" >&6
+if test "${ac_cv_func_strerror_r+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char strerror_r (); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char strerror_r ();
+char (*f) ();
 
+#ifdef F77_DUMMY_MAIN
+#  ifdef __cplusplus
+     extern "C"
+#  endif
+   int F77_DUMMY_MAIN() { return 1; }
+#endif
+int
+main ()
+{
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_strerror_r) || defined (__stub___strerror_r)
+choke me
+#else
+f = strerror_r;
+#endif
 
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_strerror_r=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_func_strerror_r=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_strerror_r" >&5
+echo "${ECHO_T}$ac_cv_func_strerror_r" >&6
+if test $ac_cv_func_strerror_r = yes; then
+  :
+else
+  { { echo "$as_me:$LINENO: error: strerror_r not found, required on this platform for --enable-thread-safety" >&5
+echo "$as_me: error: strerror_r not found, required on this platform for --enable-thread-safety" >&2;}
+   { (exit 1); exit 1; }; }
+fi
 
-for ac_func in strerror_r getpwuid_r gethostbyname_r
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
+echo "$as_me:$LINENO: checking for getpwuid_r" >&5
+echo $ECHO_N "checking for getpwuid_r... $ECHO_C" >&6
+if test "${ac_cv_func_getpwuid_r+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
 #line $LINENO "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.  */
+    which can conflict with char getpwuid_r (); below.  */
 #include <assert.h>
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
@@ -13277,7 +13346,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char $ac_func ();
+char getpwuid_r ();
 char (*f) ();
 
 #ifdef F77_DUMMY_MAIN
@@ -13292,10 +13361,10 @@ main ()
 /* The GNU C library defines this for functions which it implements
     to always fail with ENOSYS.  Some functions are actually named
     something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+#if defined (__stub_getpwuid_r) || defined (__stub___getpwuid_r)
 choke me
 #else
-f = $ac_func;
+f = getpwuid_r;
 #endif
 
   ;
@@ -13314,23 +13383,95 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
+  ac_cv_func_getpwuid_r=yes
 else
   echo "$as_me: failed program was:" >&5
 cat conftest.$ac_ext >&5
-eval "$as_ac_var=no"
+ac_cv_func_getpwuid_r=no
 fi
 rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+echo "$as_me:$LINENO: result: $ac_cv_func_getpwuid_r" >&5
+echo "${ECHO_T}$ac_cv_func_getpwuid_r" >&6
+if test $ac_cv_func_getpwuid_r = yes; then
+  :
+else
+  { { echo "$as_me:$LINENO: error: getpwuid_r not found, required on this platform for --enable-thread-safety" >&5
+echo "$as_me: error: getpwuid_r not found, required on this platform for --enable-thread-safety" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+echo "$as_me:$LINENO: checking for gethostbyname_r" >&5
+echo $ECHO_N "checking for gethostbyname_r... $ECHO_C" >&6
+if test "${ac_cv_func_gethostbyname_r+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char gethostbyname_r (); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char gethostbyname_r ();
+char (*f) ();
+
+#ifdef F77_DUMMY_MAIN
+#  ifdef __cplusplus
+     extern "C"
+#  endif
+   int F77_DUMMY_MAIN() { return 1; }
+#endif
+int
+main ()
+{
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_gethostbyname_r) || defined (__stub___gethostbyname_r)
+choke me
+#else
+f = gethostbyname_r;
+#endif
 
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_gethostbyname_r=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_func_gethostbyname_r=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname_r" >&5
+echo "${ECHO_T}$ac_cv_func_gethostbyname_r" >&6
+if test $ac_cv_func_gethostbyname_r = yes; then
+  :
+else
+  { { echo "$as_me:$LINENO: error: gethostbyname_r not found, required on this platform for --enable-thread-safety" >&5
+echo "$as_me: error: gethostbyname_r not found, required on this platform for --enable-thread-safety" >&2;}
+   { (exit 1); exit 1; }; }
 fi
-done
 
 CFLAGS="$_CFLAGS"
 LIBS="$_LIBS"
index fcd50520b3f4de7feb01d9da5c1e346b660605da..58d84db9d05bf72fd0a2d3c1f15688e223066941 100644 (file)
@@ -1,5 +1,5 @@
 dnl Process this file with autoconf to produce a configure script.
-dnl $Header: /cvsroot/pgsql/configure.in,v 1.280 2003/08/11 18:07:38 tgl Exp $
+dnl $Header: /cvsroot/pgsql/configure.in,v 1.281 2003/08/16 15:35:51 momjian Exp $
 dnl
 dnl Developers, please strive to achieve this order:
 dnl
@@ -978,9 +978,10 @@ AC_FUNC_FSEEKO
 #
 # For each platform, we need to know about any special compile and link
 # libraries, and whether the normal C function names are thread-safe.
+# See the comment at the top of src/port/thread.c for more information.
 #
 if test "$enable_thread_safety" = yes; then
-AC_CHECK_HEADER(pthread.h, [], [AC_MSG_ERROR([pthread.h not found, required for --with-threads])])
+AC_CHECK_HEADER(pthread.h, [], [AC_MSG_ERROR([pthread.h not found, required for --enable-thread-safetys])])
 
 if test "$SUPPORTS_THREADS" != yes; then
 AC_MSG_ERROR([
@@ -988,6 +989,7 @@ Cannot enable threads on your platform.
 Please report your platform threading info to the PostgreSQL mailing lists
 so it can be added to the next release.  Report all compile flags, link flags,
 functions, or libraries required for threading support.
+See the comment at the top of src/port/thread.c for more information.
 ])
 fi
 else
@@ -1014,7 +1016,12 @@ _CFLAGS="$CFLAGS"
 _LIBS="$LIBS"
 CFLAGS="$CFLAGS $THREAD_CFLAGS"
 LIBS="$LIBS $THREAD_LIBS"
-AC_CHECK_FUNCS([strerror_r getpwuid_r gethostbyname_r])
+AC_CHECK_FUNC(strerror_r,
+       [], [AC_MSG_ERROR([strerror_r not found, required on this platform for --enable-thread-safety])])
+AC_CHECK_FUNC(getpwuid_r,
+       [], [AC_MSG_ERROR([getpwuid_r not found, required on this platform for --enable-thread-safety])])
+AC_CHECK_FUNC(gethostbyname_r,
+       [], [AC_MSG_ERROR([gethostbyname_r not found, required on this platform for --enable-thread-safety])])
 CFLAGS="$_CFLAGS"
 LIBS="$_LIBS"
 fi
index acb140b856bd0eeb20966c90e6213c9eb3c2d135..2aa62ea8dc5aeea71065c16971beda00876d5bcf 100644 (file)
 /* Define to 1 if you have the `getaddrinfo' function. */
 #undef HAVE_GETADDRINFO
 
-/* Define to 1 if you have the `gethostbyname_r' function. */
-#undef HAVE_GETHOSTBYNAME_R
-
 /* Define to 1 if you have the `gethostname' function. */
 #undef HAVE_GETHOSTNAME
 
 /* Define to 1 if you have the `getpeereid' function. */
 #undef HAVE_GETPEEREID
 
-/* Define to 1 if you have the `getpwuid_r' function. */
-#undef HAVE_GETPWUID_R
-
 /* Define to 1 if you have the `getrusage' function. */
 #undef HAVE_GETRUSAGE
 
 /* Define to 1 if you have the `strerror' function. */
 #undef HAVE_STRERROR
 
-/* Define to 1 if you have the `strerror_r' function. */
-#undef HAVE_STRERROR_R
-
 /* Define to 1 if cpp supports the ANSI # stringizing operator. */
 #undef HAVE_STRINGIZE
 
index df06f118c6f71960ecd9bac943fddcae5a93b354..80af433e4ac0735dc5c36a29b84f9cac4b535600 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  *
- * $Id: thread.c,v 1.3 2003/08/14 05:27:18 momjian Exp $
+ * $Id: thread.c,v 1.4 2003/08/16 15:35:51 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -49,7 +49,7 @@
 char *
 pqStrerror(int errnum, char *strerrbuf, size_t buflen)
 {
-#if defined(USE_THREADS) && defined(HAVE_STRERROR_R)
+#if defined(USE_THREADS) && defined(NEED_REENTRANT_FUNC_NAMES)
        /* reentrant strerror_r is available */
        /* some early standards had strerror_r returning char * */
        strerror_r(errnum, strerrbuf, buflen);
@@ -68,7 +68,7 @@ int
 pqGetpwuid(uid_t uid, struct passwd *resultbuf, char *buffer,
                   size_t buflen, struct passwd **result)
 {
-#if defined(USE_THREADS) && defined(HAVE_GETPWUID_R)
+#if defined(USE_THREADS) && defined(NEED_REENTRANT_FUNC_NAMES)
        /*
         * Early POSIX draft of getpwuid_r() returns 'struct passwd *'.
         *    getpwuid_r(uid, resultbuf, buffer, buflen)
@@ -94,8 +94,7 @@ pqGethostbyname(const char *name,
                                struct hostent **result,
                                int *herrno)
 {
-#if defined(USE_THREADS) && defined(HAVE_GETHOSTBYNAME_R)
-
+#if defined(USE_THREADS) && defined(NEED_REENTRANT_FUNC_NAMES)
        /*
         * broken (well early POSIX draft) gethostbyname_r() which returns
         * 'struct hostent *'
index ec73bc60d072fb2a7de00b17f995c7b5317811e0..ab6e92f2f1a11b8a2a1d28f14cd0d20fe38f10dd 100644 (file)
@@ -12,4 +12,3 @@ esac
 
 SUPPORTS_THREADS=yes
 NEED_REENTRANT_FUNC_NAMES=no
-
index f35b76a99930b4b841bb533a129e4f8e968b023c..e96e5c2fa5552cdfd79bd3460a1f6c1f0cb8db46 100644 (file)
@@ -5,13 +5,13 @@ case $host_cpu in
 esac
 
 SUPPORTS_THREADS=yes
+NEED_REENTRANT_FUNC_NAMES=no
+
 case $host_os in
                freebsd2*|freebsd3*|freebsd4*)
                        THREAD_CFLAGS="-pthread"
-                       NEED_REENTRANT_FUNC_NAMES=yes
                        ;;
                *)
                        THREAD_LIBS="-lc_r"
-                       NEED_REENTRANT_FUNC_NAMES=yes
                        ;;
 esac
index fc5c874d844d495f6befa06b9d98bdf59abd4d7c..070e260a27687f1afa295a7f8aa2b49bcdb3c236 100644 (file)
@@ -1,7 +1,7 @@
 CFLAGS=-O2
 
 SUPPORTS_THREADS=yes
+NEED_REENTRANT_FUNC_NAMES=yes
 THREAD_CFLAGS="-D_REENTRANT -D_THREAD_SAFE -D_POSIX_PTHREAD_SEMANTICS"
 THREAD_LIBS="-lpthread"
-NEED_REENTRANT_FUNC_NAMES=yes
 
index c18fccb9bea2e7f006d060bb205e76fecf83541f..9a3869dfe77044a7883d4e9c11c55de1c01b9d0b 100644 (file)
@@ -2,4 +2,3 @@ CFLAGS='-O2 -pipe'
 
 SUPPORTS_THREADS=yes
 NEED_REENTRANT_FUNC_NAMES=no
-
index 8a65f114c55d226120329d18dbdc0dbfbef56820..a930bf4e08ee111a686265328a741c98001ad248 100644 (file)
@@ -4,6 +4,7 @@ else
   CC="$CC -std"
   CFLAGS='-O4 -Olimit 2000'
 fi
+
 SUPPORTS_THREADS=yes
+NEED_REENTRANT_FUNC_NAMES=no
 THREAD_CFLAGS="-pthread"
-
index a948761596b04c3c424bd77952381047a0497407..d86e346d8d2c5334e3090d346e09cd9ff8510664 100644 (file)
@@ -10,5 +10,5 @@ else
 fi
 
 SUPPORTS_THREADS=yes
-THREAD_CFLAGS += -D_REENTRANT
 NEED_REENTRANT_FUNC_NAMES=yes
+THREAD_CFLAGS += -D_REENTRANT