123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616 |
- #***************************************************************************
- # _ _ ____ _
- # Project ___| | | | _ \| |
- # / __| | | | |_) | |
- # | (__| |_| | _ <| |___
- # \___|\___/|_| \_\_____|
- #
- # Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
- #
- # This software is licensed as described in the file COPYING, which
- # you should have received as part of this distribution. The terms
- # are also available at https://curl.haxx.se/docs/copyright.html.
- #
- # You may opt to use, copy, modify, merge, publish, distribute and/or sell
- # copies of the Software, and permit persons to whom the Software is
- # furnished to do so, under the terms of the COPYING file.
- #
- # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- # KIND, either express or implied.
- #
- #***************************************************************************
- # File version for 'aclocal' use. Keep it a single number.
- # serial 10
- dnl Note 1
- dnl ------
- dnl None of the CURL_CHECK_NEED_REENTRANT_* macros shall use HAVE_FOO_H to
- dnl conditionally include header files. These macros are used early in the
- dnl configure process much before header file availability is known.
- dnl CURL_CHECK_NEED_REENTRANT_ERRNO
- dnl -------------------------------------------------
- dnl Checks if the preprocessor _REENTRANT definition
- dnl makes errno available as a preprocessor macro.
- AC_DEFUN([CURL_CHECK_NEED_REENTRANT_ERRNO], [
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- #include <errno.h>
- ]],[[
- if(0 != errno)
- return 1;
- ]])
- ],[
- tmp_errno="yes"
- ],[
- tmp_errno="no"
- ])
- if test "$tmp_errno" = "yes"; then
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- #include <errno.h>
- ]],[[
- #ifdef errno
- int dummy=1;
- #else
- force compilation error
- #endif
- ]])
- ],[
- tmp_errno="errno_macro_defined"
- ],[
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- #define _REENTRANT
- #include <errno.h>
- ]],[[
- #ifdef errno
- int dummy=1;
- #else
- force compilation error
- #endif
- ]])
- ],[
- tmp_errno="errno_macro_needs_reentrant"
- tmp_need_reentrant="yes"
- ])
- ])
- fi
- ])
- dnl CURL_CHECK_NEED_REENTRANT_GMTIME_R
- dnl -------------------------------------------------
- dnl Checks if the preprocessor _REENTRANT definition
- dnl makes function gmtime_r compiler visible.
- AC_DEFUN([CURL_CHECK_NEED_REENTRANT_GMTIME_R], [
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([gmtime_r])
- ],[
- tmp_gmtime_r="yes"
- ],[
- tmp_gmtime_r="no"
- ])
- if test "$tmp_gmtime_r" = "yes"; then
- AC_EGREP_CPP([gmtime_r],[
- #include <sys/types.h>
- #include <time.h>
- ],[
- tmp_gmtime_r="proto_declared"
- ],[
- AC_EGREP_CPP([gmtime_r],[
- #define _REENTRANT
- #include <sys/types.h>
- #include <time.h>
- ],[
- tmp_gmtime_r="proto_needs_reentrant"
- tmp_need_reentrant="yes"
- ])
- ])
- fi
- ])
- dnl CURL_CHECK_NEED_REENTRANT_LOCALTIME_R
- dnl -------------------------------------------------
- dnl Checks if the preprocessor _REENTRANT definition
- dnl makes function localtime_r compiler visible.
- AC_DEFUN([CURL_CHECK_NEED_REENTRANT_LOCALTIME_R], [
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([localtime_r])
- ],[
- tmp_localtime_r="yes"
- ],[
- tmp_localtime_r="no"
- ])
- if test "$tmp_localtime_r" = "yes"; then
- AC_EGREP_CPP([localtime_r],[
- #include <sys/types.h>
- #include <time.h>
- ],[
- tmp_localtime_r="proto_declared"
- ],[
- AC_EGREP_CPP([localtime_r],[
- #define _REENTRANT
- #include <sys/types.h>
- #include <time.h>
- ],[
- tmp_localtime_r="proto_needs_reentrant"
- tmp_need_reentrant="yes"
- ])
- ])
- fi
- ])
- dnl CURL_CHECK_NEED_REENTRANT_STRERROR_R
- dnl -------------------------------------------------
- dnl Checks if the preprocessor _REENTRANT definition
- dnl makes function strerror_r compiler visible.
- AC_DEFUN([CURL_CHECK_NEED_REENTRANT_STRERROR_R], [
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([strerror_r])
- ],[
- tmp_strerror_r="yes"
- ],[
- tmp_strerror_r="no"
- ])
- if test "$tmp_strerror_r" = "yes"; then
- AC_EGREP_CPP([strerror_r],[
- #include <sys/types.h>
- #include <string.h>
- ],[
- tmp_strerror_r="proto_declared"
- ],[
- AC_EGREP_CPP([strerror_r],[
- #define _REENTRANT
- #include <sys/types.h>
- #include <string.h>
- ],[
- tmp_strerror_r="proto_needs_reentrant"
- tmp_need_reentrant="yes"
- ])
- ])
- fi
- ])
- dnl CURL_CHECK_NEED_REENTRANT_STRTOK_R
- dnl -------------------------------------------------
- dnl Checks if the preprocessor _REENTRANT definition
- dnl makes function strtok_r compiler visible.
- AC_DEFUN([CURL_CHECK_NEED_REENTRANT_STRTOK_R], [
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([strtok_r])
- ],[
- tmp_strtok_r="yes"
- ],[
- tmp_strtok_r="no"
- ])
- if test "$tmp_strtok_r" = "yes"; then
- AC_EGREP_CPP([strtok_r],[
- #include <sys/types.h>
- #include <string.h>
- ],[
- tmp_strtok_r="proto_declared"
- ],[
- AC_EGREP_CPP([strtok_r],[
- #define _REENTRANT
- #include <sys/types.h>
- #include <string.h>
- ],[
- tmp_strtok_r="proto_needs_reentrant"
- tmp_need_reentrant="yes"
- ])
- ])
- fi
- ])
- dnl CURL_CHECK_NEED_REENTRANT_INET_NTOA_R
- dnl -------------------------------------------------
- dnl Checks if the preprocessor _REENTRANT definition
- dnl makes function inet_ntoa_r compiler visible.
- AC_DEFUN([CURL_CHECK_NEED_REENTRANT_INET_NTOA_R], [
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([inet_ntoa_r])
- ],[
- tmp_inet_ntoa_r="yes"
- ],[
- 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>
- ],[
- tmp_inet_ntoa_r="proto_declared"
- ],[
- AC_EGREP_CPP([inet_ntoa_r],[
- #define _REENTRANT
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
- ],[
- tmp_inet_ntoa_r="proto_needs_reentrant"
- tmp_need_reentrant="yes"
- ])
- ])
- fi
- ])
- dnl CURL_CHECK_NEED_REENTRANT_GETHOSTBYADDR_R
- dnl -------------------------------------------------
- dnl Checks if the preprocessor _REENTRANT definition
- dnl makes function gethostbyaddr_r compiler visible.
- AC_DEFUN([CURL_CHECK_NEED_REENTRANT_GETHOSTBYADDR_R], [
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([gethostbyaddr_r])
- ],[
- tmp_gethostbyaddr_r="yes"
- ],[
- tmp_gethostbyaddr_r="no"
- ])
- if test "$tmp_gethostbyaddr_r" = "yes"; then
- AC_EGREP_CPP([gethostbyaddr_r],[
- #include <sys/types.h>
- #include <netdb.h>
- ],[
- tmp_gethostbyaddr_r="proto_declared"
- ],[
- AC_EGREP_CPP([gethostbyaddr_r],[
- #define _REENTRANT
- #include <sys/types.h>
- #include <netdb.h>
- ],[
- tmp_gethostbyaddr_r="proto_needs_reentrant"
- tmp_need_reentrant="yes"
- ])
- ])
- fi
- ])
- dnl CURL_CHECK_NEED_REENTRANT_GETHOSTBYNAME_R
- dnl -------------------------------------------------
- dnl Checks if the preprocessor _REENTRANT definition
- dnl makes function gethostbyname_r compiler visible.
- AC_DEFUN([CURL_CHECK_NEED_REENTRANT_GETHOSTBYNAME_R], [
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([gethostbyname_r])
- ],[
- tmp_gethostbyname_r="yes"
- ],[
- tmp_gethostbyname_r="no"
- ])
- if test "$tmp_gethostbyname_r" = "yes"; then
- AC_EGREP_CPP([gethostbyname_r],[
- #include <sys/types.h>
- #include <netdb.h>
- ],[
- tmp_gethostbyname_r="proto_declared"
- ],[
- AC_EGREP_CPP([gethostbyname_r],[
- #define _REENTRANT
- #include <sys/types.h>
- #include <netdb.h>
- ],[
- tmp_gethostbyname_r="proto_needs_reentrant"
- tmp_need_reentrant="yes"
- ])
- ])
- fi
- ])
- dnl CURL_CHECK_NEED_REENTRANT_GETPROTOBYNAME_R
- dnl -------------------------------------------------
- dnl Checks if the preprocessor _REENTRANT definition
- dnl makes function getprotobyname_r compiler visible.
- AC_DEFUN([CURL_CHECK_NEED_REENTRANT_GETPROTOBYNAME_R], [
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([getprotobyname_r])
- ],[
- tmp_getprotobyname_r="yes"
- ],[
- tmp_getprotobyname_r="no"
- ])
- if test "$tmp_getprotobyname_r" = "yes"; then
- AC_EGREP_CPP([getprotobyname_r],[
- #include <sys/types.h>
- #include <netdb.h>
- ],[
- tmp_getprotobyname_r="proto_declared"
- ],[
- AC_EGREP_CPP([getprotobyname_r],[
- #define _REENTRANT
- #include <sys/types.h>
- #include <netdb.h>
- ],[
- tmp_getprotobyname_r="proto_needs_reentrant"
- tmp_need_reentrant="yes"
- ])
- ])
- fi
- ])
- dnl CURL_CHECK_NEED_REENTRANT_GETSERVBYPORT_R
- dnl -------------------------------------------------
- dnl Checks if the preprocessor _REENTRANT definition
- dnl makes function getservbyport_r compiler visible.
- AC_DEFUN([CURL_CHECK_NEED_REENTRANT_GETSERVBYPORT_R], [
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([getservbyport_r])
- ],[
- tmp_getservbyport_r="yes"
- ],[
- tmp_getservbyport_r="no"
- ])
- if test "$tmp_getservbyport_r" = "yes"; then
- AC_EGREP_CPP([getservbyport_r],[
- #include <sys/types.h>
- #include <netdb.h>
- ],[
- tmp_getservbyport_r="proto_declared"
- ],[
- AC_EGREP_CPP([getservbyport_r],[
- #define _REENTRANT
- #include <sys/types.h>
- #include <netdb.h>
- ],[
- tmp_getservbyport_r="proto_needs_reentrant"
- tmp_need_reentrant="yes"
- ])
- ])
- fi
- ])
- dnl CURL_CHECK_NEED_REENTRANT_FUNCTIONS_R
- dnl -------------------------------------------------
- dnl Checks if the preprocessor _REENTRANT definition
- dnl makes several _r functions compiler visible.
- dnl Internal macro for CURL_CONFIGURE_REENTRANT.
- AC_DEFUN([CURL_CHECK_NEED_REENTRANT_FUNCTIONS_R], [
- if test "$tmp_need_reentrant" = "no"; then
- CURL_CHECK_NEED_REENTRANT_GMTIME_R
- fi
- if test "$tmp_need_reentrant" = "no"; then
- CURL_CHECK_NEED_REENTRANT_LOCALTIME_R
- fi
- if test "$tmp_need_reentrant" = "no"; then
- CURL_CHECK_NEED_REENTRANT_STRERROR_R
- fi
- if test "$tmp_need_reentrant" = "no"; then
- CURL_CHECK_NEED_REENTRANT_STRTOK_R
- fi
- if test "$tmp_need_reentrant" = "no"; then
- CURL_CHECK_NEED_REENTRANT_INET_NTOA_R
- fi
- if test "$tmp_need_reentrant" = "no"; then
- CURL_CHECK_NEED_REENTRANT_GETHOSTBYADDR_R
- fi
- if test "$tmp_need_reentrant" = "no"; then
- CURL_CHECK_NEED_REENTRANT_GETHOSTBYNAME_R
- fi
- if test "$tmp_need_reentrant" = "no"; then
- CURL_CHECK_NEED_REENTRANT_GETPROTOBYNAME_R
- fi
- if test "$tmp_need_reentrant" = "no"; then
- CURL_CHECK_NEED_REENTRANT_GETSERVBYPORT_R
- fi
- ])
- dnl CURL_CHECK_NEED_REENTRANT_SYSTEM
- dnl -------------------------------------------------
- dnl Checks if the preprocessor _REENTRANT definition
- dnl must be unconditionally done for this platform.
- dnl Internal macro for CURL_CONFIGURE_REENTRANT.
- AC_DEFUN([CURL_CHECK_NEED_REENTRANT_SYSTEM], [
- case $host_os in
- solaris*)
- tmp_need_reentrant="yes"
- ;;
- *)
- tmp_need_reentrant="no"
- ;;
- esac
- ])
- 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
- dnl after this will execute with preprocessor symbol
- dnl _REENTRANT defined. This macro also ensures that
- dnl the generated config file defines NEED_REENTRANT
- dnl and that in turn curl_setup.h will define _REENTRANT.
- dnl Internal macro for CURL_CONFIGURE_REENTRANT.
- AC_DEFUN([CURL_CONFIGURE_FROM_NOW_ON_WITH_REENTRANT], [
- AC_DEFINE(NEED_REENTRANT, 1,
- [Define to 1 if _REENTRANT preprocessor symbol must be defined.])
- cat >>confdefs.h <<_EOF
- #ifndef _REENTRANT
- # define _REENTRANT
- #endif
- _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 curl_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
- 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([CURL_CONFIGURE_REENTRANT], [
- AC_PREREQ([2.50])dnl
- #
- 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])
- CURL_CHECK_NEED_REENTRANT_SYSTEM
- if test "$tmp_need_reentrant" = "no"; then
- CURL_CHECK_NEED_REENTRANT_ERRNO
- fi
- if test "$tmp_need_reentrant" = "no"; then
- CURL_CHECK_NEED_REENTRANT_FUNCTIONS_R
- fi
- if test "$tmp_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 "$tmp_need_reentrant" = "yes"; then
- CURL_CONFIGURE_FROM_NOW_ON_WITH_REENTRANT
- AC_MSG_RESULT([yes])
- else
- AC_MSG_RESULT([no])
- fi
- #
- ])
- 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
- #
- ])
|