Another step towards detecting if _REENTRANT is already defined or actually

needed, and being able to define it if appropriate for further configure tests
as well as for the generated config file.

Introduced reentrant.m4 intended for our reentrant related autotools/m4 macros.
pull/1/head
Yang Tse 17 years ago
parent e4113d5786
commit df6373a9e6
  1. 2
      Makefile.am
  2. 25
      acinclude.m4
  3. 1
      buildconf
  4. 2
      configure.ac
  5. 846
      reentrant.m4

@ -1,3 +1,5 @@
ACLOCAL_AMFLAGS = -I .
AUTOMAKE_OPTIONS = foreign
lib_LTLIBRARIES = libcares.la

@ -88,31 +88,6 @@ CURL_DEF_TOKEN $1
])
dnl CONFIGURE_WITH_REENTRANT
dnl -------------------------------------------------
dnl This macro ensures that configuration tests done
dnl after this will execute with preprocessor symbol
dnl _REENTRANT defined. This macro also ensures that
dnl the generated config file will equally define it.
AC_DEFUN([CONFIGURE_WITH_REENTRANT], [
AC_BEFORE([$0], [AC_PREPROC_IFELSE])dnl
AC_BEFORE([$0], [AC_COMPILE_IFELSE])dnl
AC_BEFORE([$0], [AC_LINK_IFELSE])dnl
AC_BEFORE([$0], [AC_RUN_IFELSE])dnl
AH_VERBATIM([_REENTRANT],
[/* Define _REENTRANT if not already defined */
@%:@ifndef _REENTRANT
@%:@ define _REENTRANT
@%:@endif])
cat >>confdefs.h <<_ACEOF
[@%:@ifndef _REENTRANT
@%:@ define _REENTRANT
@%:@endif]
_ACEOF
])
dnl CURL_CHECK_HEADER_WINDOWS
dnl -------------------------------------------------
dnl Check for compilable and valid windows.h header

@ -1,6 +1,7 @@
#!/bin/sh
${LIBTOOLIZE:-libtoolize} --copy --automake --force
ACLOCAL_FLAGS="-I . $ACLOCAL_FLAGS"
${ACLOCAL:-aclocal} $ACLOCAL_FLAGS
${AUTOHEADER:-autoheader}
${AUTOCONF:-autoconf}

@ -76,7 +76,7 @@ AM_PROG_CC_C_O
AC_PROG_INSTALL
dnl Our configure and build reentrant settings
CONFIGURE_WITH_REENTRANT
CONFIGURE_REENTRANT
dnl check for how to do large files
AC_SYS_LARGEFILE

