Commit 4271f44a authored by Yang Tse's avatar Yang Tse
Browse files

Check if _REENTRANT definition is required to

make errno available as a preprocessor macro.
parent 78d07cb0
Loading
Loading
Loading
Loading
+57 −2
Original line number Original line Diff line number Diff line
#***************************************************************************
#***************************************************************************
# $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
+57 −2
Original line number Original line Diff line number Diff line
@@ -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