Home | History | Annotate | Download | only in m4
      1 # errno_h.m4 serial 6
      2 dnl Copyright (C) 2004, 2006, 2008, 2009 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 ENOMSG
     14 booboo
     15 #endif
     16 #if !defined EIDRM
     17 booboo
     18 #endif
     19 #if !defined ENOLINK
     20 booboo
     21 #endif
     22 #if !defined EPROTO
     23 booboo
     24 #endif
     25 #if !defined EMULTIHOP
     26 booboo
     27 #endif
     28 #if !defined EBADMSG
     29 booboo
     30 #endif
     31 #if !defined EOVERFLOW
     32 booboo
     33 #endif
     34 #if !defined ENOTSUP
     35 booboo
     36 #endif
     37 #if !defined ESTALE
     38 booboo
     39 #endif
     40 #if !defined ECANCELED
     41 booboo
     42 #endif
     43       ],
     44       [gl_cv_header_errno_h_complete=no],
     45       [gl_cv_header_errno_h_complete=yes])
     46   ])
     47   if test $gl_cv_header_errno_h_complete = yes; then
     48     ERRNO_H=''
     49   else
     50     gl_CHECK_NEXT_HEADERS([errno.h])
     51     ERRNO_H='errno.h'
     52   fi
     53   AC_SUBST([ERRNO_H])
     54   gl_REPLACE_ERRNO_VALUE([EMULTIHOP])
     55   gl_REPLACE_ERRNO_VALUE([ENOLINK])
     56   gl_REPLACE_ERRNO_VALUE([EOVERFLOW])
     57 ])
     58 
     59 # Assuming $1 = EOVERFLOW.
     60 # The EOVERFLOW errno value ought to be defined in <errno.h>, according to
     61 # POSIX.  But some systems (like OpenBSD 4.0 or AIX 3) don't define it, and
     62 # some systems (like OSF/1) define it when _XOPEN_SOURCE_EXTENDED is defined.
     63 # Check for the value of EOVERFLOW.
     64 # Set the variables EOVERFLOW_HIDDEN and EOVERFLOW_VALUE.
     65 AC_DEFUN([gl_REPLACE_ERRNO_VALUE],
     66 [
     67   if test -n "$ERRNO_H"; then
     68     AC_CACHE_CHECK([for ]$1[ value], [gl_cv_header_errno_h_]$1, [
     69       AC_EGREP_CPP([yes],[
     70 #include <errno.h>
     71 #ifdef ]$1[
     72 yes
     73 #endif
     74       ],
     75       [gl_cv_header_errno_h_]$1[=yes],
     76       [gl_cv_header_errno_h_]$1[=no])
     77       if test $gl_cv_header_errno_h_]$1[ = no; then
     78         AC_EGREP_CPP([yes],[
     79 #define _XOPEN_SOURCE_EXTENDED 1
     80 #include <errno.h>
     81 #ifdef ]$1[
     82 yes
     83 #endif
     84           ], [gl_cv_header_errno_h_]$1[=hidden])
     85         if test $gl_cv_header_errno_h_]$1[ = hidden; then
     86           dnl The macro exists but is hidden.
     87           dnl Define it to the same value.
     88           AC_COMPUTE_INT([gl_cv_header_errno_h_]$1, $1, [
     89 #define _XOPEN_SOURCE_EXTENDED 1
     90 #include <errno.h>
     91 /* The following two lines are a workaround against an autoconf-2.52 bug.  */
     92 #include <stdio.h>
     93 #include <stdlib.h>
     94 ])
     95         fi
     96       fi
     97     ])
     98     case $gl_cv_header_errno_h_]$1[ in
     99       yes | no)
    100         ]$1[_HIDDEN=0; ]$1[_VALUE=
    101         ;;
    102       *)
    103         ]$1[_HIDDEN=1; ]$1[_VALUE="$gl_cv_header_errno_h_]$1["
    104         ;;
    105     esac
    106     AC_SUBST($1[_HIDDEN])
    107     AC_SUBST($1[_VALUE])
    108   fi
    109 ])
    110 
    111 dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.
    112 dnl Remove this when we can assume autoconf >= 2.61.
    113 m4_ifdef([AC_COMPUTE_INT], [], [
    114   AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])])
    115 ])
    116