1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-22 08:08:50 -05:00

Check if _REENTRANT definition is required to

make errno available as a preprocessor macro.
This commit is contained in:
Yang Tse 2009-09-29 16:34:03 +00:00
parent 78d07cb0f9
commit 4271f44a9e
2 changed files with 114 additions and 4 deletions

View File

@ -1,7 +1,7 @@
#*************************************************************************** #***************************************************************************
# $Id$ # $Id$
# #
# Copyright (C) 2008 by Daniel Stenberg et al # Copyright (C) 2008 - 2009 by Daniel Stenberg et al
# #
# Permission to use, copy, modify, and distribute this software and its # Permission to use, copy, modify, and distribute this software and its
# documentation for any purpose and without fee is hereby granted, provided # documentation for any purpose and without fee is hereby granted, provided
@ -16,7 +16,7 @@
#*************************************************************************** #***************************************************************************
# File version for 'aclocal' use. Keep it a single number. # File version for 'aclocal' use. Keep it a single number.
# serial 3 # serial 4
dnl Note 1 dnl Note 1
dnl ------ dnl ------
@ -25,6 +25,58 @@ dnl conditionally include header files. These macros are used early in the
dnl configure process much before header file availability is known. dnl configure process much before header file availability is known.
dnl CARES_CHECK_NEED_REENTRANT_ERRNO
dnl -------------------------------------------------
dnl Checks if the preprocessor _REENTRANT definition
dnl makes errno available as a preprocessor macro.
AC_DEFUN([CARES_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 CARES_CHECK_NEED_REENTRANT_GMTIME_R dnl CARES_CHECK_NEED_REENTRANT_GMTIME_R
dnl ------------------------------------------------- dnl -------------------------------------------------
dnl Checks if the preprocessor _REENTRANT definition dnl Checks if the preprocessor _REENTRANT definition
@ -437,6 +489,9 @@ AC_DEFUN([CARES_CONFIGURE_REENTRANT], [
if test "$tmp_reentrant_initially_defined" = "no"; then if test "$tmp_reentrant_initially_defined" = "no"; then
AC_MSG_CHECKING([if _REENTRANT is actually needed]) AC_MSG_CHECKING([if _REENTRANT is actually needed])
CARES_CHECK_NEED_REENTRANT_SYSTEM CARES_CHECK_NEED_REENTRANT_SYSTEM
if test "$tmp_need_reentrant" = "no"; then
CARES_CHECK_NEED_REENTRANT_ERRNO
fi
if test "$tmp_need_reentrant" = "no"; then if test "$tmp_need_reentrant" = "no"; then
CARES_CHECK_NEED_REENTRANT_FUNCTIONS_R CARES_CHECK_NEED_REENTRANT_FUNCTIONS_R
fi fi

View File

@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___ # | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____| # \___|\___/|_| \_\_____|
# #
# Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al. # Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al.
# #
# This software is licensed as described in the file COPYING, which # This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms # you should have received as part of this distribution. The terms
@ -22,7 +22,7 @@
#*************************************************************************** #***************************************************************************
# File version for 'aclocal' use. Keep it a single number. # File version for 'aclocal' use. Keep it a single number.
# serial 3 # serial 6
dnl Note 1 dnl Note 1
dnl ------ dnl ------
@ -31,6 +31,58 @@ dnl conditionally include header files. These macros are used early in the
dnl configure process much before header file availability is known. 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 CURL_CHECK_NEED_REENTRANT_GMTIME_R
dnl ------------------------------------------------- dnl -------------------------------------------------
dnl Checks if the preprocessor _REENTRANT definition dnl Checks if the preprocessor _REENTRANT definition
@ -443,6 +495,9 @@ AC_DEFUN([CURL_CONFIGURE_REENTRANT], [
if test "$tmp_reentrant_initially_defined" = "no"; then if test "$tmp_reentrant_initially_defined" = "no"; then
AC_MSG_CHECKING([if _REENTRANT is actually needed]) AC_MSG_CHECKING([if _REENTRANT is actually needed])
CURL_CHECK_NEED_REENTRANT_SYSTEM 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 if test "$tmp_need_reentrant" = "no"; then
CURL_CHECK_NEED_REENTRANT_FUNCTIONS_R CURL_CHECK_NEED_REENTRANT_FUNCTIONS_R
fi fi