Home | History | Annotate | Line # | Download | only in m4
      1 # errno_h.m4 serial 14
      2 dnl Copyright (C) 2004, 2006, 2008-2022 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_PREREQ([2.61])
      8 
      9 AC_DEFUN_ONCE([gl_HEADER_ERRNO_H],
     10 [
     11   AC_REQUIRE([AC_PROG_CC])
     12   AC_CACHE_CHECK([for complete errno.h], [gl_cv_header_errno_h_complete], [
     13     AC_EGREP_CPP([booboo],[
     14 #include <errno.h>
     15 #if !defined ETXTBSY
     16 booboo
     17 #endif
     18 #if !defined ENOMSG
     19 booboo
     20 #endif
     21 #if !defined EIDRM
     22 booboo
     23 #endif
     24 #if !defined ENOLINK
     25 booboo
     26 #endif
     27 #if !defined EPROTO
     28 booboo
     29 #endif
     30 #if !defined EMULTIHOP
     31 booboo
     32 #endif
     33 #if !defined EBADMSG
     34 booboo
     35 #endif
     36 #if !defined EOVERFLOW
     37 booboo
     38 #endif
     39 #if !defined ENOTSUP
     40 booboo
     41 #endif
     42 #if !defined ENETRESET
     43 booboo
     44 #endif
     45 #if !defined ECONNABORTED
     46 booboo
     47 #endif
     48 #if !defined ESTALE
     49 booboo
     50 #endif
     51 #if !defined EDQUOT
     52 booboo
     53 #endif
     54 #if !defined ECANCELED
     55 booboo
     56 #endif
     57 #if !defined EOWNERDEAD
     58 booboo
     59 #endif
     60 #if !defined ENOTRECOVERABLE
     61 booboo
     62 #endif
     63 #if !defined EILSEQ
     64 booboo
     65 #endif
     66       ],
     67       [gl_cv_header_errno_h_complete=no],
     68       [gl_cv_header_errno_h_complete=yes])
     69   ])
     70   if test $gl_cv_header_errno_h_complete = yes; then
     71     GL_GENERATE_ERRNO_H=false
     72   else
     73     gl_NEXT_HEADERS([errno.h])
     74     GL_GENERATE_ERRNO_H=true
     75   fi
     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 $GL_GENERATE_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