[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 1/6] configure: search generic compilers for use in the tests
From: |
Peter Rosin |
Subject: |
Re: [PATCH 1/6] configure: search generic compilers for use in the tests |
Date: |
Fri, 20 Jan 2012 18:14:14 +0100 |
User-agent: |
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20111105 Thunderbird/8.0 |
Stefano Lattarini skrev 2012-01-20 15:02:
> Hi Peter.
>
> On 01/20/2012 12:56 PM, Peter Rosin wrote:
>> Stefano Lattarini skrev 2012-01-19 14:55:
>>
>> [MEGA-SNIP]
>>
>>> +# Prefer generic compilers to GNU ones when possible. This will ensure
>>> +# more testsuite coverage "in the wild".
>>> +# FIXME: maybe we should a more comprehensive list too look for more
>>> +# FIXME: "exotic" compilers? And what about looking also for the MSVC
>>> +# FIXME: compiler on Cygwin/MinGW systems?
>>> +_AM_COMPILER_CAN_FAIL([AC_PROG_CC([cc gcc])], [CC=false])
>>
>> Looking for MSVC on Cygwin is a definite no, IMHO. MSVC can't produce
>> Cygwin programs (I have never heard of it anyway, maybe with -nodefaultlib
>> and adding a bunch of low level cygwin stuff instead, but I highly doubt
>> it will fly), so it can only be viewed as a cross compiler in that
>> setting. IOW, the same as looking for it on Linux with Wine/binfmt-misc...
>> BTW, that's a good starting point for how Cygwin should be viewed when it
>> comes to build systems; as Linux with Wine and binfmt-misc set up to
>> handle PE stuff.
>>
>> MinGW is another matter...
>>
> Thanks for the detailed information. I'll adjust the FIXME comment
> accordingly.
>
>>> +
>>> +# The list of C++ compilers here has been copied, pasted and edited
>>> +# from `lib/autoconf/c.m4:AC_PROG_CXX' in the Autoconf distribution.
>>> +# Keep it in sync, or better again, find out a way to avoid this code
>>> +# duplication.
>>> +_AM_COMPILER_CAN_FAIL([AC_PROG_CXX(dnl
>>> + [aCC CC cl.exe FCC KCC RCC xlC_r xlC c++ cxx cc++ gpp g++])],
>>> + [CXX=false])
>>
>> I suppose it can be a problem that cl.exe is before g++ on Cygwin or Linux
>> with Wine/binfmt-misc and if MSVC is installed (and visible), when cl.exe
>> is best viewed as a cross compiler in those cases.
>>
> Are you afraid that configure will, in such a setup, automatically (and
> erroneously) determine that we are *not* cross compiling, while in fact
> we are? If yes, I agree that would be problematic. Maybe we could (in
> a follow-up patch) avoid looking for cl.exe if we determine the current
> build system is Cygwin? Ugly, but easy to do (and also correct, I hope).
No, that's not what I'm afraid of. I'm afraid, when $host == $build, that
configure will think that cl.exe is a native compiler. I mean, it's not
as if it's named i686-pc-mingw32-cl.exe just because you are in a Cygwin
shell, and when it is on PATH in a Cygwin setting it will produce
executables that run, and I fear that configure will think the compiler
is fine.
So, I'm not afraid that the cross-or-not heuristic will come up with the
wrong answer. I'm afraid that CC will point to a cross compiler in a
native build, which would be surprising when gcc is on PATH, and probably
even before cl.
I believe the correct thing to do is to only look for cl when $host is the
system cl produces code for. But that's very difficult, as there are cl:s
that produce code for other arches (x64, Itanium). But since I think it's
too hard to do this right, I don't think we should even try. But I also
think that we should only look for cl if we have failed to find gcc/g++,
that way we avoid that particular can of worms in the vast majority of
cases.
Perhaps it's as simple as moving cl.exe over to the end?
>> But I usually don't
>> source my script that adds MSVC to PATH and sets up various other bits
>> needed in the environment when in Cygwin, so cl.exe isn't normally on my
>> PATH so it wouldn't be a problem *for me*. But I think there is an option
>> to add MSVC to the "global" environment though, and if that has been done,
>> it might not be so easy to avoid finding MSVC from Cygwin.
>>
> So the hack I have proposed above might be necessary after all. Damn.
>
> I will await confirmation from you that I have inderstood the situation
> correctly, before proceeding to write a patch.
Ok.
Cheers,
Peter
[PATCH 3/6] test defs: substitute compilers and flags found at configure time, Stefano Lattarini, 2012/01/19
[PATCH 6/6] readme: how to run the testsuite with cross-compilers, Stefano Lattarini, 2012/01/19
[PATCH 4/6] test defs: allow compilers to be auto-selected on user's request, Stefano Lattarini, 2012/01/19
Re: [PATCH 0/6] Merge 'experimental/compilers-for-testsuite' into master, Stefano Lattarini, 2012/01/23