AC_PROG_CC_C99 doesn't work on systems which have C99 compiler but non-
C99 libc which lacks stdbool.h.

An example of such a system is Tru64 5.1; the box to which I have access 
doesn't have stdbool.h when using the native C99 compiler. Since my code 
has a workaround for missing stdbool.h, I can compile the code 
successfully if I pass ac_cv_prog_cc_c99= to configure.

GCC uses its own copy of stdbool.h on that system, so AC_PROG_CC_C99 
works if GCC is used.

I suggest omitting #include <stdbool.h> from the test, and using 0 and 1 
instead of false and true. The test already uses _Bool instead of bool, 
and _Bool doesn't need stdbool.h. (People can use AC_HEADER_STDBOOL to 
test usability of stdbool.h.) With these changes, configure works as 
expected on Tru64.

diff --git a/lib/autoconf/c.m4 b/lib/autoconf/c.m4
index 3fa9c04..20e1751 100644
--- a/lib/autoconf/c.m4
+++ b/lib/autoconf/c.m4
@@ -1060,7 +1060,6 @@ AS_IF([test "x$ac_cv_prog_cc_$1" != xno], [$5], 
[$6])
 AC_DEFUN([_AC_PROG_CC_C99],
 [_AC_C_STD_TRY([c99],
 [[#include <stdarg.h>
-#include <stdbool.h>
 #include <stdlib.h>
 #include <wchar.h>
 #include <stdio.h>
@@ -1155,11 +1154,11 @@ test_varargs (const char *format, ...)
 ]],
 [[
   // Check bool.
-  _Bool success = false;
+  _Bool success = 0;

   // Check restrict.
   if (test_restrict ("String literal") == 0)
-    success = true;
+    success = 1;
   char *restrict newvar = "Another string";

   // Check varargs.

-- 
Lasse Collin  |  IRC: Larhzu @ IRCnet & Freenode


Reply via email to