stdbool.m4   [plain text]


# stdbool.m4 serial 3 (gettext-0.12)
dnl Copyright (C) 2001-2003 Free Software Foundation, Inc.
dnl This file is free software, distributed under the terms of the GNU
dnl General Public License.  As a special exception to the GNU General
dnl Public License, this file may be distributed as part of a program
dnl that contains a configuration script generated by Autoconf, under
dnl the same distribution terms as the rest of that program.

dnl From Bruno Haible.
dnl Test whether <stdbool.h> is supported or must be substituted.

AC_DEFUN([gt_STDBOOL_H],
[dnl gcc 2.95.2 has an <stdbool.h> for which both 'true' and 'false' evaluate
dnl to 0 in preprocessor expressions.
dnl HP-UX 11 cc has an <stdbool.h> but the compiler doesn't understand the
dnl type '_Bool' (to which 'bool' expands).
AC_MSG_CHECKING([for stdbool.h])
AC_CACHE_VAL(gt_cv_header_stdbool_h, [
  AC_TRY_COMPILE([#include <stdbool.h>
#if false
int A[-1];
#endif
#define b -1
#if true
#undef b
#define b 1
#endif
int B[b];
bool c;
], [], gt_cv_header_stdbool_h=yes, gt_cv_header_stdbool_h=no)])
AC_MSG_RESULT([$gt_cv_header_stdbool_h])
if test $gt_cv_header_stdbool_h = yes; then
  AC_DEFINE(HAVE_STDBOOL_H, 1,
            [Define if you have a working <stdbool.h> header file.])
  STDBOOL_H=''
else
  STDBOOL_H='stdbool.h'
  AC_MSG_CHECKING([for _Bool type])
  AC_CACHE_VAL(gt_cv_type_Bool, [
    AC_TRY_COMPILE([_Bool x = sizeof (_Bool);], [],
      gt_cv_type_Bool=yes, gt_cv_type_Bool=no)])
  AC_MSG_RESULT([$gt_cv_type_Bool])
  if test $gt_cv_type_Bool = yes; then
    HAVE__BOOL=1
  else
    HAVE__BOOL=0
  fi
  AC_SUBST(HAVE__BOOL)
fi
AC_SUBST(STDBOOL_H)
])