@ -0,0 +1,846 @@
dnl CHECK_NEED_REENTRANT_STRERROR_R
dnl -------------------------------------------------
dnl Checks if the preprocessor _REENTRANT definition
dnl makes function strerror_r compiler visible.
AC_DEFUN([CHECK_NEED_REENTRANT_STRERROR_R], [
#
AC_MSG_NOTICE([DEBUG:])
AC_MSG_NOTICE([DEBUG:])
AC_LINK_IFELSE([
AC_LANG_FUNC_LINK_TRY([strerror_r])
],[
AC_MSG_NOTICE([DEBUG: strerror_r links... yes])
tmp_strerror_r="yes"
],[
AC_MSG_NOTICE([DEBUG: strerror_r links... no])
tmp_strerror_r="no"
])
#
if test "$tmp_strerror_r" = "yes"; then
AC_EGREP_CPP([strerror_r],[
#include <sys/types.h>
#include <string.h>
],[
AC_MSG_NOTICE([DEBUG: strerror_r proto... without our definition])
tmp_strerror_r="proto_wout_def"
],[
AC_EGREP_CPP([strerror_r],[
#define _REENTRANT
#include <sys/types.h>
#include <string.h>
],[
AC_MSG_NOTICE([DEBUG: strerror_r proto... with our _reentrant])
tmp_strerror_r="proto_with_def"
],[
AC_MSG_NOTICE([DEBUG: strerror_r proto... not found])
])
])
fi
#
if test "$tmp_strerror_r" = "proto_wout_def"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#include <sys/types.h>
#include <string.h>
]],[[
strerror_r(0, 0, 0);
]])
],[
AC_MSG_NOTICE([DEBUG: strerror_r proto wout finds... 3 args])
tmp_strerror_r="done"
])
fi
#
if test "$tmp_strerror_r" = "proto_with_def"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#define _REENTRANT
#include <sys/types.h>
#include <string.h>
]],[[
strerror_r(0, 0, 0);
]])
],[
AC_MSG_NOTICE([DEBUG: strerror_r proto with finds... 3 args])
tmp_strerror_r="needs_reentrant"
])
fi
#
if test "$tmp_strerror_r" = "needs_reentrant"; then
ac_cv_need_reentrant="yes"
fi
])
dnl CHECK_NEED_REENTRANT_LOCALTIME_R
dnl -------------------------------------------------
dnl Checks if the preprocessor _REENTRANT definition
dnl makes function localtime_r compiler visible.
AC_DEFUN([CHECK_NEED_REENTRANT_LOCALTIME_R], [
#
AC_MSG_NOTICE([DEBUG:])
AC_LINK_IFELSE([
AC_LANG_FUNC_LINK_TRY([localtime_r])
],[
AC_MSG_NOTICE([DEBUG: localtime_r links... yes])
tmp_localtime_r="yes"
],[
AC_MSG_NOTICE([DEBUG: localtime_r links... no])
tmp_localtime_r="no"
])
#
if test "$tmp_localtime_r" = "yes"; then
AC_EGREP_CPP([localtime_r],[
#include <sys/types.h>
#include <time.h>
],[
AC_MSG_NOTICE([DEBUG: localtime_r proto... without our definition])
tmp_localtime_r="proto_wout_def"
],[
AC_EGREP_CPP([localtime_r],[
#define _REENTRANT
#include <sys/types.h>
#include <time.h>
],[
AC_MSG_NOTICE([DEBUG: localtime_r proto... with our _reentrant])
tmp_localtime_r="proto_with_def"
],[
AC_MSG_NOTICE([DEBUG: localtime_r proto... not found])
])
])
fi
#
if test "$tmp_localtime_r" = "proto_wout_def"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#include <sys/types.h>
#include <time.h>
]],[[
localtime_r(0, 0);
]])
],[
AC_MSG_NOTICE([DEBUG: localtime_r proto wout finds... 2 args])
tmp_localtime_r="done"
])
fi
#
if test "$tmp_localtime_r" = "proto_with_def"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#define _REENTRANT
#include <sys/types.h>
#include <time.h>
]],[[
localtime_r(0, 0);
]])
],[
AC_MSG_NOTICE([DEBUG: localtime_r proto with finds... 2 args])
tmp_localtime_r="needs_reentrant"
])
fi
#
if test "$tmp_localtime_r" = "needs_reentrant"; then
ac_cv_need_reentrant="yes"
fi
])
dnl CHECK_NEED_REENTRANT_GMTIME_R
dnl -------------------------------------------------
dnl Checks if the preprocessor _REENTRANT definition
dnl makes function gmtime_r compiler visible.
AC_DEFUN([CHECK_NEED_REENTRANT_GMTIME_R], [
#
AC_MSG_NOTICE([DEBUG:])
AC_LINK_IFELSE([
AC_LANG_FUNC_LINK_TRY([gmtime_r])
],[
AC_MSG_NOTICE([DEBUG: gmtime_r links... yes])
tmp_gmtime_r="yes"
],[
AC_MSG_NOTICE([DEBUG: gmtime_r links... no])
tmp_gmtime_r="no"
])
#
if test "$tmp_gmtime_r" = "yes"; then
AC_EGREP_CPP([gmtime_r],[
#include <sys/types.h>
#include <time.h>
],[
AC_MSG_NOTICE([DEBUG: gmtime_r proto... without our definition])
tmp_gmtime_r="proto_wout_def"
],[
AC_EGREP_CPP([gmtime_r],[
#define _REENTRANT
#include <sys/types.h>
#include <time.h>
],[
AC_MSG_NOTICE([DEBUG: gmtime_r proto... with our _reentrant])
tmp_gmtime_r="proto_with_def"
],[
AC_MSG_NOTICE([DEBUG: gmtime_r proto... not found])
])
])
fi
#
if test "$tmp_gmtime_r" = "proto_wout_def"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#include <sys/types.h>
#include <time.h>
]],[[
gmtime_r(0, 0);
]])
],[
AC_MSG_NOTICE([DEBUG: gmtime_r proto wout finds... 2 args])
tmp_gmtime_r="done"
])
fi
#
if test "$tmp_gmtime_r" = "proto_with_def"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#define _REENTRANT
#include <sys/types.h>
#include <time.h>
]],[[
gmtime_r(0, 0);
]])
],[
AC_MSG_NOTICE([DEBUG: gmtime_r proto with finds... 2 args])
tmp_gmtime_r="needs_reentrant"
])
fi
#
if test "$tmp_gmtime_r" = "needs_reentrant"; then
ac_cv_need_reentrant="yes"
fi
])
dnl CHECK_NEED_REENTRANT_INET_NTOA_R
dnl -------------------------------------------------
dnl Checks if the preprocessor _REENTRANT definition
dnl makes function inet_ntoa_r compiler visible.
AC_DEFUN([CHECK_NEED_REENTRANT_INET_NTOA_R], [
#
AC_MSG_NOTICE([DEBUG:])
AC_LINK_IFELSE([
AC_LANG_FUNC_LINK_TRY([inet_ntoa_r])
],[
AC_MSG_NOTICE([DEBUG: inet_ntoa_r links... yes])
tmp_inet_ntoa_r="yes"
],[
AC_MSG_NOTICE([DEBUG: inet_ntoa_r links... no])
tmp_inet_ntoa_r="no"
])
#
if test "$tmp_inet_ntoa_r" = "yes"; then
AC_EGREP_CPP([inet_ntoa_r],[
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
],[
AC_MSG_NOTICE([DEBUG: inet_ntoa_r proto... without our definition])
tmp_inet_ntoa_r="proto_wout_def"
],[
AC_EGREP_CPP([inet_ntoa_r],[
#define _REENTRANT
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
],[
AC_MSG_NOTICE([DEBUG: inet_ntoa_r proto... with our _reentrant])
tmp_inet_ntoa_r="proto_with_def"
],[
AC_MSG_NOTICE([DEBUG: inet_ntoa_r proto... not found])
])
])
fi
#
if test "$tmp_inet_ntoa_r" = "proto_wout_def"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
]],[[
struct in_addr addr;
inet_ntoa_r(addr, 0);
]])
],[
AC_MSG_NOTICE([DEBUG: inet_ntoa_r proto wout finds... 2 args])
tmp_inet_ntoa_r="done"
])
fi
if test "$tmp_inet_ntoa_r" = "proto_wout_def"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
]],[[
struct in_addr addr;
inet_ntoa_r(addr, 0, 0);
]])
],[
AC_MSG_NOTICE([DEBUG: inet_ntoa_r proto wout finds... 3 args])
tmp_inet_ntoa_r="done"
])
fi
#
if test "$tmp_inet_ntoa_r" = "proto_with_def"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#define _REENTRANT
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
]],[[
struct in_addr addr;
inet_ntoa_r(addr, 0);
]])
],[
AC_MSG_NOTICE([DEBUG: inet_ntoa_r proto with finds... 2 args])
tmp_inet_ntoa_r="needs_reentrant"
])
fi
if test "$tmp_inet_ntoa_r" = "proto_with_def"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#define _REENTRANT
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
]],[[
struct in_addr addr;
inet_ntoa_r(addr, 0, 0);
]])
],[
AC_MSG_NOTICE([DEBUG: inet_ntoa_r proto with finds... 3 args])
tmp_inet_ntoa_r="needs_reentrant"
])
fi
#
if test "$tmp_inet_ntoa_r" = "needs_reentrant"; then
ac_cv_need_reentrant="yes"
fi
])
dnl CHECK_NEED_REENTRANT_GETHOSTBYADDR_R
dnl -------------------------------------------------
dnl Checks if the preprocessor _REENTRANT definition
dnl makes function gethostbyaddr_r compiler visible.
AC_DEFUN([CHECK_NEED_REENTRANT_GETHOSTBYADDR_R], [
#
AC_MSG_NOTICE([DEBUG:])
AC_LINK_IFELSE([
AC_LANG_FUNC_LINK_TRY([gethostbyaddr_r])
],[
AC_MSG_NOTICE([DEBUG: gethostbyaddr_r links... yes])
tmp_gethostbyaddr_r="yes"
],[
AC_MSG_NOTICE([DEBUG: gethostbyaddr_r links... no])
tmp_gethostbyaddr_r="no"
])
#
if test "$tmp_gethostbyaddr_r" = "yes"; then
AC_EGREP_CPP([gethostbyaddr_r],[
#include <sys/types.h>
#include <netdb.h>
],[
AC_MSG_NOTICE([DEBUG: gethostbyaddr_r proto... without our definition])
tmp_gethostbyaddr_r="proto_wout_def"
],[
AC_EGREP_CPP([gethostbyaddr_r],[
#define _REENTRANT
#include <sys/types.h>
#include <netdb.h>
],[
AC_MSG_NOTICE([DEBUG: gethostbyaddr_r proto... with our _reentrant])
tmp_gethostbyaddr_r="proto_with_def"
],[
AC_MSG_NOTICE([DEBUG: gethostbyaddr_r proto... not found])
])
])
fi
#
if test "$tmp_gethostbyaddr_r" = "proto_wout_def"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#include <sys/types.h>
#include <netdb.h>
]],[[
gethostbyaddr_r(0, 0, 0, 0, 0);
]])
],[
AC_MSG_NOTICE([DEBUG: gethostbyaddr_r proto wout finds... 5 args])
tmp_gethostbyaddr_r="done"
])
fi
if test "$tmp_gethostbyaddr_r" = "proto_wout_def"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#include <sys/types.h>
#include <netdb.h>
]],[[
gethostbyaddr_r(0, 0, 0, 0, 0, 0, 0);
]])
],[
AC_MSG_NOTICE([DEBUG: gethostbyaddr_r proto wout finds... 7 args])
tmp_gethostbyaddr_r="done"
])
fi
if test "$tmp_gethostbyaddr_r" = "proto_wout_def"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#include <sys/types.h>
#include <netdb.h>
]],[[
gethostbyaddr_r(0, 0, 0, 0, 0, 0, 0, 0);
]])
],[
AC_MSG_NOTICE([DEBUG: gethostbyaddr_r proto wout finds... 8 args])
tmp_gethostbyaddr_r="done"
])
fi
#
if test "$tmp_gethostbyaddr_r" = "proto_with_def"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#define _REENTRANT
#include <sys/types.h>
#include <netdb.h>
]],[[
gethostbyaddr_r(0, 0, 0, 0, 0);
]])
],[
AC_MSG_NOTICE([DEBUG: gethostbyaddr_r proto with finds... 5 args])
tmp_gethostbyaddr_r="needs_reentrant"
])
fi
if test "$tmp_gethostbyaddr_r" = "proto_with_def"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#define _REENTRANT
#include <sys/types.h>
#include <netdb.h>
]],[[
gethostbyaddr_r(0, 0, 0, 0, 0, 0, 0);
]])
],[
AC_MSG_NOTICE([DEBUG: gethostbyaddr_r proto with finds... 7 args])
tmp_gethostbyaddr_r="needs_reentrant"
])
fi
if test "$tmp_gethostbyaddr_r" = "proto_with_def"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#define _REENTRANT
#include <sys/types.h>
#include <netdb.h>
]],[[
gethostbyaddr_r(0, 0, 0, 0, 0, 0, 0, 0);
]])
],[
AC_MSG_NOTICE([DEBUG: gethostbyaddr_r proto with finds... 8 args])
tmp_gethostbyaddr_r="needs_reentrant"
])
fi
#
if test "$tmp_gethostbyaddr_r" = "needs_reentrant"; then
ac_cv_need_reentrant="yes"
fi
])
dnl CHECK_NEED_REENTRANT_GETHOSTBYNAME_R
dnl -------------------------------------------------
dnl Checks if the preprocessor _REENTRANT definition
dnl makes function gethostbyname_r compiler visible.
AC_DEFUN([CHECK_NEED_REENTRANT_GETHOSTBYNAME_R], [
#
AC_MSG_NOTICE([DEBUG:])
AC_LINK_IFELSE([
AC_LANG_FUNC_LINK_TRY([gethostbyname_r])
],[
AC_MSG_NOTICE([DEBUG: gethostbyname_r links... yes])
tmp_gethostbyname_r="yes"
],[
AC_MSG_NOTICE([DEBUG: gethostbyname_r links... no])
tmp_gethostbyname_r="no"
])
#
if test "$tmp_gethostbyname_r" = "yes"; then
AC_EGREP_CPP([gethostbyname_r],[
#include <sys/types.h>
#include <netdb.h>
],[
AC_MSG_NOTICE([DEBUG: gethostbyname_r proto... without our definition])
tmp_gethostbyname_r="proto_wout_def"
],[
AC_EGREP_CPP([gethostbyname_r],[
#define _REENTRANT
#include <sys/types.h>
#include <netdb.h>
],[
AC_MSG_NOTICE([DEBUG: gethostbyname_r proto... with our _reentrant])
tmp_gethostbyname_r="proto_with_def"
],[
AC_MSG_NOTICE([DEBUG: gethostbyname_r proto... not found])
])
])
fi
#
if test "$tmp_gethostbyname_r" = "proto_wout_def"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#include <sys/types.h>
#include <netdb.h>
]],[[
gethostbyname_r(0, 0, 0);
]])
],[
AC_MSG_NOTICE([DEBUG: gethostbyname_r proto wout finds... 3 args])
tmp_gethostbyname_r="done"
])
fi
if test "$tmp_gethostbyname_r" = "proto_wout_def"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#include <sys/types.h>
#include <netdb.h>
]],[[
gethostbyname_r(0, 0, 0, 0, 0);
]])
],[
AC_MSG_NOTICE([DEBUG: gethostbyname_r proto wout finds... 5 args])
tmp_gethostbyname_r="done"
])
fi
if test "$tmp_gethostbyname_r" = "proto_wout_def"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#include <sys/types.h>
#include <netdb.h>
]],[[
gethostbyname_r(0, 0, 0, 0, 0, 0);
]])
],[
AC_MSG_NOTICE([DEBUG: gethostbyname_r proto wout finds... 6 args])
tmp_gethostbyname_r="done"
])
fi
#
if test "$tmp_gethostbyname_r" = "proto_with_def"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#define _REENTRANT
#include <sys/types.h>
#include <netdb.h>
]],[[
gethostbyname_r(0, 0, 0);
]])
],[
AC_MSG_NOTICE([DEBUG: gethostbyname_r proto with finds... 3 args])
tmp_gethostbyname_r="needs_reentrant"
])
fi
if test "$tmp_gethostbyname_r" = "proto_with_def"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#define _REENTRANT
#include <sys/types.h>
#include <netdb.h>
]],[[
gethostbyname_r(0, 0, 0, 0, 0);
]])
],[
AC_MSG_NOTICE([DEBUG: gethostbyname_r proto with finds... 5 args])
tmp_gethostbyname_r="needs_reentrant"
])
fi
if test "$tmp_gethostbyname_r" = "proto_with_def"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#define _REENTRANT
#include <sys/types.h>
#include <netdb.h>
]],[[
gethostbyname_r(0, 0, 0, 0, 0, 0);
]])
],[
AC_MSG_NOTICE([DEBUG: gethostbyname_r proto with finds... 6 args])
tmp_gethostbyname_r="needs_reentrant"
])
fi
#
if test "$tmp_gethostbyname_r" = "needs_reentrant"; then
ac_cv_need_reentrant="yes"
fi
])
dnl CHECK_NEED_REENTRANT_GETSERVBYPORT_R
dnl -------------------------------------------------
dnl Checks if the preprocessor _REENTRANT definition
dnl makes function getservbyport_r compiler visible.
AC_DEFUN([CHECK_NEED_REENTRANT_GETSERVBYPORT_R], [
#
AC_MSG_NOTICE([DEBUG:])
AC_LINK_IFELSE([
AC_LANG_FUNC_LINK_TRY([getservbyport_r])
],[
AC_MSG_NOTICE([DEBUG: getservbyport_r links... yes])
tmp_getservbyport_r="yes"
],[
AC_MSG_NOTICE([DEBUG: getservbyport_r links... no])
tmp_getservbyport_r="no"
])
#
if test "$tmp_getservbyport_r" = "yes"; then
AC_EGREP_CPP([getservbyport_r],[
#include <sys/types.h>
#include <netdb.h>
],[
AC_MSG_NOTICE([DEBUG: getservbyport_r proto... without our definition])
tmp_getservbyport_r="proto_wout_def"
],[
AC_EGREP_CPP([getservbyport_r],[
#define _REENTRANT
#include <sys/types.h>
#include <netdb.h>
],[
AC_MSG_NOTICE([DEBUG: getservbyport_r proto... with our _reentrant])
tmp_getservbyport_r="proto_with_def"
],[
AC_MSG_NOTICE([DEBUG: getservbyport_r proto... not found])
])
])
fi
#
if test "$tmp_getservbyport_r" = "proto_wout_def"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#include <sys/types.h>
#include <netdb.h>
]],[[
getservbyport_r(0, 0, 0, 0);
]])
],[
AC_MSG_NOTICE([DEBUG: getservbyport_r proto wout finds... 4 args])
tmp_getservbyport_r="done"
])
fi
if test "$tmp_getservbyport_r" = "proto_wout_def"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#include <sys/types.h>
#include <netdb.h>
]],[[
getservbyport_r(0, 0, 0, 0, 0);
]])
],[
AC_MSG_NOTICE([DEBUG: getservbyport_r proto wout finds... 5 args])
tmp_getservbyport_r="done"
])
fi
if test "$tmp_getservbyport_r" = "proto_wout_def"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#include <sys/types.h>
#include <netdb.h>
]],[[
getservbyport_r(0, 0, 0, 0, 0, 0);
]])
],[
AC_MSG_NOTICE([DEBUG: getservbyport_r proto wout finds... 6 args])
tmp_getservbyport_r="done"
])
fi
#
if test "$tmp_getservbyport_r" = "proto_with_def"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#define _REENTRANT
#include <sys/types.h>
#include <netdb.h>
]],[[
getservbyport_r(0, 0, 0, 0);
]])
],[
AC_MSG_NOTICE([DEBUG: getservbyport_r proto with finds... 4 args])
tmp_getservbyport_r="needs_reentrant"
])
fi
if test "$tmp_getservbyport_r" = "proto_with_def"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#define _REENTRANT
#include <sys/types.h>
#include <netdb.h>
]],[[
getservbyport_r(0, 0, 0, 0, 0);
]])
],[
AC_MSG_NOTICE([DEBUG: getservbyport_r proto with finds... 5 args])
tmp_getservbyport_r="needs_reentrant"
])
fi
if test "$tmp_getservbyport_r" = "proto_with_def"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#define _REENTRANT
#include <sys/types.h>
#include <netdb.h>
]],[[
getservbyport_r(0, 0, 0, 0, 0, 0);
]])
],[
AC_MSG_NOTICE([DEBUG: getservbyport_r proto with finds... 6 args])
tmp_getservbyport_r="needs_reentrant"
])
fi
#
if test "$tmp_getservbyport_r" = "needs_reentrant"; then
ac_cv_need_reentrant="yes"
fi
])
dnl CHECK_NEED_REENTRANT_FUNCTIONS_R
dnl -------------------------------------------------
dnl Checks if the preprocessor _REENTRANT definition
dnl makes several _r functions compiler visible.
dnl Internal macro for CONFIGURE_REENTRANT.
AC_DEFUN([CHECK_NEED_REENTRANT_FUNCTIONS_R], [
if test "$ac_cv_need_reentrant" = "no"; then
CHECK_NEED_REENTRANT_STRERROR_R
fi
if test "$ac_cv_need_reentrant" = "no"; then
CHECK_NEED_REENTRANT_LOCALTIME_R
fi
if test "$ac_cv_need_reentrant" = "no"; then
CHECK_NEED_REENTRANT_GMTIME_R
fi
if test "$ac_cv_need_reentrant" = "no"; then
CHECK_NEED_REENTRANT_INET_NTOA_R
fi
if test "$ac_cv_need_reentrant" = "no"; then
CHECK_NEED_REENTRANT_GETHOSTBYADDR_R
fi
if test "$ac_cv_need_reentrant" = "no"; then
CHECK_NEED_REENTRANT_GETHOSTBYNAME_R
fi
if test "$ac_cv_need_reentrant" = "no"; then
CHECK_NEED_REENTRANT_GETSERVBYPORT_R
fi
])
AC_DEFUN([CHECK_NEED_REENTRANT_FUNCTIONS_R_DEBUG], [
CHECK_NEED_REENTRANT_STRERROR_R
CHECK_NEED_REENTRANT_LOCALTIME_R
CHECK_NEED_REENTRANT_GMTIME_R
CHECK_NEED_REENTRANT_INET_NTOA_R
CHECK_NEED_REENTRANT_GETHOSTBYADDR_R
CHECK_NEED_REENTRANT_GETHOSTBYNAME_R
CHECK_NEED_REENTRANT_GETSERVBYPORT_R
])
dnl CONFIGURE_FROM_NOW_ON_WITH_REENTRANT
dnl -------------------------------------------------
dnl This macro ensures that configuration tests done
dnl after this will execute with preprocessor symbol
dnl _REENTRANT defined. This macro also ensures that
dnl the generated config file will equally define it.
dnl Internal macro for CONFIGURE_REENTRANT.
AC_DEFUN([CONFIGURE_FROM_NOW_ON_WITH_REENTRANT], [
AH_VERBATIM([NEED_REENTRANT],
[/* Configure process defines NEED_REENTRANT to 1 when it finds out that */
/* _REENTRANT is required or already defined for proper configuration. */
@%:@undef NEED_REENTRANT
@%:@if defined(NEED_REENTRANT) && !defined(_REENTRANT)
@%:@ define _REENTRANT
@%:@endif])
cat >>confdefs.h <<_ACEOF
[@%:@ifndef _REENTRANT
@%:@ define _REENTRANT
@%:@endif]
_ACEOF
AC_DEFINE(NEED_REENTRANT, 1, [])
])
dnl CONFIGURE_REENTRANT
dnl -------------------------------------------------
dnl This first checks if the preprocessor _REENTRANT
dnl symbol is already defined. If it isn't currently
dnl defined a set of checks are performed to verify
dnl if its definition is required to make visible to
dnl the compiler a set of *_r functions. Finally, if
dnl _REENTRANT is already defined or needed it takes
dnl care of making adjustments necessary to ensure
dnl that it is defined equally for further configure
dnl tests and generated config file.
AC_DEFUN([CONFIGURE_REENTRANT], [
#
AC_MSG_CHECKING([if _REENTRANT is already defined])
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
]],[[
#ifdef _REENTRANT
int dummy=1;
#else
force compilation error
#endif
]])
],[
AC_MSG_RESULT([yes])
tmp_reentrant_initially_defined="yes"
],[
AC_MSG_RESULT([no])
tmp_reentrant_initially_defined="no"
])
#
if test "$tmp_reentrant_initially_defined" = "no"; then
AC_MSG_CHECKING([if _REENTRANT is actually needed])
ac_cv_need_reentrant="no"
CHECK_NEED_REENTRANT_FUNCTIONS_R_DEBUG
if test "$ac_cv_need_reentrant" = "yes"; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
fi
#
AC_MSG_CHECKING([if _REENTRANT is onwards defined])
if test "$tmp_reentrant_initially_defined" = "yes" ||
test "$ac_cv_need_reentrant" = "yes"; then
CONFIGURE_FROM_NOW_ON_WITH_REENTRANT
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
#
])
Loading…
Cancel
Save