diff options
| -rw-r--r-- | ares/ares_setup.h | 11 | ||||
| -rw-r--r-- | ares/configure.ac | 22 | ||||
| -rw-r--r-- | ares/m4/cares-reentrant.m4 | 100 | ||||
| -rw-r--r-- | configure.ac | 30 | ||||
| -rw-r--r-- | lib/config-symbian.h | 8 | ||||
| -rw-r--r-- | lib/config-tpf.h | 8 | ||||
| -rw-r--r-- | lib/config-vxworks.h | 6 | ||||
| -rw-r--r-- | lib/setup.h | 11 | ||||
| -rw-r--r-- | m4/curl-reentrant.m4 | 101 | ||||
| -rw-r--r-- | src/setup.h | 11 | 
10 files changed, 243 insertions, 65 deletions
diff --git a/ares/ares_setup.h b/ares/ares_setup.h index 589643716..ce81b1fa3 100644 --- a/ares/ares_setup.h +++ b/ares/ares_setup.h @@ -49,6 +49,17 @@  /* ================================================================ */  /* + * AIX 4.3 and newer needs _THREAD_SAFE defined to build + * proper reentrant code. Others may also need it. + */ + +#ifdef NEED_THREAD_SAFE +#  ifndef _THREAD_SAFE +#    define _THREAD_SAFE +#  endif +#endif + +/*   * Tru64 needs _REENTRANT set for a few function prototypes and   * things to appear in the system header files. Unixware needs it   * to build proper reentrant code. Others may also need it. diff --git a/ares/configure.ac b/ares/configure.ac index 8f1cddb5b..f1f52a5bc 100644 --- a/ares/configure.ac +++ b/ares/configure.ac @@ -82,6 +82,7 @@ dnl This defines _ALL_SOURCE for AIX  CARES_CHECK_AIX_ALL_SOURCE  dnl Our configure and build reentrant settings +CARES_CONFIGURE_THREAD_SAFE  CARES_CONFIGURE_REENTRANT  dnl check for how to do large files @@ -384,21 +385,6 @@ AC_HELP_STRING([--enable-libgcc],[use libgcc when linking]),  dnl Default is to try the thread-safe versions of a few functions  OPT_THREAD=on -dnl detect AIX 4.3 or later -AC_MSG_CHECKING([AIX 4.3 or later]) -AC_PREPROC_IFELSE([ -#if defined(_AIX) && defined(_AIX43) -printf("just fine"); -#else -#error "this is not AIX 4.3 or later" -#endif -], - [ AC_MSG_RESULT([yes]) -   RECENTAIX=yes -   OPT_THREAD=off ], - [ AC_MSG_RESULT([no]) ] -) -  AC_ARG_ENABLE(thread,dnl  AC_HELP_STRING([--disable-thread],[don't look for thread-safe functions])  AC_HELP_STRING([--enable-thread],[look for thread-safe functions]), @@ -427,12 +413,6 @@ dnl Let's hope this split URL remains working:  dnl http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \  dnl genprogc/thread_quick_ref.htm -if test "x$RECENTAIX" = "xyes"; then - -  AC_DEFINE(_THREAD_SAFE, 1, [define this if you need it to compile thread-safe code]) - -fi -  dnl **********************************************************************  dnl Back to "normal" configuring diff --git a/ares/m4/cares-reentrant.m4 b/ares/m4/cares-reentrant.m4 index 5793b7791..2c24e557d 100644 --- a/ares/m4/cares-reentrant.m4 +++ b/ares/m4/cares-reentrant.m4 @@ -422,8 +422,8 @@ dnl must be unconditionally done for this platform.  dnl Internal macro for CARES_CONFIGURE_REENTRANT.  AC_DEFUN([CARES_CHECK_NEED_REENTRANT_SYSTEM], [ -  case $host in -    *-*-solaris*) +  case $host_os in +    solaris*)        tmp_need_reentrant="yes"        ;;      *) @@ -433,6 +433,29 @@ AC_DEFUN([CARES_CHECK_NEED_REENTRANT_SYSTEM], [  ]) +dnl CARES_CHECK_NEED_THREAD_SAFE_SYSTEM +dnl ------------------------------------------------- +dnl Checks if the preprocessor _THREAD_SAFE definition +dnl must be unconditionally done for this platform. +dnl Internal macro for CARES_CONFIGURE_THREAD_SAFE. + +AC_DEFUN([CARES_CHECK_NEED_THREAD_SAFE_SYSTEM], [ +  case $host_os in +    aix[[123]].* | aix4.[[012]].*) +      dnl aix 4.2 and older +      tmp_need_thread_safe="no" +      ;; +    aix*) +      dnl AIX 4.3 and newer +      tmp_need_thread_safe="yes" +      ;; +    *) +      tmp_need_thread_safe="no" +      ;; +  esac +]) + +  dnl CARES_CONFIGURE_FROM_NOW_ON_WITH_REENTRANT  dnl -------------------------------------------------  dnl This macro ensures that configuration tests done @@ -453,6 +476,26 @@ _EOF  ]) +dnl CARES_CONFIGURE_FROM_NOW_ON_WITH_THREAD_SAFE +dnl ------------------------------------------------- +dnl This macro ensures that configuration tests done +dnl after this will execute with preprocessor symbol +dnl _THREAD_SAFE defined. This macro also ensures that +dnl the generated config file defines NEED_THREAD_SAFE +dnl and that in turn setup.h will define _THREAD_SAFE. +dnl Internal macro for CARES_CONFIGURE_THREAD_SAFE. + +AC_DEFUN([CARES_CONFIGURE_FROM_NOW_ON_WITH_THREAD_SAFE], [ +AC_DEFINE(NEED_THREAD_SAFE, 1, +  [Define to 1 if _THREAD_SAFE preprocessor symbol must be defined.]) +cat >>confdefs.h <<_EOF +#ifndef _THREAD_SAFE +#  define _THREAD_SAFE +#endif +_EOF +]) + +  dnl CARES_CONFIGURE_REENTRANT  dnl -------------------------------------------------  dnl This first checks if the preprocessor _REENTRANT @@ -513,3 +556,56 @@ AC_DEFUN([CARES_CONFIGURE_REENTRANT], [    #  ]) + +dnl CARES_CONFIGURE_THREAD_SAFE +dnl ------------------------------------------------- +dnl This first checks if the preprocessor _THREAD_SAFE +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. Finally, if +dnl _THREAD_SAFE 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([CARES_CONFIGURE_THREAD_SAFE], [ +  AC_PREREQ([2.50])dnl +  # +  AC_MSG_CHECKING([if _THREAD_SAFE is already defined]) +  AC_COMPILE_IFELSE([ +    AC_LANG_PROGRAM([[ +    ]],[[ +#ifdef _THREAD_SAFE +      int dummy=1; +#else +      force compilation error +#endif +    ]]) +  ],[ +    AC_MSG_RESULT([yes]) +    tmp_thread_safe_initially_defined="yes" +  ],[ +    AC_MSG_RESULT([no]) +    tmp_thread_safe_initially_defined="no" +  ]) +  # +  if test "$tmp_thread_safe_initially_defined" = "no"; then +    AC_MSG_CHECKING([if _THREAD_SAFE is actually needed]) +    CARES_CHECK_NEED_THREAD_SAFE_SYSTEM +    if test "$tmp_need_thread_safe" = "yes"; then +      AC_MSG_RESULT([yes]) +    else +      AC_MSG_RESULT([no]) +    fi +  fi +  # +  AC_MSG_CHECKING([if _THREAD_SAFE is onwards defined]) +  if test "$tmp_thread_safe_initially_defined" = "yes" || +    test "$tmp_need_thread_safe" = "yes"; then +    CARES_CONFIGURE_FROM_NOW_ON_WITH_THREAD_SAFE +    AC_MSG_RESULT([yes]) +  else +    AC_MSG_RESULT([no]) +  fi +  # +]) diff --git a/configure.ac b/configure.ac index d2db6cf54..bc7e0e4bd 100644 --- a/configure.ac +++ b/configure.ac @@ -148,6 +148,7 @@ dnl This defines _ALL_SOURCE for AIX  CURL_CHECK_AIX_ALL_SOURCE  dnl Our configure and build reentrant settings +CURL_CONFIGURE_THREAD_SAFE  CURL_CONFIGURE_REENTRANT  dnl check for how to do large files @@ -1823,22 +1824,6 @@ esac  dnl Default is to try the thread-safe versions of a few functions  OPT_THREAD=on -dnl detect AIX 4.3 or later -dnl see full docs on this reasoning in the lib/hostip.c source file -AC_MSG_CHECKING([AIX 4.3 or later]) -AC_PREPROC_IFELSE([ -#if defined(_AIX) && defined(_AIX43) -printf("just fine"); -#else -#error "this is not AIX 4.3 or later" -#endif -], - [ AC_MSG_RESULT([yes]) -   RECENTAIX=yes -   OPT_THREAD=off ], - [ AC_MSG_RESULT([no]) ] -) -  AC_ARG_ENABLE(thread,dnl  AC_HELP_STRING([--disable-thread],[don't look for thread-safe functions])  AC_HELP_STRING([--enable-thread],[look for thread-safe functions]), @@ -1886,19 +1871,6 @@ dnl Let's hope this split URL remains working:  dnl http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \  dnl genprogc/thread_quick_ref.htm -if test "x$RECENTAIX" = "xyes"; then - -  AC_DEFINE(_THREAD_SAFE, 1, [define this if you need it to compile thread-safe code]) - -  dnl is there a localtime_r() -  dnl the old localtime_r check was done here - -  dnl is there a strerror_r() -  dnl the old strerror_r check was done here - -  checkfor_gmtime_r="yes" -fi -  dnl **********************************************************************  dnl Back to "normal" configuring diff --git a/lib/config-symbian.h b/lib/config-symbian.h index b26fe46cd..d3bf20924 100644 --- a/lib/config-symbian.h +++ b/lib/config-symbian.h @@ -640,9 +640,12 @@  /* Define to 1 if you need the malloc.h header file even with stdlib.h */  /* #undef NEED_MALLOC_H */ -/* need REENTRANT defined */ +/* Define to 1 if _REENTRANT preprocessor symbol must be defined. */  /* #undef NEED_REENTRANT */ +/* Define to 1 if _THREAD_SAFE preprocessor symbol must be defined. */ +/* #undef NEED_THREAD_SAFE */ +  /* cpu-machine-OS */  #ifdef __WINS__  #define OS "i386-pc-epoc32" @@ -767,9 +770,6 @@  /* Define for large files, on AIX-style hosts. */  /* #undef _LARGE_FILES */ -/* define this if you need it to compile thread-safe code */ -/* #undef _THREAD_SAFE */ -  /* Define to empty if `const' does not conform to ANSI C. */  /* #undef const */ diff --git a/lib/config-tpf.h b/lib/config-tpf.h index cea5d3bd9..fd995bf4c 100644 --- a/lib/config-tpf.h +++ b/lib/config-tpf.h @@ -559,9 +559,12 @@  /* if you have the zlib.h header file */  /* #undef HAVE_ZLIB_H */ -/* need REENTRANT defined */ +/* Define to 1 if _REENTRANT preprocessor symbol must be defined. */  /* #undef NEED_REENTRANT */ +/* Define to 1 if _THREAD_SAFE preprocessor symbol must be defined. */ +/* #undef NEED_THREAD_SAFE */ +  /* cpu-machine-OS */  #define OS "s390x-ibm-tpf" @@ -653,9 +656,6 @@  /* Define for large files, on AIX-style hosts. */  /* #undef _LARGE_FILES */ -/* define this if you need it to compile thread-safe code */ -/* #undef _THREAD_SAFE */ -  /* Define to empty if `const' does not conform to ANSI C. */  /* #undef const */ diff --git a/lib/config-vxworks.h b/lib/config-vxworks.h index 34a8c7172..26b8074d5 100644 --- a/lib/config-vxworks.h +++ b/lib/config-vxworks.h @@ -745,6 +745,9 @@  /* Define to 1 if _REENTRANT preprocessor symbol must be defined. */  /* #undef NEED_REENTRANT */ +/* Define to 1 if _THREAD_SAFE preprocessor symbol must be defined. */ +/* #undef NEED_THREAD_SAFE */ +  /* Define to 1 if the open function requires three arguments. */  #define OPEN_NEEDS_ARG3 1 @@ -913,9 +916,6 @@  /* Define for large files, on AIX-style hosts. */  /* #undef _LARGE_FILES */ -/* define this if you need it to compile thread-safe code */ -/* #undef _THREAD_SAFE */ -  /* Define to empty if `const' does not conform to ANSI C. */  /* #undef const */ diff --git a/lib/setup.h b/lib/setup.h index 5f0de9050..49d14ed09 100644 --- a/lib/setup.h +++ b/lib/setup.h @@ -86,6 +86,17 @@  /* ================================================================ */  /* + * AIX 4.3 and newer needs _THREAD_SAFE defined to build + * proper reentrant code. Others may also need it. + */ + +#ifdef NEED_THREAD_SAFE +#  ifndef _THREAD_SAFE +#    define _THREAD_SAFE +#  endif +#endif + +/*   * Tru64 needs _REENTRANT set for a few function prototypes and   * things to appear in the system header files. Unixware needs it   * to build proper reentrant code. Others may also need it. diff --git a/m4/curl-reentrant.m4 b/m4/curl-reentrant.m4 index a2aa5a96e..08e145211 100644 --- a/m4/curl-reentrant.m4 +++ b/m4/curl-reentrant.m4 @@ -428,8 +428,8 @@ dnl must be unconditionally done for this platform.  dnl Internal macro for CURL_CONFIGURE_REENTRANT.  AC_DEFUN([CURL_CHECK_NEED_REENTRANT_SYSTEM], [ -  case $host in -    *-*-solaris*) +  case $host_os in +    solaris*)        tmp_need_reentrant="yes"        ;;      *) @@ -439,6 +439,29 @@ AC_DEFUN([CURL_CHECK_NEED_REENTRANT_SYSTEM], [  ]) +dnl CURL_CHECK_NEED_THREAD_SAFE_SYSTEM +dnl ------------------------------------------------- +dnl Checks if the preprocessor _THREAD_SAFE definition +dnl must be unconditionally done for this platform. +dnl Internal macro for CURL_CONFIGURE_THREAD_SAFE. + +AC_DEFUN([CURL_CHECK_NEED_THREAD_SAFE_SYSTEM], [ +  case $host_os in +    aix[[123]].* | aix4.[[012]].*) +      dnl aix 4.2 and older +      tmp_need_thread_safe="no" +      ;; +    aix*) +      dnl AIX 4.3 and newer +      tmp_need_thread_safe="yes" +      ;; +    *) +      tmp_need_thread_safe="no" +      ;; +  esac +]) + +  dnl CURL_CONFIGURE_FROM_NOW_ON_WITH_REENTRANT  dnl -------------------------------------------------  dnl This macro ensures that configuration tests done @@ -459,6 +482,26 @@ _EOF  ]) +dnl CURL_CONFIGURE_FROM_NOW_ON_WITH_THREAD_SAFE +dnl ------------------------------------------------- +dnl This macro ensures that configuration tests done +dnl after this will execute with preprocessor symbol +dnl _THREAD_SAFE defined. This macro also ensures that +dnl the generated config file defines NEED_THREAD_SAFE +dnl and that in turn setup.h will define _THREAD_SAFE. +dnl Internal macro for CURL_CONFIGURE_THREAD_SAFE. + +AC_DEFUN([CURL_CONFIGURE_FROM_NOW_ON_WITH_THREAD_SAFE], [ +AC_DEFINE(NEED_THREAD_SAFE, 1, +  [Define to 1 if _THREAD_SAFE preprocessor symbol must be defined.]) +cat >>confdefs.h <<_EOF +#ifndef _THREAD_SAFE +#  define _THREAD_SAFE +#endif +_EOF +]) + +  dnl CURL_CONFIGURE_REENTRANT  dnl -------------------------------------------------  dnl This first checks if the preprocessor _REENTRANT @@ -519,3 +562,57 @@ AC_DEFUN([CURL_CONFIGURE_REENTRANT], [    #  ]) + +dnl CURL_CONFIGURE_THREAD_SAFE +dnl ------------------------------------------------- +dnl This first checks if the preprocessor _THREAD_SAFE +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. Finally, if +dnl _THREAD_SAFE 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([CURL_CONFIGURE_THREAD_SAFE], [ +  AC_PREREQ([2.50])dnl +  # +  AC_MSG_CHECKING([if _THREAD_SAFE is already defined]) +  AC_COMPILE_IFELSE([ +    AC_LANG_PROGRAM([[ +    ]],[[ +#ifdef _THREAD_SAFE +      int dummy=1; +#else +      force compilation error +#endif +    ]]) +  ],[ +    AC_MSG_RESULT([yes]) +    tmp_thread_safe_initially_defined="yes" +  ],[ +    AC_MSG_RESULT([no]) +    tmp_thread_safe_initially_defined="no" +  ]) +  # +  if test "$tmp_thread_safe_initially_defined" = "no"; then +    AC_MSG_CHECKING([if _THREAD_SAFE is actually needed]) +    CURL_CHECK_NEED_THREAD_SAFE_SYSTEM +    if test "$tmp_need_thread_safe" = "yes"; then +      AC_MSG_RESULT([yes]) +    else +      AC_MSG_RESULT([no]) +    fi +  fi +  # +  AC_MSG_CHECKING([if _THREAD_SAFE is onwards defined]) +  if test "$tmp_thread_safe_initially_defined" = "yes" || +    test "$tmp_need_thread_safe" = "yes"; then +    CURL_CONFIGURE_FROM_NOW_ON_WITH_THREAD_SAFE +    AC_MSG_RESULT([yes]) +  else +    AC_MSG_RESULT([no]) +  fi +  # +]) + diff --git a/src/setup.h b/src/setup.h index 9120af174..36fde516f 100644 --- a/src/setup.h +++ b/src/setup.h @@ -69,6 +69,17 @@  #endif /* HAVE_CONFIG_H */  /* + * AIX 4.3 and newer needs _THREAD_SAFE defined to build + * proper reentrant code. Others may also need it. + */ + +#ifdef NEED_THREAD_SAFE +#  ifndef _THREAD_SAFE +#    define _THREAD_SAFE +#  endif +#endif + +/*   * Tru64 needs _REENTRANT set for a few function prototypes and   * things to appear in the system header files. Unixware needs it   * to build proper reentrant code. Others may also need it.  | 
