1# errno_h.m4 serial 12 2dnl Copyright (C) 2004, 2006, 2008-2012 Free Software Foundation, Inc. 3dnl This file is free software; the Free Software Foundation 4dnl gives unlimited permission to copy and/or distribute it, 5dnl with or without modifications, as long as this notice is preserved. 6 7AC_DEFUN_ONCE([gl_HEADER_ERRNO_H], 8[ 9 AC_REQUIRE([AC_PROG_CC]) 10 AC_CACHE_CHECK([for complete errno.h], [gl_cv_header_errno_h_complete], [ 11 AC_EGREP_CPP([booboo],[ 12#include <errno.h> 13#if !defined ETXTBSY 14booboo 15#endif 16#if !defined ENOMSG 17booboo 18#endif 19#if !defined EIDRM 20booboo 21#endif 22#if !defined ENOLINK 23booboo 24#endif 25#if !defined EPROTO 26booboo 27#endif 28#if !defined EMULTIHOP 29booboo 30#endif 31#if !defined EBADMSG 32booboo 33#endif 34#if !defined EOVERFLOW 35booboo 36#endif 37#if !defined ENOTSUP 38booboo 39#endif 40#if !defined ENETRESET 41booboo 42#endif 43#if !defined ECONNABORTED 44booboo 45#endif 46#if !defined ESTALE 47booboo 48#endif 49#if !defined EDQUOT 50booboo 51#endif 52#if !defined ECANCELED 53booboo 54#endif 55#if !defined EOWNERDEAD 56booboo 57#endif 58#if !defined ENOTRECOVERABLE 59booboo 60#endif 61#if !defined EILSEQ 62booboo 63#endif 64 ], 65 [gl_cv_header_errno_h_complete=no], 66 [gl_cv_header_errno_h_complete=yes]) 67 ]) 68 if test $gl_cv_header_errno_h_complete = yes; then 69 ERRNO_H='' 70 else 71 gl_NEXT_HEADERS([errno.h]) 72 ERRNO_H='errno.h' 73 fi 74 AC_SUBST([ERRNO_H]) 75 AM_CONDITIONAL([GL_GENERATE_ERRNO_H], [test -n "$ERRNO_H"]) 76 gl_REPLACE_ERRNO_VALUE([EMULTIHOP]) 77 gl_REPLACE_ERRNO_VALUE([ENOLINK]) 78 gl_REPLACE_ERRNO_VALUE([EOVERFLOW]) 79]) 80 81# Assuming $1 = EOVERFLOW. 82# The EOVERFLOW errno value ought to be defined in <errno.h>, according to 83# POSIX. But some systems (like OpenBSD 4.0 or AIX 3) don't define it, and 84# some systems (like OSF/1) define it when _XOPEN_SOURCE_EXTENDED is defined. 85# Check for the value of EOVERFLOW. 86# Set the variables EOVERFLOW_HIDDEN and EOVERFLOW_VALUE. 87AC_DEFUN([gl_REPLACE_ERRNO_VALUE], 88[ 89 if test -n "$ERRNO_H"; then 90 AC_CACHE_CHECK([for ]$1[ value], [gl_cv_header_errno_h_]$1, [ 91 AC_EGREP_CPP([yes],[ 92#include <errno.h> 93#ifdef ]$1[ 94yes 95#endif 96 ], 97 [gl_cv_header_errno_h_]$1[=yes], 98 [gl_cv_header_errno_h_]$1[=no]) 99 if test $gl_cv_header_errno_h_]$1[ = no; then 100 AC_EGREP_CPP([yes],[ 101#define _XOPEN_SOURCE_EXTENDED 1 102#include <errno.h> 103#ifdef ]$1[ 104yes 105#endif 106 ], [gl_cv_header_errno_h_]$1[=hidden]) 107 if test $gl_cv_header_errno_h_]$1[ = hidden; then 108 dnl The macro exists but is hidden. 109 dnl Define it to the same value. 110 AC_COMPUTE_INT([gl_cv_header_errno_h_]$1, $1, [ 111#define _XOPEN_SOURCE_EXTENDED 1 112#include <errno.h> 113/* The following two lines are a workaround against an autoconf-2.52 bug. */ 114#include <stdio.h> 115#include <stdlib.h> 116]) 117 fi 118 fi 119 ]) 120 case $gl_cv_header_errno_h_]$1[ in 121 yes | no) 122 ]$1[_HIDDEN=0; ]$1[_VALUE= 123 ;; 124 *) 125 ]$1[_HIDDEN=1; ]$1[_VALUE="$gl_cv_header_errno_h_]$1[" 126 ;; 127 esac 128 AC_SUBST($1[_HIDDEN]) 129 AC_SUBST($1[_VALUE]) 130 fi 131]) 132 133dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in. 134dnl Remove this when we can assume autoconf >= 2.61. 135m4_ifdef([AC_COMPUTE_INT], [], [ 136 AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])]) 137]) 138