Home | History | Annotate | Download | only in m4
      1 # errno_h.m4 serial 12
      2 dnl Copyright (C) 2004, 2006, 2008-2012 Free Software Foundation, Inc.
      3 dnl This file is free software; the Free Software Foundation
      4 dnl gives unlimited permission to copy and/or distribute it,
      5 dnl with or without modifications, as long as this notice is preserved.
      6 
      7 AC_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
     14 booboo
     15 #endif
     16 #if !defined ENOMSG
     17 booboo
     18 #endif
     19 #if !defined EIDRM
     20 booboo
     21 #endif
     22 #if !defined ENOLINK
     23 booboo
     24 #endif
     25 #if !defined EPROTO
     26 booboo
     27 #endif
     28 #if !defined EMULTIHOP
     29 booboo
     30 #endif
     31 #if !defined EBADMSG
     32 booboo
     33 #endif
     34 #if !defined EOVERFLOW
     35 booboo
     36 #endif
     37 #if !defined ENOTSUP
     38 booboo
     39 #endif
     40 #if !defined ENETRESET
     41 booboo
     42 #endif
     43 #if !defined ECONNABORTED
     44 booboo
     45 #endif
     46 #if !defined ESTALE
     47 booboo
     48 #endif
     49 #if !defined EDQUOT
     50 booboo
     51 #endif
     52 #if !defined ECANCELED
     53 booboo
     54 #endif
     55 #if !defined EOWNERDEAD
     56 booboo
     57 #endif
     58 #if !defined ENOTRECOVERABLE
     59 booboo
     60 #endif
     61 #if !defined EILSEQ
     62 booboo
     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.
     87 AC_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[
     94 yes
     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[
    104 yes
    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 
    133 dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.
    134 dnl Remove this when we can assume autoconf >= 2.61.
    135 m4_ifdef([AC_COMPUTE_INT], [], [
    136   AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])])
    137 ])
    138