~ubuntu-branches/ubuntu/saucy/augeas/saucy

« back to all changes in this revision

Viewing changes to gnulib/m4/stdbool.m4

  • Committer: Bazaar Package Importer
  • Author(s): Micah Anderson
  • Date: 2011-06-09 10:25:27 UTC
  • mfrom: (1.4.1 upstream) (19.1.7 natty)
  • Revision ID: james.westby@ubuntu.com-20110609102527-8l29k1tv6bwnqujq
Tags: 0.8.1-1
* new upstream release
* pull packaging from Ubuntu - new binary package augeas-docs
* change build dependency on naturaldocs to version in Debian
* remove debian/patches/*, no longer needed
* update standards version - no changes
* update libaugeas0 short description to not start with an article
* update debian/libaugeas0.symbols to match upstream changes

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# Check for stdbool.h that conforms to C99.
2
2
 
3
 
dnl Copyright (C) 2002-2006, 2009-2010 Free Software Foundation, Inc.
 
3
dnl Copyright (C) 2002-2006, 2009-2011 Free Software Foundation, Inc.
4
4
dnl This file is free software; the Free Software Foundation
5
5
dnl gives unlimited permission to copy and/or distribute it,
6
6
dnl with or without modifications, as long as this notice is preserved.
7
7
 
 
8
#serial 4
 
9
 
8
10
# Prepare for substituting <stdbool.h> if it is not supported.
9
11
 
10
12
AC_DEFUN([AM_STDBOOL_H],
11
13
[
12
 
  AC_REQUIRE([AC_HEADER_STDBOOL])
 
14
  AC_REQUIRE([AC_CHECK_HEADER_STDBOOL])
13
15
 
14
16
  # Define two additional variables used in the Makefile substitution.
15
17
 
31
33
# AM_STDBOOL_H will be renamed to gl_STDBOOL_H in the future.
32
34
AC_DEFUN([gl_STDBOOL_H], [AM_STDBOOL_H])
33
35
 
34
 
# This macro is only needed in autoconf <= 2.59.  Newer versions of autoconf
35
 
# have this macro built-in.
 
36
# This version of the macro is needed in autoconf <= 2.68.
36
37
 
37
 
AC_DEFUN([AC_HEADER_STDBOOL],
 
38
AC_DEFUN([AC_CHECK_HEADER_STDBOOL],
38
39
  [AC_CACHE_CHECK([for stdbool.h that conforms to C99],
39
40
     [ac_cv_header_stdbool_h],
40
 
     [AC_TRY_COMPILE(
41
 
        [
42
 
          #include <stdbool.h>
43
 
          #ifndef bool
44
 
           "error: bool is not defined"
45
 
          #endif
46
 
          #ifndef false
47
 
           "error: false is not defined"
48
 
          #endif
49
 
          #if false
50
 
           "error: false is not 0"
51
 
          #endif
52
 
          #ifndef true
53
 
           "error: true is not defined"
54
 
          #endif
55
 
          #if true != 1
56
 
           "error: true is not 1"
57
 
          #endif
58
 
          #ifndef __bool_true_false_are_defined
59
 
           "error: __bool_true_false_are_defined is not defined"
60
 
          #endif
61
 
 
62
 
          struct s { _Bool s: 1; _Bool t; } s;
63
 
 
64
 
          char a[true == 1 ? 1 : -1];
65
 
          char b[false == 0 ? 1 : -1];
66
 
          char c[__bool_true_false_are_defined == 1 ? 1 : -1];
67
 
          char d[(bool) 0.5 == true ? 1 : -1];
68
 
          bool e = &s;
69
 
          char f[(_Bool) 0.0 == false ? 1 : -1];
70
 
          char g[true];
71
 
          char h[sizeof (_Bool)];
72
 
          char i[sizeof s.t];
73
 
          enum { j = false, k = true, l = false * true, m = true * 256 };
74
 
          _Bool n[m];
75
 
          char o[sizeof n == m * sizeof n[0] ? 1 : -1];
76
 
          char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
77
 
          #if defined __xlc__ || defined __GNUC__
78
 
           /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0
79
 
              reported by James Lemley on 2005-10-05; see
80
 
              http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
81
 
              This test is not quite right, since xlc is allowed to
82
 
              reject this program, as the initializer for xlcbug is
83
 
              not one of the forms that C requires support for.
84
 
              However, doing the test right would require a run-time
85
 
              test, and that would make cross-compilation harder.
86
 
              Let us hope that IBM fixes the xlc bug, and also adds
87
 
              support for this kind of constant expression.  In the
88
 
              meantime, this test will reject xlc, which is OK, since
89
 
              our stdbool.h substitute should suffice.  We also test
90
 
              this with GCC, where it should work, to detect more
91
 
              quickly whether someone messes up the test in the
92
 
              future.  */
