[Buildroot] [PATCH] package/mesa3d: add dependency on elfutils to r600 with llvm

Thomas Petazzoni thomas.petazzoni at bootlin.com
Tue Apr 10 21:33:36 UTC 2018


Hello,

On Tue, 10 Apr 2018 18:21:26 +0200, Valentin Korenblit wrote:

> > I don't understand why you have two mutually exclusive options here.
> > Why not instead have a sub-option ?  
> 
> I did this because once you have activated llvm support for Mesa, if
> you select Gallium R600 drivers, they will also need to be compiled
> with llvm support, which requires elfutils and AMDGPU backend as dependencies.

Aah, OK, I understand. This is really crappy (in Mesa3D).

> radeon_llvm_check() in configure.ac from Mesa adds these dependencies.
> 
> Another possibility without creating a new option would be:
> 
> config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600
>      bool "Gallium Radeon R600 driver"
>      depends on BR2_i386 || BR2_x86_64
>      depends on (!BR2_PACKAGE_MESA3D_LLVM || \
>                  (BR2_PACKAGE_MESA3D_LLVM && (BR2_TOOLCHAIN_USES_UCLIBC || \
> 		BR2_TOOLCHAIN_USES_GLIBC))  # elfutils
>      select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
>      select BR2_PACKAGE_LIBDRM_RADEON
>      select BR2_PACKAGE_LLVM_AMDGPU if BR2_PACKAGE_MESA3D_LLVM
>      select BR2_PACKAGE_ELFUTILS if BR2_PACKAGE_MESA3D_LLVM
>      select BR2_PACKAGE_MESA3D_NEEDS_XA
>      help
>        Driver for ATI/AMD Radeon R600/R700/HD5000/HD6000 GPUs.
>   
> comment "R600 driver needs a uClibc or glibc toolchain w/ llvm support"
>          depends on BR2_PACKAGE_MESA3D_LLVM
> 
>          depends on !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC)

This seems like the good solution to me.

Note that there is some work going on to make elfutils compatible with
musl: https://sourceware.org/bugzilla/show_bug.cgi?id=21002, but it
doesn't seem to be ready yet, so in the mean time what you propose
looks good to me.

I think the Config.in comment should be:

comment "R600 driver needs a uClibc or glibc toolchain when llvm is enabled"

I think the "w/ llvm support" that you proposed can be confusing: to me
it means "you need a toolchain with LLVM support". But it's not what's
happening. What's happening is: "if you have enabled LLVM support, then
your toolchain must be using glibc or uClibc".

In addition to the Config.in comment itself, a regular comment would be
good to explain what's going on, because it's really weird.

Best regards,

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
https://bootlin.com


More information about the buildroot mailing list