[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: make fails
Re: make fails
Wed, 10 Jun 2009 10:33:50 +0100
Thunderbird 188.8.131.52 (X11/20071008)
Eric Blake wrote:
> According to peter on 6/9/2009 10:47 AM:
>> I run configure. It runs fine. I compile it, and every instance of
>> a variable not declared at the beginning of a block produces a compiler
>> error. I assume this is some recent modification to the C standard that
>> is certainly reasonable, that the compiler on this machine doesn't have.
> Yes - this is a new requirement of C99 (a standard that is now 10 years
> old, although admittedly slow in the complete uptake by most vendors), but
> not present in C89 (20 years old). If your compiler can't handle
> declarations after statements, it is indeed quite old, and you may want to
> consider upgrading your compiler first.
What compiler are you using as a matter of interest?
>> But what I'm wondering is why doesn't the configure script catch it?
> This has been brought up in the past. The consensus was that it is a
> mechanical patch, but one that we don't want to maintain unless there is a
> high demand for it (so far, there hasn't been).
Right. Requiring C99 would preclude the patch approach.
Note if we were to require it, something like the following might
be too restrictive, since it requires support in autoconf-2.61 for:
"_Bool, // comments, flexible array members, inline,
signed and unsigned long long int, mixed code and declarations,
named initialization of structs, restrict, va_copy, varargs macros,
variable declarations in for loops, and variable length arrays."
In future we might add a test for a subset of those C99 features.
diff --git a/configure.ac b/configure.ac
index 32d2958..cab234b 100644
@@ -35,7 +35,10 @@ AC_CONFIG_HEADERS([lib/config.h:lib/config.hin])
AM_INIT_AUTOMAKE([1.11 dist-xz color-tests parallel-tests])
AM_SILENT_RULES([yes]) # make --enable-silent-rules the default.
+if test "$ac_cv_prog_cc_c99" = no; then
+ AC_MSG_ERROR([Your C compiler cannot compile ISO Standard C (currently C99)])