diff options
Diffstat (limited to 'ares')
-rw-r--r-- | ares/Makefile.am | 2 | ||||
-rw-r--r-- | ares/acinclude.m4 | 25 | ||||
-rwxr-xr-x | ares/buildconf | 1 | ||||
-rw-r--r-- | ares/configure.ac | 2 | ||||
-rw-r--r-- | ares/reentrant.m4 | 846 |
5 files changed, 850 insertions, 26 deletions
diff --git a/ares/Makefile.am b/ares/Makefile.am index a9433abdb..b265703d0 100644 --- a/ares/Makefile.am +++ b/ares/Makefile.am @@ -1,3 +1,5 @@ +ACLOCAL_AMFLAGS = -I . + AUTOMAKE_OPTIONS = foreign lib_LTLIBRARIES = libcares.la diff --git a/ares/acinclude.m4 b/ares/acinclude.m4 index da8366977..fb3005020 100644 --- a/ares/acinclude.m4 +++ b/ares/acinclude.m4 @@ -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 diff --git a/ares/buildconf b/ares/buildconf index 364d5a06e..ed3f81d1e 100755 --- a/ares/buildconf +++ b/ares/buildconf @@ -1,6 +1,7 @@ #!/bin/sh ${LIBTOOLIZE:-libtoolize} --copy --automake --force +ACLOCAL_FLAGS="-I . $ACLOCAL_FLAGS" ${ACLOCAL:-aclocal} $ACLOCAL_FLAGS ${AUTOHEADER:-autoheader} ${AUTOCONF:-autoconf} diff --git a/ares/configure.ac b/ares/configure.ac index 2266b1480..705fa2775 100644 --- a/ares/configure.ac +++ b/ares/configure.ac @@ -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 diff --git a/ares/reentrant.m4 b/ares/reentrant.m4 new file mode 100644 index 000000000..8cc3968f5 --- /dev/null +++ b/ares/reentrant.m4 @@ -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 + # +]) + |