[LLVMdev] [lld] lld build needs to have flags that specify what flavor/targets to build ?
alexr at leftfield.org
Wed Oct 8 20:16:22 PDT 2014
On Oct 8, 2014, at 12:52 PM, Rui Ueyama <ruiu at google.com> wrote:
>> On Wed, Oct 8, 2014 at 11:45 AM, Alex Rosenberg <alexr at leftfield.org> wrote:
>> This it totally "armchair quarterbacking," but I am a little frustrated that we've come to conflate flavors and targets.
>> The original intent of flavors was to internally translate each flavor into a neutral lld-native command line syntax. We now have baked in assumptions of behavior based on flavor.
>> If I want to cross-compile from OS X for Windows PECOFF, I don't think it feels correct to use a LINK.EXE command line flavor from OS X and I'd rather use an lld-native flavor.
> What do we get by making each flavor's driver to a translator to the "universal" lld driver? The merit is not obvious to me, while I'm sure we would have to invent a new syntax for the unviersal driver and maintain the extra layer.
As it currently stands, we have no control over the lld command line, only to accept the existing options from the existing flavors of existing products. We should be able to invent our own options based on whatever ideas we implement.
> Another question is that if we make such universal driver, it will support all the options of all flavors in some way, but what combination of the options are allowed? Some option mapping is obvious; for example --verbose in ld and /verbose in link.exe should be mapped to the same option. However, --entry and /entry should not be mapped to the same option, because their semantics are slightly different. If - lazy is given, should it be interpreted as /delayload when linking PECOFF?
Yes, behaviors must be chosen. I don't see much difference here compared with linker scripts vs. ld64's command line versions of those features. In the same way, we need to form a completely capable option set.
> We may be able to answer all the questions. But it's not clear to me what we get from all that efforts.
We get to control our own destiny.
>> On Oct 7, 2014, at 2:22 PM, Shankar Easwaran <shankare at codeaurora.org> wrote:
>> > On 10/7/2014 4:10 PM, Nick Kledzik wrote:
>> >> Shankar,
>> >> Can you give provide a scenario where you want this? I’m not sure what you want here.
>> > a) LLVM could be built just for one target(LLVM_TARGETS_TO_BUILD)
>> > b) With LTO this case might happen more often, where an user would have compiled LLVM just for one architecture and lld would support other architectures that LLVM would not support.
>> > c) Printing all the targets/flavors that the linker currently supports.
>> > On Oct 7, 2014, at 2:03 PM, Shankar Easwaran <shankare at codeaurora.org> wrote:
>> >>> Hi,
>> >>> I think lld needs to have an infrastructure as part of the build process to build specific flavors and specific targets.
>> >> This sounds like you want config-time choices (e.g. build a linker to only support ELF/x86 such as for a JIT).
>> > Yes.
>> >>> For this I was thinking that the Registry expand to consider flavors and targets that are part of the build process.
>> >>> So each flavor/target would register and the Driver would walk through the list of handlers to check if there is a handler defined for that flavor/target.
>> >> This sounds like you want everything decided at runtime (e.g. all flavors registers all readers).
>> > Yes, right.
>> > Shankar Easwaran
>> > --
>> > Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by the Linux Foundation
>> > _______________________________________________
>> > LLVM Developers mailing list
>> > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
>> > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev