From af49a1634f6e2b47c99580317a6af8365839946a Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Tue, 21 Feb 2006 06:06:50 +0000 Subject: [PATCH] Adjust probe for getaddrinfo to cope with macro-ized definitions, such as Tru64's. Per previous discussion. --- configure | 92 ++++++++++---------------------------- configure.in | 16 +++++-- src/include/pg_config.h.in | 32 +------------ 3 files changed, 37 insertions(+), 103 deletions(-) diff --git a/configure b/configure index 1ec47c47d8..1dcb41871f 100755 --- a/configure +++ b/configure @@ -14160,66 +14160,26 @@ done # System's version of getaddrinfo(), if any, may be used only if we found # a definition for struct addrinfo; see notes in src/include/getaddrinfo.h. -# (Note: the AC_REPLACE_FUNCS probe fails on Windows, where the available +# (Note: the AC_TRY_LINK probe fails on Windows, where the available # versions of getaddrinfo don't follow normal C call protocol. This is OK # because we want to use our own getaddrinfo.c on Windows anyway.) if test x"$ac_cv_type_struct_addrinfo" = xyes ; then - -for ac_func in getaddrinfo -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 $ECHO_N "(cached) $ECHO_C" >&6 -else + echo "$as_me:$LINENO: checking for getaddrinfo" >&5 +echo $ECHO_N "checking for getaddrinfo... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* 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 $ac_func (); -/* 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) -choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} -#endif +#include +#include int main () { -return f != $ac_func; +return getaddrinfo("", "", NULL, NULL) ? 0 : 1; ; return 0; } @@ -14246,36 +14206,30 @@ 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" + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETADDRINFO 1 +_ACEOF + + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.err 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 - -else - case $LIBOBJS in - "$ac_func.$ac_objext" | \ - *" $ac_func.$ac_objext" | \ - "$ac_func.$ac_objext "* | \ - *" $ac_func.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" ;; +echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + case $LIBOBJS in + "getaddrinfo.$ac_objext" | \ + *" getaddrinfo.$ac_objext" | \ + "getaddrinfo.$ac_objext "* | \ + *" getaddrinfo.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS getaddrinfo.$ac_objext" ;; esac fi -done - - +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext else case $LIBOBJS in "getaddrinfo.$ac_objext" | \ diff --git a/configure.in b/configure.in index 9322de8cdd..b41a5c8678 100644 --- a/configure.in +++ b/configure.in @@ -1,5 +1,5 @@ dnl Process this file with autoconf to produce a configure script. -dnl $PostgreSQL: pgsql/configure.in,v 1.449 2006/02/15 17:23:10 tgl Exp $ +dnl $PostgreSQL: pgsql/configure.in,v 1.450 2006/02/21 06:06:50 tgl Exp $ dnl dnl Developers, please strive to achieve this order: dnl @@ -902,11 +902,21 @@ AC_REPLACE_FUNCS([crypt fseeko getopt getrusage inet_aton random rint srandom st # System's version of getaddrinfo(), if any, may be used only if we found # a definition for struct addrinfo; see notes in src/include/getaddrinfo.h. -# (Note: the AC_REPLACE_FUNCS probe fails on Windows, where the available +# (Note: the AC_TRY_LINK probe fails on Windows, where the available # versions of getaddrinfo don't follow normal C call protocol. This is OK # because we want to use our own getaddrinfo.c on Windows anyway.) if test x"$ac_cv_type_struct_addrinfo" = xyes ; then - AC_REPLACE_FUNCS([getaddrinfo]) + dnl Cannot use AC_CHECK_FUNC because getaddrinfo may be a macro + AC_MSG_CHECKING(for getaddrinfo) + AC_TRY_LINK([ +#include +#include +], + [return getaddrinfo("", "", NULL, NULL) ? 0 : 1;], + [AC_DEFINE(HAVE_GETADDRINFO, 1, [Define to 1 if you have getaddrinfo().]) + AC_MSG_RESULT(yes)], + [AC_MSG_RESULT(no) + AC_LIBOBJ(getaddrinfo)]) else AC_LIBOBJ(getaddrinfo) fi diff --git a/src/include/pg_config.h.in b/src/include/pg_config.h.in index 12cc33b44a..8c5a69a85b 100644 --- a/src/include/pg_config.h.in +++ b/src/include/pg_config.h.in @@ -129,7 +129,7 @@ /* Define to 1 if your compiler understands __FUNCTION__. */ #undef HAVE_FUNCNAME__FUNCTION -/* Define to 1 if you have the `getaddrinfo' function. */ +/* Define to 1 if you have getaddrinfo(). */ #undef HAVE_GETADDRINFO /* Define to 1 if you have the `gethostbyname_r' function. */ @@ -204,54 +204,24 @@ /* Define to 1 if you have the header file. */ #undef HAVE_LANGINFO_H -/* Define to 1 if you have the `BSD' library (-lBSD). */ -#undef HAVE_LIBBSD - -/* Define to 1 if you have the `compat' library (-lcompat). */ -#undef HAVE_LIBCOMPAT - /* Define to 1 if you have the `crypto' library (-lcrypto). */ #undef HAVE_LIBCRYPTO /* Define to 1 if you have the `eay32' library (-leay32). */ #undef HAVE_LIBEAY32 -/* Define to 1 if you have the `gen' library (-lgen). */ -#undef HAVE_LIBGEN - -/* Define to 1 if you have the `IPC' library (-lIPC). */ -#undef HAVE_LIBIPC - -/* Define to 1 if you have the `lc' library (-llc). */ -#undef HAVE_LIBLC - -/* Define to 1 if you have the `ld' library (-lld). */ -#undef HAVE_LIBLD - -/* Define to 1 if you have the `nsl' library (-lnsl). */ -#undef HAVE_LIBNSL - /* Define to 1 if you have the `pam' library (-lpam). */ #undef HAVE_LIBPAM -/* Define to 1 if you have the `PW' library (-lPW). */ -#undef HAVE_LIBPW - /* Define if you have a function readline library */ #undef HAVE_LIBREADLINE -/* Define to 1 if you have the `resolv' library (-lresolv). */ -#undef HAVE_LIBRESOLV - /* Define to 1 if you have the `ssl' library (-lssl). */ #undef HAVE_LIBSSL /* Define to 1 if you have the `ssleay32' library (-lssleay32). */ #undef HAVE_LIBSSLEAY32 -/* Define to 1 if you have the `unix' library (-lunix). */ -#undef HAVE_LIBUNIX - /* Define to 1 if you have the `z' library (-lz). */ #undef HAVE_LIBZ