Commit | Line | Data |
---|---|---|
c4b681fd | 1 | # errno_h.m4 serial 6 |
61cd9dc9 | 2 | dnl Copyright (C) 2004, 2006, 2008, 2009, 2010 Free Software Foundation, Inc. |
c4b681fd LC |
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 | ]) |