93
 
           char digs[] = "0123456789";
94
 
           int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1);
95
 
          #endif
96
 
          /* Catch a bug in an HP-UX C compiler.  See
97
 
             http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
98
 
             http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
99
 
           */
100
 
          _Bool q = true;
101
 
          _Bool *pq = &q;
102
 
        ],
103
 
        [
104
 
          *pq |= q;
105
 
          *pq |= ! q;
106
 
          /* Refer to every declared value, to avoid compiler optimizations.  */
107
 
          return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
108
 
                  + !m + !n + !o + !p + !q + !pq);
109
 
        ],
 
41
     [AC_COMPILE_IFELSE(
 
42
        [AC_LANG_PROGRAM(
 
43
           [[
 
44
             #include <stdbool.h>
 
45
             #ifndef bool
 
46
              "error: bool is not defined"
 
47
             #endif
 
48
             #ifndef false
 
49
              "error: false is not defined"
 
50
             #endif
 
51
             #if false
 
52
              "error: false is not 0"
 
53
             #endif
 
54
             #ifndef true
 
55
              "error: true is not defined"
 
56
             #endif
 
57
             #if true != 1
 
58
              "error: true is not 1"
 
59
             #endif
 
60
             #ifndef __bool_true_false_are_defined
 
61
              "error: __bool_true_false_are_defined is not defined"
 
62
             #endif
 
63
 
 
64
             struct s { _Bool s: 1; _Bool t; } s;
 
65
 
 
66
             char a[true == 1 ? 1 : -1];
 
67
             char b[false == 0 ? 1 : -1];
 
68
             char c[__bool_true_false_are_defined == 1 ? 1 : -1];
 
69
             char d[(bool) 0.5 == true ? 1 : -1];
 
70
             /* See body of main program for 'e'.  */
 
71
             char f[(_Bool) 0.0 == false ? 1 : -1];
 
72
             char g[true];
 
73
             char h[sizeof (_Bool)];
 
74
             char i[sizeof s.t];
 
75
             enum { j = false, k = true, l = false * true, m = true * 256 };
 
76
             /* The following fails for
 
77
                HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
 
78
             _Bool n[m];
 
79
             char o[sizeof n == m * sizeof n[0] ? 1 : -1];
 
80
             char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
 
81
             /* Catch a bug in an HP-UX C compiler.  See
 
82
                http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
 
83
                http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
 
84
              */
 
85
             _Bool q = true;
 
86
             _Bool *pq = &q;
 
87
           ]],
 
88
           [[
 
89
             bool e = &s;
 
90
             *pq |= q;
 
91
             *pq |= ! q;
 
92
             /* Refer to every declared value, to avoid compiler optimizations.  */
 
93
             return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
 
94
                     + !m + !n + !o + !p + !q + !pq);
 
95
           ]])],
110
96
        [ac_cv_header_stdbool_h=yes],
111
97
        [ac_cv_header_stdbool_h=no])])
112
98
   AC_CHECK_TYPES([_Bool])
113
 
   if test $ac_cv_header_stdbool_h = yes; then
114
 
     AC_DEFINE([HAVE_STDBOOL_H], [1], [Define to 1 if stdbool.h conforms to C99.])
115
 
   fi])
 
99
])