package/mesa3d: add dependency on elfutils to r600 with llvm
PATCH 1/1 package/mesa3d: add dependency on elfutils to r600 with llvm
Gallium R600 needs libelf when mesa is built with llvm support.
As elfutils must be selected only if BR2_PACKAGE_MESA3D_LLVM is set, create a new option BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600_LLVM.
--- package/mesa3d/Config.in | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-)
package/mesa3d/Config.in +16 -1
@@ -97,13 +97,28 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU 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 select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER select BR2_PACKAGE_LIBDRM_RADEON - select BR2_PACKAGE_LLVM_AMDGPU if BR2_PACKAGE_MESA3D_LLVM select BR2_PACKAGE_MESA3D_NEEDS_XA help Driver for ATI/AMD Radeon R600/R700/HD5000/HD6000 GPUs. +config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600_LLVM + bool "Gallium Radeon R600 driver with LLVM support" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_PACKAGE_MESA3D_LLVM + depends on 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 + select BR2_PACKAGE_ELFUTILS + select BR2_PACKAGE_MESA3D_NEEDS_XA + help + Driver for ATI/AMD Radeon R600/R700/HD5000/HD6000 GPUs + with LLVM support. + config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SVGA bool "Gallium vmware svga driver" depends on BR2_i386 || BR2_x86_64
Signature · 1 line
2.14.3
PATCH 1/1 package/mesa3d: add dependency on elfutils to r600 with llvm
Hello Valentin,
package/mesa3d/Config.in config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU · line 100
Quoted 9 lines · Valentin Korenblit
package/mesa3d/Config.in +1
-0@@ -97,13 +97,28 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU 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
Why ?
Quoted 11 lines
package/mesa3d/Config.in +4
-1select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER select BR2_PACKAGE_LIBDRM_RADEON - select BR2_PACKAGE_LLVM_AMDGPU if BR2_PACKAGE_MESA3D_LLVM select BR2_PACKAGE_MESA3D_NEEDS_XA help Driver for ATI/AMD Radeon R600/R700/HD5000/HD6000 GPUs. +config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600_LLVM + bool "Gallium Radeon R600 driver with LLVM support" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_PACKAGE_MESA3D_LLVM
package/mesa3d/Config.in config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU · line 120
Quoted 10 lines
package/mesa3d/Config.in +10
-0+ depends on 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 + select BR2_PACKAGE_ELFUTILS + select BR2_PACKAGE_MESA3D_NEEDS_XA + help + Driver for ATI/AMD Radeon R600/R700/HD5000/HD6000 GPUs + with LLVM support.
I don't understand why you have two mutually exclusive options here. Why not instead have a sub-option ?
Something like:
config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600
bool "Gallium Radeon R600 driver"
depends on BR2_i386 || BR2_x86_64
select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
select BR2_PACKAGE_LIBDRM_RADEON
select BR2_PACKAGE_MESA3D_NEEDS_XA
help
Driver for ATI/AMD Radeon R600/R700/HD5000/HD6000 GPUs.config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600_LLVM
bool "Enable LLVM support in R600 driver"
depends on BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600
depends on BR2_PACKAGE_MESA3D_LLVM
depends on BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC # elfutils select BR2_PACKAGE_LLVM_AMDGPU
select BR2_PACKAGE_ELFUTILS
Best regards,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons) Embedded Linux and Kernel engineering https://bootlin.com
PATCH 1/1 package/mesa3d: add dependency on elfutils to r600 with llvm
Hello Thomas,
Quoted 22 lines · Thomas Petazzoni
Hello Valentin,
package/mesa3d/Config.in config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU · line 100
Quoted 9 lines · Valentin Korenblit
package/mesa3d/Config.in +1
-0@@ -97,13 +97,28 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600 bool "Gallium Radeon R600 driver" depends on BR2_i386 || BR2_x86_64 + depends on !BR2_PACKAGE_MESA3D_LLVMWhy ?
Quoted 7 lines
package/mesa3d/Config.in +0
-1select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER select BR2_PACKAGE_LIBDRM_RADEON - select BR2_PACKAGE_LLVM_AMDGPU if BR2_PACKAGE_MESA3D_LLVM select BR2_PACKAGE_MESA3D_NEEDS_XA help Driver for ATI/AMD Radeon R600/R700/HD5000/HD6000 GPUs.
Quoted 16 lines
Quoted 4 lines
package/mesa3d/Config.in +4
-0+config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600_LLVM + bool "Gallium Radeon R600 driver with LLVM support" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_PACKAGE_MESA3D_LLVMpackage/mesa3d/Config.in config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU · line 120
Quoted 10 lines
package/mesa3d/Config.in +10
-0+ depends on 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 + select BR2_PACKAGE_ELFUTILS + select BR2_PACKAGE_MESA3D_NEEDS_XA + help + Driver for ATI/AMD Radeon R600/R700/HD5000/HD6000 GPUs + with LLVM support.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.
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)
Quoted 19 lines
Something like:
config
BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600bool "Gallium Radeon R600 driver" depends on BR2_i386 || BR2_x86_64 select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER select BR2_PACKAGE_LIBDRM_RADEON select BR2_PACKAGE_MESA3D_NEEDS_XA help Driver for ATI/AMD Radeon R600/R700/HD5000/HD6000 GPUs.config
BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600_LLVM
bool "Enable LLVM support in R600 driver"
depends onBR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600
depends onBR2_PACKAGE_MESA3D_LLVM
depends onBR2_TOOLCHAIN_USES_UCLIBC||BR2_TOOLCHAIN_USES_GLIBC# elfutils selectBR2_PACKAGE_LLVM_AMDGPU
selectBR2_PACKAGE_ELFUTILS
Quoted 3 lines
Best regards,
Thomas
Best regards,
Valentin
PATCH 1/1 package/mesa3d: add dependency on elfutils to r600 with llvm
Hello,
Quoted 6 lines · Valentin Korenblit
Quoted 2 lines
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).
Quoted 18 lines
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 onBR2_i386||BR2_x86_64
depends on (!BR2_PACKAGE_MESA3D_LLVM || \
(BR2_PACKAGE_MESA3D_LLVM&& (BR2_TOOLCHAIN_USES_UCLIBC|| \
BR2_TOOLCHAIN_USES_GLIBC)) # elfutils
selectBR2_PACKAGE_MESA3D_GALLIUM_DRIVER
selectBR2_PACKAGE_LIBDRM_RADEON
selectBR2_PACKAGE_LLVM_AMDGPUifBR2_PACKAGE_MESA3D_LLVMselectBR2_PACKAGE_ELFUTILSifBR2_PACKAGE_MESA3D_LLVMselectBR2_PACKAGE_MESA3D_NEEDS_XA
help
Driver for ATI/AMD Radeon R600/R700/HD5000/HD6000 GPUs.
Quoted 4 lines
comment "R600 driver needs a uClibc or glibc toolchain w/ llvm support"
depends onBR2_PACKAGE_MESA3D_LLVMdepends 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
Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons) Embedded Linux and Kernel engineering https://bootlin.com