mirror of
https://github.com/netwide-assembler/nasm.git
synced 2025-09-22 10:43:39 -04:00
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:
24
aclocal.m4
vendored
24
aclocal.m4
vendored
@@ -13,3 +13,27 @@ AC_DEFUN(PA_ADD_CFLAGS,
|
|||||||
AC_MSG_RESULT([no])
|
AC_MSG_RESULT([no])
|
||||||
CFLAGS="$pa_add_cflags__old_cflags")])
|
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])])
|
||||||
|
])
|
||||||
|
|
||||||
|
@@ -78,7 +78,7 @@ int vsnprintf(char *, size_t, const char *, va_list);
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __cplusplus /* C++ has false, true, bool as keywords */
|
#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>
|
# include <stdbool.h>
|
||||||
# else
|
# else
|
||||||
/* This is sort of dangerous, since casts will behave different than
|
/* This is sort of dangerous, since casts will behave different than
|
||||||
|
@@ -97,6 +97,7 @@ AC_C_CONST
|
|||||||
AC_C_INLINE
|
AC_C_INLINE
|
||||||
AC_C_RESTRICT
|
AC_C_RESTRICT
|
||||||
AC_TYPE_SIZE_T
|
AC_TYPE_SIZE_T
|
||||||
|
PA_WORKING_BOOL
|
||||||
AC_C_BIGENDIAN(AC_DEFINE(WORDS_BIGENDIAN),AC_DEFINE(WORDS_LITTLEENDIAN))
|
AC_C_BIGENDIAN(AC_DEFINE(WORDS_BIGENDIAN),AC_DEFINE(WORDS_LITTLEENDIAN))
|
||||||
AH_TEMPLATE(WORDS_BIGENDIAN,
|
AH_TEMPLATE(WORDS_BIGENDIAN,
|
||||||
[Define to 1 if your processor stores words with the most significant
|
[Define to 1 if your processor stores words with the most significant
|
||||||
|
Reference in New Issue
Block a user