autoconf: detect the broken bool in OpenWatcom 1.8

OpenWatcom 1.8 has a C99 mode, which implements _Bool and
<stdbool.h>.  Unfortunately the implementation is broken, and doesn't
let _Bool be implicitly converted to integer (as required by the C99
spec).  Detect this case in autoconf.
This commit is contained in:
H. Peter Anvin 2009-03-01 13:57:40 -08:00
parent 16a856cd85
commit 1fb908c0db
3 changed files with 26 additions and 1 deletions

24
aclocal.m4 vendored
View File

@ -13,3 +13,27 @@ AC_DEFUN(PA_ADD_CFLAGS,
AC_MSG_RESULT([no])
CFLAGS="$pa_add_cflags__old_cflags")])
dnl --------------------------------------------------------------------------
dnl PA_WORKING_STDBOOL
dnl
dnl See if we have a working <stdbool.h> and bool support; in particular,
dnl OpenWatcom 1.8 has a broken _Bool type that we don't want to use.
dnl --------------------------------------------------------------------------
AC_DEFUN(PA_WORKING_BOOL,
[AC_MSG_CHECKING([if $CC has a working bool type])
AC_COMPILE_IFELSE(
[
#ifndef __cplusplus
#include <stdbool.h>
#endif
int foo(bool x, int y)
{
return x+y;
}
],
[AC_MSG_RESULT([yes])
AC_DEFINE(HAVE_WORKING_BOOL, 1,
[Define to 1 if your compiler has a correct implementation of bool])],
[AC_MSG_RESULT([no])])
])

View File

@ -78,7 +78,7 @@ int vsnprintf(char *, size_t, const char *, va_list);
#endif
#ifndef __cplusplus /* C++ has false, true, bool as keywords */
# ifdef HAVE_STDBOOL_H
# if defined(HAVE_STDBOOL_H) && defined(HAVE_WORKING_BOOL)
# include <stdbool.h>
# else
/* This is sort of dangerous, since casts will behave different than

View File

@ -97,6 +97,7 @@ AC_C_CONST
AC_C_INLINE
AC_C_RESTRICT
AC_TYPE_SIZE_T
PA_WORKING_BOOL
AC_C_BIGENDIAN(AC_DEFINE(WORDS_BIGENDIAN),AC_DEFINE(WORDS_LITTLEENDIAN))
AH_TEMPLATE(WORDS_BIGENDIAN,
[Define to 1 if your processor stores words with the most significant