[LLVMdev] [RFC] Ideas on improving Compiler-RT CMake
Duncan P. N. Exon Smith
dexonsmith at apple.com
Wed Jun 3 13:42:54 PDT 2015
> On 2015-Jun-03, at 12:57, Chris Bieneman <beanz at apple.com> wrote:
>
>
>> On Jun 2, 2015, at 6:29 PM, Richard Smith <richard at metafoo.co.uk> wrote:
>>
>> On 2 Jun 2015 2:04 pm, "Jonathan Roelofs" <jonathan at codesourcery.com> wrote:
>> >
>> >
>> >
>> > On 6/2/15 2:38 PM, Duncan P. N. Exon Smith wrote:
>> >>
>> >>
>> >>> On 2015-Jun-01, at 19:47, Chris Bieneman <beanz at apple.com> wrote:
>> >>>
>> >>>> If we drop support for building compiler-rt with GCC, this gets even simpler. Compiler-rt is *Clang's* runtime library, after all.
>> >>>
>> >>>
>> >>> I don’t know if it is on the table to drop supporting compiler-rt with GCC, but that would dramatically simplify things.
>> >>
>> >>
>> >> Weird, I'd assumed building compiler-rt with something other than
>> >> clang was unsupported. Maybe I'm missing something, but shouldn't
>> >> the only supported configuration be building with the just-built
>> >> clang?
>> >
>> >
>> > The current default for an in-tree build is to build compiler-rt with whatever compiler is being used to build Clang... sometimes that compiler is GCC.
>> >
>> > I agree though. We should always use the just-built Clang, and have that behavior be opt-out (if folks need it), instead of opt-in as it is now.
>>
>> What would the build system do for a cross compile of Clang?
>>
> This is the big question right? If we decide to only support building compiler-rt with the just-built clang that inherently means that you always have to build a clang that can run on host, so cross-compiling clang means building for host first, then the target.
>
> I don’t think that is the behavior we want.
Why not?
> I suspect the behavior we probably want is to use the just-built clang by default unless you are cross-compiling, in which case use the host compiler.
This sounds reasonable (and would obviously be a big improvement), but
I'm interested in what the arguments are against the above/below.
Another option that seems superficially reasonable to me:
- Only support building compiler-RT with the "matching" clang.
- When cross-compiling clang, only support the same version of clang
as the host (and use the host compiler). In other words, when
cross-compiling, only support a two-stage build, where the first
stage builds a host clang, and the second stage builds the cross
clang.
- When not cross-compiling, always use the just-built clang.
> Whether or not the host compiler needs to be clang, or any version restrictions we want to apply is a separate issue.
More information about the llvm-dev
mailing list