From 4271f44a9ec2d505bdf506e1959850c35ee756a6 Mon Sep 17 00:00:00 2001 From: Yang Tse Date: Tue, 29 Sep 2009 16:34:03 +0000 Subject: Check if _REENTRANT definition is required to make errno available as a preprocessor macro. --- ares/m4/cares-reentrant.m4 | 59 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 57 insertions(+), 2 deletions(-) (limited to 'ares') diff --git a/ares/m4/cares-reentrant.m4 b/ares/m4/cares-reentrant.m4 index 8962da47c..5793b7791 100644 --- a/ares/m4/cares-reentrant.m4 +++ b/ares/m4/cares-reentrant.m4 @@ -1,7 +1,7 @@ #*************************************************************************** # $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 # 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. -# serial 3 +# serial 4 dnl Note 1 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 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 + ]],[[ + if(0 != errno) + return 1; + ]]) + ],[ + tmp_errno="yes" + ],[ + tmp_errno="no" + ]) + if test "$tmp_errno" = "yes"; then + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([[ +#include + ]],[[ +#ifdef errno + int dummy=1; +#else + force compilation error +#endif + ]]) + ],[ + tmp_errno="errno_macro_defined" + ],[ + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([[ +#define _REENTRANT +#include + ]],[[ +#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 ------------------------------------------------- dnl Checks if the preprocessor _REENTRANT definition @@ -437,6 +489,9 @@ AC_DEFUN([CARES_CONFIGURE_REENTRANT], [ if test "$tmp_reentrant_initially_defined" = "no"; then AC_MSG_CHECKING([if _REENTRANT is actually needed]) 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 CARES_CHECK_NEED_REENTRANT_FUNCTIONS_R fi -- cgit v1.2.3