Wireshark-dev: Re: [Wireshark-dev] [Wireshark-commits] rev 50204: /trunk/ /trunk/: configure.ac
On Jun 28, 2013, at 5:20 AM, Jeff Morriss <jeff.morriss.ws@xxxxxxxxx> wrote:
> On 06/28/13 04:36, guy@xxxxxxxxxxxxx wrote:
>> http://anonsvn.wireshark.org/viewvc/viewvc.cgi?view=rev&revision=50204
>>
>> User: guy
>> Date: 2013/06/28 01:36 AM
>>
>> Log:
>> AC_PROG_CXX doesn't actually check whether what it finds is a real live
>> C++ compiler (it might not be one on, for example, OS X, due to "cc"
>> being a C compiler, "CC" referring to "cc" due to the case-insensitivity
>> of the default OS X file system, and "CC" being one of the names checked
>> for in AC_PROG_CXX), so if we really need a C++ compiler, test it with a
>> program that a C compiler won't compile.
>
> Presumably this change can/should be pushed upstream to the autoconf folks?
Or, at least, suggested. I suspect if you have, on your system, no C compiler, but have a shell script
#! /bin/sh
echo "Hello, world!"
named "cc", AC_PROG_CC will cheerfully choose it as your C compiler.
I've filed a bug on it, but I suggested that this might be a somewhat artificial problem; if you have a UN*X with a case-insensitive file system, you're probably on OS X, and you probably have c++/g++, which will be checked before CC.
This came up when I had a glitch when I did
CC=clang ./configure --with-gtk2 --with-qt
The underlying problem is that
1) in Xcode 4.6.3, llvm-gcc (including g++) doesn't support -Wvla, but clang (including clang++) does;
2) that configuration causes clang to be picked as the C compiler and g++ to be picked as the C++ compiler, and causes the C++ compiler to be used;
3) our "add this option if the compiler supports it" autoconf macro, if not told to add it only to CFLAGS or CXXFLAGS, will check whether the C compiler supports it and, if so, add it both to CFLAGS and CXXFLAGS (i.e., it assumes the C and C++ compilers are siblings).
I forget what I was doing, when debugging that problem, that got me to think we needed to make sure we didn't end up with cc as the C++ compiler.
I'm not sure what we should do about
CC=clang ./configure --with-gtk2 --with-qt
We could make the "add this option if the compiler supports it" test it separately with the C and C++ compilers, and add it to CFLAGS and/or CXXFLAGS based on the results of both tests; that'd fix the -Wvla problem (and other problems of that sort), and might let us simplify the "add this option if the compiler supports it" code (by having a "add this option to CFLAGS if the C compiler supports it" macro, an "add this option to CXXFLAGS if the C++ compiler supports it", and an "add this option to CFLAGS if the C compiler supports it and CXXFLAGS if the C++ compiler supports it" macro that just runs the previous two; the former two can be used for the C-specific and C++-specific options).
It still doesn't warn you that you've only specified one alternative compiler, and probably really wanted to override the default for both, however.