[Buildroot] [RFC PATCH v2 05/30] llvm: add config to build backend for host arch
Romain Naour
romain.naour at smile.fr
Thu Nov 7 21:22:40 UTC 2019
Hi Thomas,
Le 05/11/2019 à 13:02, Thomas Preston a écrit :
> +Romain Naour, as we discussed this on the #buildroot channel yesterday.
>
> Hi all,
>
> On 19/10/2019 23:20, Arnout Vandecappelle wrote:
>> On 20/10/2019 00:04, Arnout Vandecappelle wrote:
>>> On 17/10/2019 17:29, Michael Drake wrote:
>>>> From: Joseph Kogut <joseph.kogut at gmail.com>
>>> We need a bit more explanation why this option is useful/needed.
>>>
>>>> Signed-off-by: Joseph Kogut <joseph.kogut at gmail.com>
>>>> Signed-off-by: Michael Drake <michael.drake at codethink.co.uk>
>>>> Signed-off-by: Thomas Preston <thomas.preston at codethink.co.uk>
>>
>> I think I should clarify my review a little...
>>
>> I think this should be split into two patches, where I doubt the second one is
>> relevant:
>>
>> 1. Add the host arch as a target for the host-llvm build. I think this can be
>> done unconditionally, which makes the patch a whole lot simpler.
>>
>> 2. Add a Config.in.host option for llvm. This is only useful if you want to use
>> host-llvm outside of Buildroot, in a post-build/image script. I don't think this
>> is the case.
>>
>> If the patch is reduced to the first bit, then I think the
>> BR2_PACKAGE_HOST_LLVM_HOST_ARCH symbol (the only bit remaining in
>> Config.in.host) should move to Config.in. And the change to the .mk file becomes
>> very simple, as I indicated.
>>
>
> We agree that the above changes simplify this patch, and have rolled them in. Thanks!
>
> We had an issue yesterday where this didn't actually allow LLVM to build for the host
> architecture, but rebuilding all of the LLVM packages fixed that:
>
> host-llvm, host-clang, host-lld
>
> We also have to explicitly use lld, as clang tries to use the
> arm-buildroot-linux-gnueabihf-ld linker. We noticed this is turned off in
> llvm.mk:
>
> HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_LLD=OFF
>
> Is there still a reason for this now that host-lld exists?
For now, lld is not yet used as C and C++ linker. Only the host-lld package was
added but we need to check/modify the infrastructure to be sure to use ldd
instead of the GNU ld.
>
> Many thanks,
> Thomas
>
> P.s. Here is some working output:
>
> $ codethink/docker-run.sh ./output/host/bin/llc --version
>
> LLVM (http://llvm.org/):
> LLVM version 9.0.0
> Optimized build.
> Default target: arm-buildroot-linux-gnueabihf
> Host CPU: znver1
>
> Registered Targets:
> arm - ARM
> armeb - ARM (big endian)
> thumb - Thumb
> thumbeb - Thumb (big endian)
> x86 - 32-bit X86: Pentium-Pro and above
> x86-64 - 64-bit X86: EM64T and AMD64
>
> $ ./codethink/docker-run.sh output/host/bin/clang -target x86_64-linux-gnu -fuse-ld=/mnt/output/host/bin/ld.lld -o hello hello.c
Indeed, you need to provide the -target flag to clang in order to compile for
the host machine. By default clang build for the target.
>
> $ ./hello
> Hello, world
Nice!
Best regards,
Romain
>
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
>
More information about the buildroot
mailing list