Annotation of embedaddon/curl/m4/curl-reentrant.m4, revision 1.1.1.1

1.1       misho       1: #***************************************************************************
                      2: #                                  _   _ ____  _
                      3: #  Project                     ___| | | |  _ \| |
                      4: #                             / __| | | | |_) | |
                      5: #                            | (__| |_| |  _ <| |___
                      6: #                             \___|\___/|_| \_\_____|
                      7: #
                      8: # Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
                      9: #
                     10: # This software is licensed as described in the file COPYING, which
                     11: # you should have received as part of this distribution. The terms
                     12: # are also available at https://curl.haxx.se/docs/copyright.html.
                     13: #
                     14: # You may opt to use, copy, modify, merge, publish, distribute and/or sell
                     15: # copies of the Software, and permit persons to whom the Software is
                     16: # furnished to do so, under the terms of the COPYING file.
                     17: #
                     18: # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
                     19: # KIND, either express or implied.
                     20: #
                     21: #***************************************************************************
                     22: 
                     23: # File version for 'aclocal' use. Keep it a single number.
                     24: # serial 10
                     25: 
                     26: dnl Note 1
                     27: dnl ------
                     28: dnl None of the CURL_CHECK_NEED_REENTRANT_* macros shall use HAVE_FOO_H to
                     29: dnl conditionally include header files. These macros are used early in the
                     30: dnl configure process much before header file availability is known.
                     31: 
                     32: 
                     33: dnl CURL_CHECK_NEED_REENTRANT_ERRNO
                     34: dnl -------------------------------------------------
                     35: dnl Checks if the preprocessor _REENTRANT definition
                     36: dnl makes errno available as a preprocessor macro.
                     37: 
                     38: AC_DEFUN([CURL_CHECK_NEED_REENTRANT_ERRNO], [
                     39:   AC_COMPILE_IFELSE([
                     40:     AC_LANG_PROGRAM([[
                     41: #include <errno.h>
                     42:     ]],[[
                     43:       if(0 != errno)
                     44:         return 1;
                     45:     ]])
                     46:   ],[
                     47:     tmp_errno="yes"
                     48:   ],[
                     49:     tmp_errno="no"
                     50:   ])
                     51:   if test "$tmp_errno" = "yes"; then
                     52:     AC_COMPILE_IFELSE([
                     53:       AC_LANG_PROGRAM([[
                     54: #include <errno.h>
                     55:       ]],[[
                     56: #ifdef errno
                     57:         int dummy=1;
                     58: #else
                     59:         force compilation error
                     60: #endif
                     61:       ]])
                     62:     ],[
                     63:       tmp_errno="errno_macro_defined"
                     64:     ],[
                     65:       AC_COMPILE_IFELSE([
                     66:         AC_LANG_PROGRAM([[
                     67: #define _REENTRANT
                     68: #include <errno.h>
                     69:         ]],[[
                     70: #ifdef errno
                     71:           int dummy=1;
                     72: #else
                     73:           force compilation error
                     74: #endif
                     75:         ]])
                     76:       ],[
                     77:         tmp_errno="errno_macro_needs_reentrant"
                     78:         tmp_need_reentrant="yes"
                     79:       ])
                     80:     ])
                     81:   fi
                     82: ])
                     83: 
                     84: 
                     85: dnl CURL_CHECK_NEED_REENTRANT_GMTIME_R
                     86: dnl -------------------------------------------------
                     87: dnl Checks if the preprocessor _REENTRANT definition
                     88: dnl makes function gmtime_r compiler visible.
                     89: 
                     90: AC_DEFUN([CURL_CHECK_NEED_REENTRANT_GMTIME_R], [
                     91:   AC_LINK_IFELSE([
                     92:     AC_LANG_FUNC_LINK_TRY([gmtime_r])
                     93:   ],[
                     94:     tmp_gmtime_r="yes"
                     95:   ],[
                     96:     tmp_gmtime_r="no"
                     97:   ])
                     98:   if test "$tmp_gmtime_r" = "yes"; then
                     99:     AC_EGREP_CPP([gmtime_r],[
                    100: #include <sys/types.h>
                    101: #include <time.h>
                    102:     ],[
                    103:       tmp_gmtime_r="proto_declared"
                    104:     ],[
                    105:       AC_EGREP_CPP([gmtime_r],[
                    106: #define _REENTRANT
                    107: #include <sys/types.h>
                    108: #include <time.h>
                    109:       ],[
                    110:         tmp_gmtime_r="proto_needs_reentrant"
                    111:         tmp_need_reentrant="yes"
                    112:       ])
                    113:     ])
                    114:   fi
                    115: ])
                    116: 
                    117: 
                    118: dnl CURL_CHECK_NEED_REENTRANT_LOCALTIME_R
                    119: dnl -------------------------------------------------
                    120: dnl Checks if the preprocessor _REENTRANT definition
                    121: dnl makes function localtime_r compiler visible.
                    122: 
                    123: AC_DEFUN([CURL_CHECK_NEED_REENTRANT_LOCALTIME_R], [
                    124:   AC_LINK_IFELSE([
                    125:     AC_LANG_FUNC_LINK_TRY([localtime_r])
                    126:   ],[
                    127:     tmp_localtime_r="yes"
                    128:   ],[
                    129:     tmp_localtime_r="no"
                    130:   ])
                    131:   if test "$tmp_localtime_r" = "yes"; then
                    132:     AC_EGREP_CPP([localtime_r],[
                    133: #include <sys/types.h>
                    134: #include <time.h>
                    135:     ],[
                    136:       tmp_localtime_r="proto_declared"
                    137:     ],[
                    138:       AC_EGREP_CPP([localtime_r],[
                    139: #define _REENTRANT
                    140: #include <sys/types.h>
                    141: #include <time.h>
                    142:       ],[
                    143:         tmp_localtime_r="proto_needs_reentrant"
                    144:         tmp_need_reentrant="yes"
                    145:       ])
                    146:     ])
                    147:   fi
                    148: ])
                    149: 
                    150: 
                    151: dnl CURL_CHECK_NEED_REENTRANT_STRERROR_R
                    152: dnl -------------------------------------------------
                    153: dnl Checks if the preprocessor _REENTRANT definition
                    154: dnl makes function strerror_r compiler visible.
                    155: 
                    156: AC_DEFUN([CURL_CHECK_NEED_REENTRANT_STRERROR_R], [
                    157:   AC_LINK_IFELSE([
                    158:     AC_LANG_FUNC_LINK_TRY([strerror_r])
                    159:   ],[
                    160:     tmp_strerror_r="yes"
                    161:   ],[
                    162:     tmp_strerror_r="no"
                    163:   ])
                    164:   if test "$tmp_strerror_r" = "yes"; then
                    165:     AC_EGREP_CPP([strerror_r],[
                    166: #include <sys/types.h>
                    167: #include <string.h>
                    168:     ],[
                    169:       tmp_strerror_r="proto_declared"
                    170:     ],[
                    171:       AC_EGREP_CPP([strerror_r],[
                    172: #define _REENTRANT
                    173: #include <sys/types.h>
                    174: #include <string.h>
                    175:       ],[
                    176:         tmp_strerror_r="proto_needs_reentrant"
                    177:         tmp_need_reentrant="yes"
                    178:       ])
                    179:     ])
                    180:   fi
                    181: ])
                    182: 
                    183: 
                    184: dnl CURL_CHECK_NEED_REENTRANT_STRTOK_R
                    185: dnl -------------------------------------------------
                    186: dnl Checks if the preprocessor _REENTRANT definition
                    187: dnl makes function strtok_r compiler visible.
                    188: 
                    189: AC_DEFUN([CURL_CHECK_NEED_REENTRANT_STRTOK_R], [
                    190:   AC_LINK_IFELSE([
                    191:     AC_LANG_FUNC_LINK_TRY([strtok_r])
                    192:   ],[
                    193:     tmp_strtok_r="yes"
                    194:   ],[
                    195:     tmp_strtok_r="no"
                    196:   ])
                    197:   if test "$tmp_strtok_r" = "yes"; then
                    198:     AC_EGREP_CPP([strtok_r],[
                    199: #include <sys/types.h>
                    200: #include <string.h>
                    201:     ],[
                    202:       tmp_strtok_r="proto_declared"
                    203:     ],[
                    204:       AC_EGREP_CPP([strtok_r],[
                    205: #define _REENTRANT
                    206: #include <sys/types.h>
                    207: #include <string.h>
                    208:       ],[
                    209:         tmp_strtok_r="proto_needs_reentrant"
                    210:         tmp_need_reentrant="yes"
                    211:       ])
                    212:     ])
                    213:   fi
                    214: ])
                    215: 
                    216: 
                    217: dnl CURL_CHECK_NEED_REENTRANT_INET_NTOA_R
                    218: dnl -------------------------------------------------
                    219: dnl Checks if the preprocessor _REENTRANT definition
                    220: dnl makes function inet_ntoa_r compiler visible.
                    221: 
                    222: AC_DEFUN([CURL_CHECK_NEED_REENTRANT_INET_NTOA_R], [
                    223:   AC_LINK_IFELSE([
                    224:     AC_LANG_FUNC_LINK_TRY([inet_ntoa_r])
                    225:   ],[
                    226:     tmp_inet_ntoa_r="yes"
                    227:   ],[
                    228:     tmp_inet_ntoa_r="no"
                    229:   ])
                    230:   if test "$tmp_inet_ntoa_r" = "yes"; then
                    231:     AC_EGREP_CPP([inet_ntoa_r],[
                    232: #include <sys/types.h>
                    233: #include <sys/socket.h>
                    234: #include <netinet/in.h>
                    235: #include <arpa/inet.h>
                    236:     ],[
                    237:       tmp_inet_ntoa_r="proto_declared"
                    238:     ],[
                    239:       AC_EGREP_CPP([inet_ntoa_r],[
                    240: #define _REENTRANT
                    241: #include <sys/types.h>
                    242: #include <sys/socket.h>
                    243: #include <netinet/in.h>
                    244: #include <arpa/inet.h>
                    245:       ],[
                    246:         tmp_inet_ntoa_r="proto_needs_reentrant"
                    247:         tmp_need_reentrant="yes"
                    248:       ])
                    249:     ])
                    250:   fi
                    251: ])
                    252: 
                    253: 
                    254: dnl CURL_CHECK_NEED_REENTRANT_GETHOSTBYADDR_R
                    255: dnl -------------------------------------------------
                    256: dnl Checks if the preprocessor _REENTRANT definition
                    257: dnl makes function gethostbyaddr_r compiler visible.
                    258: 
                    259: AC_DEFUN([CURL_CHECK_NEED_REENTRANT_GETHOSTBYADDR_R], [
                    260:   AC_LINK_IFELSE([
                    261:     AC_LANG_FUNC_LINK_TRY([gethostbyaddr_r])
                    262:   ],[
                    263:     tmp_gethostbyaddr_r="yes"
                    264:   ],[
                    265:     tmp_gethostbyaddr_r="no"
                    266:   ])
                    267:   if test "$tmp_gethostbyaddr_r" = "yes"; then
                    268:     AC_EGREP_CPP([gethostbyaddr_r],[
                    269: #include <sys/types.h>
                    270: #include <netdb.h>
                    271:     ],[
                    272:       tmp_gethostbyaddr_r="proto_declared"
                    273:     ],[
                    274:       AC_EGREP_CPP([gethostbyaddr_r],[
                    275: #define _REENTRANT
                    276: #include <sys/types.h>
                    277: #include <netdb.h>
                    278:       ],[
                    279:         tmp_gethostbyaddr_r="proto_needs_reentrant"
                    280:         tmp_need_reentrant="yes"
                    281:       ])
                    282:     ])
                    283:   fi
                    284: ])
                    285: 
                    286: 
                    287: dnl CURL_CHECK_NEED_REENTRANT_GETHOSTBYNAME_R
                    288: dnl -------------------------------------------------
                    289: dnl Checks if the preprocessor _REENTRANT definition
                    290: dnl makes function gethostbyname_r compiler visible.
                    291: 
                    292: AC_DEFUN([CURL_CHECK_NEED_REENTRANT_GETHOSTBYNAME_R], [
                    293:   AC_LINK_IFELSE([
                    294:     AC_LANG_FUNC_LINK_TRY([gethostbyname_r])
                    295:   ],[
                    296:     tmp_gethostbyname_r="yes"
                    297:   ],[
                    298:     tmp_gethostbyname_r="no"
                    299:   ])
                    300:   if test "$tmp_gethostbyname_r" = "yes"; then
                    301:     AC_EGREP_CPP([gethostbyname_r],[
                    302: #include <sys/types.h>
                    303: #include <netdb.h>
                    304:     ],[
                    305:       tmp_gethostbyname_r="proto_declared"
                    306:     ],[
                    307:       AC_EGREP_CPP([gethostbyname_r],[
                    308: #define _REENTRANT
                    309: #include <sys/types.h>
                    310: #include <netdb.h>
                    311:       ],[
                    312:         tmp_gethostbyname_r="proto_needs_reentrant"
                    313:         tmp_need_reentrant="yes"
                    314:       ])
                    315:     ])
                    316:   fi
                    317: ])
                    318: 
                    319: 
                    320: dnl CURL_CHECK_NEED_REENTRANT_GETPROTOBYNAME_R
                    321: dnl -------------------------------------------------
                    322: dnl Checks if the preprocessor _REENTRANT definition
                    323: dnl makes function getprotobyname_r compiler visible.
                    324: 
                    325: AC_DEFUN([CURL_CHECK_NEED_REENTRANT_GETPROTOBYNAME_R], [
                    326:   AC_LINK_IFELSE([
                    327:     AC_LANG_FUNC_LINK_TRY([getprotobyname_r])
                    328:   ],[
                    329:     tmp_getprotobyname_r="yes"
                    330:   ],[
                    331:     tmp_getprotobyname_r="no"
                    332:   ])
                    333:   if test "$tmp_getprotobyname_r" = "yes"; then
                    334:     AC_EGREP_CPP([getprotobyname_r],[
                    335: #include <sys/types.h>
                    336: #include <netdb.h>
                    337:     ],[
                    338:       tmp_getprotobyname_r="proto_declared"
                    339:     ],[
                    340:       AC_EGREP_CPP([getprotobyname_r],[
                    341: #define _REENTRANT
                    342: #include <sys/types.h>
                    343: #include <netdb.h>
                    344:       ],[
                    345:         tmp_getprotobyname_r="proto_needs_reentrant"
                    346:         tmp_need_reentrant="yes"
                    347:       ])
                    348:     ])
                    349:   fi
                    350: ])
                    351: 
                    352: 
                    353: dnl CURL_CHECK_NEED_REENTRANT_GETSERVBYPORT_R
                    354: dnl -------------------------------------------------
                    355: dnl Checks if the preprocessor _REENTRANT definition
                    356: dnl makes function getservbyport_r compiler visible.
                    357: 
                    358: AC_DEFUN([CURL_CHECK_NEED_REENTRANT_GETSERVBYPORT_R], [
                    359:   AC_LINK_IFELSE([
                    360:     AC_LANG_FUNC_LINK_TRY([getservbyport_r])
                    361:   ],[
                    362:     tmp_getservbyport_r="yes"
                    363:   ],[
                    364:     tmp_getservbyport_r="no"
                    365:   ])
                    366:   if test "$tmp_getservbyport_r" = "yes"; then
                    367:     AC_EGREP_CPP([getservbyport_r],[
                    368: #include <sys/types.h>
                    369: #include <netdb.h>
                    370:     ],[
                    371:       tmp_getservbyport_r="proto_declared"
                    372:     ],[
                    373:       AC_EGREP_CPP([getservbyport_r],[
                    374: #define _REENTRANT
                    375: #include <sys/types.h>
                    376: #include <netdb.h>
                    377:       ],[
                    378:         tmp_getservbyport_r="proto_needs_reentrant"
                    379:         tmp_need_reentrant="yes"
                    380:       ])
                    381:     ])
                    382:   fi
                    383: ])
                    384: 
                    385: 
                    386: dnl CURL_CHECK_NEED_REENTRANT_FUNCTIONS_R
                    387: dnl -------------------------------------------------
                    388: dnl Checks if the preprocessor _REENTRANT definition
                    389: dnl makes several _r functions compiler visible.
                    390: dnl Internal macro for CURL_CONFIGURE_REENTRANT.
                    391: 
                    392: AC_DEFUN([CURL_CHECK_NEED_REENTRANT_FUNCTIONS_R], [
                    393:   if test "$tmp_need_reentrant" = "no"; then
                    394:     CURL_CHECK_NEED_REENTRANT_GMTIME_R
                    395:   fi
                    396:   if test "$tmp_need_reentrant" = "no"; then
                    397:     CURL_CHECK_NEED_REENTRANT_LOCALTIME_R
                    398:   fi
                    399:   if test "$tmp_need_reentrant" = "no"; then
                    400:     CURL_CHECK_NEED_REENTRANT_STRERROR_R
                    401:   fi
                    402:   if test "$tmp_need_reentrant" = "no"; then
                    403:     CURL_CHECK_NEED_REENTRANT_STRTOK_R
                    404:   fi
                    405:   if test "$tmp_need_reentrant" = "no"; then
                    406:     CURL_CHECK_NEED_REENTRANT_INET_NTOA_R
                    407:   fi
                    408:   if test "$tmp_need_reentrant" = "no"; then
                    409:     CURL_CHECK_NEED_REENTRANT_GETHOSTBYADDR_R
                    410:   fi
                    411:   if test "$tmp_need_reentrant" = "no"; then
                    412:     CURL_CHECK_NEED_REENTRANT_GETHOSTBYNAME_R
                    413:   fi
                    414:   if test "$tmp_need_reentrant" = "no"; then
                    415:     CURL_CHECK_NEED_REENTRANT_GETPROTOBYNAME_R
                    416:   fi
                    417:   if test "$tmp_need_reentrant" = "no"; then
                    418:     CURL_CHECK_NEED_REENTRANT_GETSERVBYPORT_R
                    419:   fi
                    420: ])
                    421: 
                    422: 
                    423: dnl CURL_CHECK_NEED_REENTRANT_SYSTEM
                    424: dnl -------------------------------------------------
                    425: dnl Checks if the preprocessor _REENTRANT definition
                    426: dnl must be unconditionally done for this platform.
                    427: dnl Internal macro for CURL_CONFIGURE_REENTRANT.
                    428: 
                    429: AC_DEFUN([CURL_CHECK_NEED_REENTRANT_SYSTEM], [
                    430:   case $host_os in
                    431:     solaris*)
                    432:       tmp_need_reentrant="yes"
                    433:       ;;
                    434:     *)
                    435:       tmp_need_reentrant="no"
                    436:       ;;
                    437:   esac
                    438: ])
                    439: 
                    440: 
                    441: dnl CURL_CHECK_NEED_THREAD_SAFE_SYSTEM
                    442: dnl -------------------------------------------------
                    443: dnl Checks if the preprocessor _THREAD_SAFE definition
                    444: dnl must be unconditionally done for this platform.
                    445: dnl Internal macro for CURL_CONFIGURE_THREAD_SAFE.
                    446: 
                    447: AC_DEFUN([CURL_CHECK_NEED_THREAD_SAFE_SYSTEM], [
                    448:   case $host_os in
                    449:     aix[[123]].* | aix4.[[012]].*)
                    450:       dnl aix 4.2 and older
                    451:       tmp_need_thread_safe="no"
                    452:       ;;
                    453:     aix*)
                    454:       dnl AIX 4.3 and newer
                    455:       tmp_need_thread_safe="yes"
                    456:       ;;
                    457:     *)
                    458:       tmp_need_thread_safe="no"
                    459:       ;;
                    460:   esac
                    461: ])
                    462: 
                    463: 
                    464: dnl CURL_CONFIGURE_FROM_NOW_ON_WITH_REENTRANT
                    465: dnl -------------------------------------------------
                    466: dnl This macro ensures that configuration tests done
                    467: dnl after this will execute with preprocessor symbol
                    468: dnl _REENTRANT defined. This macro also ensures that
                    469: dnl the generated config file defines NEED_REENTRANT
                    470: dnl and that in turn curl_setup.h will define _REENTRANT.
                    471: dnl Internal macro for CURL_CONFIGURE_REENTRANT.
                    472: 
                    473: AC_DEFUN([CURL_CONFIGURE_FROM_NOW_ON_WITH_REENTRANT], [
                    474: AC_DEFINE(NEED_REENTRANT, 1,
                    475:   [Define to 1 if _REENTRANT preprocessor symbol must be defined.])
                    476: cat >>confdefs.h <<_EOF
                    477: #ifndef _REENTRANT
                    478: #  define _REENTRANT
                    479: #endif
                    480: _EOF
                    481: ])
                    482: 
                    483: 
                    484: dnl CURL_CONFIGURE_FROM_NOW_ON_WITH_THREAD_SAFE
                    485: dnl -------------------------------------------------
                    486: dnl This macro ensures that configuration tests done
                    487: dnl after this will execute with preprocessor symbol
                    488: dnl _THREAD_SAFE defined. This macro also ensures that
                    489: dnl the generated config file defines NEED_THREAD_SAFE
                    490: dnl and that in turn curl_setup.h will define _THREAD_SAFE.
                    491: dnl Internal macro for CURL_CONFIGURE_THREAD_SAFE.
                    492: 
                    493: AC_DEFUN([CURL_CONFIGURE_FROM_NOW_ON_WITH_THREAD_SAFE], [
                    494: AC_DEFINE(NEED_THREAD_SAFE, 1,
                    495:   [Define to 1 if _THREAD_SAFE preprocessor symbol must be defined.])
                    496: cat >>confdefs.h <<_EOF
                    497: #ifndef _THREAD_SAFE
                    498: #  define _THREAD_SAFE
                    499: #endif
                    500: _EOF
                    501: ])
                    502: 
                    503: 
                    504: dnl CURL_CONFIGURE_REENTRANT
                    505: dnl -------------------------------------------------
                    506: dnl This first checks if the preprocessor _REENTRANT
                    507: dnl symbol is already defined. If it isn't currently
                    508: dnl defined a set of checks are performed to verify
                    509: dnl if its definition is required to make visible to
                    510: dnl the compiler a set of *_r functions. Finally, if
                    511: dnl _REENTRANT is already defined or needed it takes
                    512: dnl care of making adjustments necessary to ensure
                    513: dnl that it is defined equally for further configure
                    514: dnl tests and generated config file.
                    515: 
                    516: AC_DEFUN([CURL_CONFIGURE_REENTRANT], [
                    517:   AC_PREREQ([2.50])dnl
                    518:   #
                    519:   AC_MSG_CHECKING([if _REENTRANT is already defined])
                    520:   AC_COMPILE_IFELSE([
                    521:     AC_LANG_PROGRAM([[
                    522:     ]],[[
                    523: #ifdef _REENTRANT
                    524:       int dummy=1;
                    525: #else
                    526:       force compilation error
                    527: #endif
                    528:     ]])
                    529:   ],[
                    530:     AC_MSG_RESULT([yes])
                    531:     tmp_reentrant_initially_defined="yes"
                    532:   ],[
                    533:     AC_MSG_RESULT([no])
                    534:     tmp_reentrant_initially_defined="no"
                    535:   ])
                    536:   #
                    537:   if test "$tmp_reentrant_initially_defined" = "no"; then
                    538:     AC_MSG_CHECKING([if _REENTRANT is actually needed])
                    539:     CURL_CHECK_NEED_REENTRANT_SYSTEM
                    540:     if test "$tmp_need_reentrant" = "no"; then
                    541:       CURL_CHECK_NEED_REENTRANT_ERRNO
                    542:     fi
                    543:     if test "$tmp_need_reentrant" = "no"; then
                    544:       CURL_CHECK_NEED_REENTRANT_FUNCTIONS_R
                    545:     fi
                    546:     if test "$tmp_need_reentrant" = "yes"; then
                    547:       AC_MSG_RESULT([yes])
                    548:     else
                    549:       AC_MSG_RESULT([no])
                    550:     fi
                    551:   fi
                    552:   #
                    553:   AC_MSG_CHECKING([if _REENTRANT is onwards defined])
                    554:   if test "$tmp_reentrant_initially_defined" = "yes" ||
                    555:     test "$tmp_need_reentrant" = "yes"; then
                    556:     CURL_CONFIGURE_FROM_NOW_ON_WITH_REENTRANT
                    557:     AC_MSG_RESULT([yes])
                    558:   else
                    559:     AC_MSG_RESULT([no])
                    560:   fi
                    561:   #
                    562: ])
                    563: 
                    564: 
                    565: dnl CURL_CONFIGURE_THREAD_SAFE
                    566: dnl -------------------------------------------------
                    567: dnl This first checks if the preprocessor _THREAD_SAFE
                    568: dnl symbol is already defined. If it isn't currently
                    569: dnl defined a set of checks are performed to verify
                    570: dnl if its definition is required. Finally, if
                    571: dnl _THREAD_SAFE is already defined or needed it takes
                    572: dnl care of making adjustments necessary to ensure
                    573: dnl that it is defined equally for further configure
                    574: dnl tests and generated config file.
                    575: 
                    576: AC_DEFUN([CURL_CONFIGURE_THREAD_SAFE], [
                    577:   AC_PREREQ([2.50])dnl
                    578:   #
                    579:   AC_MSG_CHECKING([if _THREAD_SAFE is already defined])
                    580:   AC_COMPILE_IFELSE([
                    581:     AC_LANG_PROGRAM([[
                    582:     ]],[[
                    583: #ifdef _THREAD_SAFE
                    584:       int dummy=1;
                    585: #else
                    586:       force compilation error
                    587: #endif
                    588:     ]])
                    589:   ],[
                    590:     AC_MSG_RESULT([yes])
                    591:     tmp_thread_safe_initially_defined="yes"
                    592:   ],[
                    593:     AC_MSG_RESULT([no])
                    594:     tmp_thread_safe_initially_defined="no"
                    595:   ])
                    596:   #
                    597:   if test "$tmp_thread_safe_initially_defined" = "no"; then
                    598:     AC_MSG_CHECKING([if _THREAD_SAFE is actually needed])
                    599:     CURL_CHECK_NEED_THREAD_SAFE_SYSTEM
                    600:     if test "$tmp_need_thread_safe" = "yes"; then
                    601:       AC_MSG_RESULT([yes])
                    602:     else
                    603:       AC_MSG_RESULT([no])
                    604:     fi
                    605:   fi
                    606:   #
                    607:   AC_MSG_CHECKING([if _THREAD_SAFE is onwards defined])
                    608:   if test "$tmp_thread_safe_initially_defined" = "yes" ||
                    609:     test "$tmp_need_thread_safe" = "yes"; then
                    610:     CURL_CONFIGURE_FROM_NOW_ON_WITH_THREAD_SAFE
                    611:     AC_MSG_RESULT([yes])
                    612:   else
                    613:     AC_MSG_RESULT([no])
                    614:   fi
                    615:   #
                    616: ])

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>