Mail Archives: djgpp/2002/04/20/09:40:43
> and, among others, will substitute CXX and CXXFLAGS variables in
> output files. So it does not detect that in fact there is no working
> C++ compiler. If I remove AC_PROG_CC in this configure script, then
> I get correct error message:
> checking for C++ compiler default output... configure: error: C++
> compiler cannot create executables
> But such a check is missing if there is AC_PROG_CC before AC_PROG_CXX.
>
> I've verified it with DJGPP port of Autoconf 2.50 and Cygwin port of
> Autoconf 2.52.
>
> Is there any fix or workaround? Please CC me on replies and TIA ;)
Actually, Laurynas, it seems that this is perfectly correct behaviour.
From the autoconf docs for AC_PROG_CXX:
Determine a C++ compiler to use. Check if the environment variable
`CXX' or `CCC' (in that order) is set; if so, then set output
variable `CXX' to its value.
Otherwise, if the macro is invoked without an argument, then
search for a C++ compiler under the likely names (first `g++' and
`c++' then other names). If none of those checks succeed, then as
a last resort set `CXX' to `g++'.
This macro may, however, be invoked with an optional first argument
which, if specified, must be a space separated list of C++
compilers to search for. This just gives the user an opportunity
to specify an alternative search list for the C++ compiler. For
example, if you didn't like the default order, then you could
invoke `AC_PROG_CXX' like this:
AC_PROG_CXX(cl KCC CC cxx cc++ xlC aCC c++ g++ egcs gcc)
If using the GNU C++ compiler, set shell variable `GXX' to `yes'.
If output variable `CXXFLAGS' was not already set, set it to `-g
-O2' for the GNU C++ compiler (`-O2' on systems where G++ does not
accept `-g'), or `-g' for other compilers.
Now as a side-effect, the first compiler check (PROG_CC or PROG_CXX)
will also try to determine the executable extension using that compiler.
It is that test that bombs out if you only use PROG_CXX (or use it
first)
on a system without a C++ compiler.
The other effects are as documented: it defaults to g++ if nothing is
found.
As such, I might consider it a bug/misfeature that the EXEEXT test bombs
out - if the compiler being tested doesn't produce valid output (e.g.
because it does not exist), simply let that macro not report a result,
so that a following test (e.g. AC_PROG_CC) can determine it.
- Raw text -