mirror of
https://github.com/moparisthebest/curl
synced 2024-12-22 08:08:50 -05:00
Refactor how preprocessor symbol _THREAD_SAFE definition is done.
This commit is contained in:
parent
a8ddd6ce31
commit
1cbc93fb54
@ -48,6 +48,17 @@
|
|||||||
/* system header files in our config files, avoid this at any cost. */
|
/* system header files in our config files, avoid this at any cost. */
|
||||||
/* ================================================================ */
|
/* ================================================================ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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
|
* Tru64 needs _REENTRANT set for a few function prototypes and
|
||||||
* things to appear in the system header files. Unixware needs it
|
* things to appear in the system header files. Unixware needs it
|
||||||
|
@ -82,6 +82,7 @@ dnl This defines _ALL_SOURCE for AIX
|
|||||||
CARES_CHECK_AIX_ALL_SOURCE
|
CARES_CHECK_AIX_ALL_SOURCE
|
||||||
|
|
||||||
dnl Our configure and build reentrant settings
|
dnl Our configure and build reentrant settings
|
||||||
|
CARES_CONFIGURE_THREAD_SAFE
|
||||||
CARES_CONFIGURE_REENTRANT
|
CARES_CONFIGURE_REENTRANT
|
||||||
|
|
||||||
dnl check for how to do large files
|
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
|
dnl Default is to try the thread-safe versions of a few functions
|
||||||
OPT_THREAD=on
|
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_ARG_ENABLE(thread,dnl
|
||||||
AC_HELP_STRING([--disable-thread],[don't look for thread-safe functions])
|
AC_HELP_STRING([--disable-thread],[don't look for thread-safe functions])
|
||||||
AC_HELP_STRING([--enable-thread],[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 http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
|
||||||
dnl genprogc/thread_quick_ref.htm
|
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 **********************************************************************
|
||||||
dnl Back to "normal" configuring
|
dnl Back to "normal" configuring
|
||||||
|
@ -422,8 +422,8 @@ dnl must be unconditionally done for this platform.
|
|||||||
dnl Internal macro for CARES_CONFIGURE_REENTRANT.
|
dnl Internal macro for CARES_CONFIGURE_REENTRANT.
|
||||||
|
|
||||||
AC_DEFUN([CARES_CHECK_NEED_REENTRANT_SYSTEM], [
|
AC_DEFUN([CARES_CHECK_NEED_REENTRANT_SYSTEM], [
|
||||||
case $host in
|
case $host_os in
|
||||||
*-*-solaris*)
|
solaris*)
|
||||||
tmp_need_reentrant="yes"
|
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 CARES_CONFIGURE_FROM_NOW_ON_WITH_REENTRANT
|
||||||
dnl -------------------------------------------------
|
dnl -------------------------------------------------
|
||||||
dnl This macro ensures that configuration tests done
|
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 CARES_CONFIGURE_REENTRANT
|
||||||
dnl -------------------------------------------------
|
dnl -------------------------------------------------
|
||||||
dnl This first checks if the preprocessor _REENTRANT
|
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
|
||||||
|
#
|
||||||
|
])
|
||||||
|
30
configure.ac
30
configure.ac
@ -148,6 +148,7 @@ dnl This defines _ALL_SOURCE for AIX
|
|||||||
CURL_CHECK_AIX_ALL_SOURCE
|
CURL_CHECK_AIX_ALL_SOURCE
|
||||||
|
|
||||||
dnl Our configure and build reentrant settings
|
dnl Our configure and build reentrant settings
|
||||||
|
CURL_CONFIGURE_THREAD_SAFE
|
||||||
CURL_CONFIGURE_REENTRANT
|
CURL_CONFIGURE_REENTRANT
|
||||||
|
|
||||||
dnl check for how to do large files
|
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
|
dnl Default is to try the thread-safe versions of a few functions
|
||||||
OPT_THREAD=on
|
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_ARG_ENABLE(thread,dnl
|
||||||
AC_HELP_STRING([--disable-thread],[don't look for thread-safe functions])
|
AC_HELP_STRING([--disable-thread],[don't look for thread-safe functions])
|
||||||
AC_HELP_STRING([--enable-thread],[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 http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
|
||||||
dnl genprogc/thread_quick_ref.htm
|
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 **********************************************************************
|
||||||
dnl Back to "normal" configuring
|
dnl Back to "normal" configuring
|
||||||
|
@ -640,9 +640,12 @@
|
|||||||
/* Define to 1 if you need the malloc.h header file even with stdlib.h */
|
/* Define to 1 if you need the malloc.h header file even with stdlib.h */
|
||||||
/* #undef NEED_MALLOC_H */
|
/* #undef NEED_MALLOC_H */
|
||||||
|
|
||||||
/* need REENTRANT defined */
|
/* Define to 1 if _REENTRANT preprocessor symbol must be defined. */
|
||||||
/* #undef NEED_REENTRANT */
|
/* #undef NEED_REENTRANT */
|
||||||
|
|
||||||
|
/* Define to 1 if _THREAD_SAFE preprocessor symbol must be defined. */
|
||||||
|
/* #undef NEED_THREAD_SAFE */
|
||||||
|
|
||||||
/* cpu-machine-OS */
|
/* cpu-machine-OS */
|
||||||
#ifdef __WINS__
|
#ifdef __WINS__
|
||||||
#define OS "i386-pc-epoc32"
|
#define OS "i386-pc-epoc32"
|
||||||
@ -767,9 +770,6 @@
|
|||||||
/* Define for large files, on AIX-style hosts. */
|
/* Define for large files, on AIX-style hosts. */
|
||||||
/* #undef _LARGE_FILES */
|
/* #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. */
|
/* Define to empty if `const' does not conform to ANSI C. */
|
||||||
/* #undef const */
|
/* #undef const */
|
||||||
|
|
||||||
|
@ -559,9 +559,12 @@
|
|||||||
/* if you have the zlib.h header file */
|
/* if you have the zlib.h header file */
|
||||||
/* #undef HAVE_ZLIB_H */
|
/* #undef HAVE_ZLIB_H */
|
||||||
|
|
||||||
/* need REENTRANT defined */
|
/* Define to 1 if _REENTRANT preprocessor symbol must be defined. */
|
||||||
/* #undef NEED_REENTRANT */
|
/* #undef NEED_REENTRANT */
|
||||||
|
|
||||||
|
/* Define to 1 if _THREAD_SAFE preprocessor symbol must be defined. */
|
||||||
|
/* #undef NEED_THREAD_SAFE */
|
||||||
|
|
||||||
/* cpu-machine-OS */
|
/* cpu-machine-OS */
|
||||||
#define OS "s390x-ibm-tpf"
|
#define OS "s390x-ibm-tpf"
|
||||||
|
|
||||||
@ -653,9 +656,6 @@
|
|||||||
/* Define for large files, on AIX-style hosts. */
|
/* Define for large files, on AIX-style hosts. */
|
||||||
/* #undef _LARGE_FILES */
|
/* #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. */
|
/* Define to empty if `const' does not conform to ANSI C. */
|
||||||
/* #undef const */
|
/* #undef const */
|
||||||
|
|
||||||
|
@ -745,6 +745,9 @@
|
|||||||
/* Define to 1 if _REENTRANT preprocessor symbol must be defined. */
|
/* Define to 1 if _REENTRANT preprocessor symbol must be defined. */
|
||||||
/* #undef NEED_REENTRANT */
|
/* #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 to 1 if the open function requires three arguments. */
|
||||||
#define OPEN_NEEDS_ARG3 1
|
#define OPEN_NEEDS_ARG3 1
|
||||||
|
|
||||||
@ -913,9 +916,6 @@
|
|||||||
/* Define for large files, on AIX-style hosts. */
|
/* Define for large files, on AIX-style hosts. */
|
||||||
/* #undef _LARGE_FILES */
|
/* #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. */
|
/* Define to empty if `const' does not conform to ANSI C. */
|
||||||
/* #undef const */
|
/* #undef const */
|
||||||
|
|
||||||
|
11
lib/setup.h
11
lib/setup.h
@ -85,6 +85,17 @@
|
|||||||
/* system header files in our config files, avoid this at any cost. */
|
/* system header files in our config files, avoid this at any cost. */
|
||||||
/* ================================================================ */
|
/* ================================================================ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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
|
* Tru64 needs _REENTRANT set for a few function prototypes and
|
||||||
* things to appear in the system header files. Unixware needs it
|
* things to appear in the system header files. Unixware needs it
|
||||||
|
@ -428,8 +428,8 @@ dnl must be unconditionally done for this platform.
|
|||||||
dnl Internal macro for CURL_CONFIGURE_REENTRANT.
|
dnl Internal macro for CURL_CONFIGURE_REENTRANT.
|
||||||
|
|
||||||
AC_DEFUN([CURL_CHECK_NEED_REENTRANT_SYSTEM], [
|
AC_DEFUN([CURL_CHECK_NEED_REENTRANT_SYSTEM], [
|
||||||
case $host in
|
case $host_os in
|
||||||
*-*-solaris*)
|
solaris*)
|
||||||
tmp_need_reentrant="yes"
|
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 CURL_CONFIGURE_FROM_NOW_ON_WITH_REENTRANT
|
||||||
dnl -------------------------------------------------
|
dnl -------------------------------------------------
|
||||||
dnl This macro ensures that configuration tests done
|
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 CURL_CONFIGURE_REENTRANT
|
||||||
dnl -------------------------------------------------
|
dnl -------------------------------------------------
|
||||||
dnl This first checks if the preprocessor _REENTRANT
|
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
|
||||||
|
#
|
||||||
|
])
|
||||||
|
|
||||||
|
11
src/setup.h
11
src/setup.h
@ -68,6 +68,17 @@
|
|||||||
|
|
||||||
#endif /* HAVE_CONFIG_H */
|
#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
|
* Tru64 needs _REENTRANT set for a few function prototypes and
|
||||||
* things to appear in the system header files. Unixware needs it
|
* things to appear in the system header files. Unixware needs it
|
||||||
|
Loading…
Reference in New Issue
Block a user