gnu: mesa: Build with llvm on armhf-linux.

* gnu/packages/gl.scm (mesa)[inputs]: Add llvm for all architectures.
[native-inputs]: Add glslang for all architectures.
[arguments]: Adjust configure-flags to give armhf-linux its own
gallium-drivers and enable llvm support. Rewrite portions that no longer
depend on specific architectures to enable flags. Adjust custom
'disable-failing-test phase to skip a test on armhf-linux.
This commit is contained in:
Efraim Flashner 2022-05-27 18:28:44 +03:00
parent 4a53069b38
commit 39227724e8
No known key found for this signature in database
GPG key ID: 41AAE7DCCA3D8351

View file

@ -294,25 +294,15 @@ (define-public mesa
("libxml2" ,libxml2)
("libxrandr" ,libxrandr)
("libxvmc" ,libxvmc)
,@(match (%current-system)
((or "x86_64-linux" "i686-linux" "powerpc64le-linux" "aarch64-linux"
"powerpc-linux" "riscv64-linux")
;; Note: update the 'clang' input of mesa-opencl when bumping this.
`(("llvm" ,llvm-11)))
(_
`()))
;; Note: update the 'clang' input of mesa-opencl when bumping this.
("llvm" ,llvm-11)
("wayland" ,wayland)
("wayland-protocols" ,wayland-protocols)))
(native-inputs
`(("bison" ,bison)
("flex" ,flex)
("gettext" ,gettext-minimal)
,@(match (%current-system)
((or "x86_64-linux" "i686-linux" "powerpc64le-linux" "aarch64-linux"
"powerpc-linux" "riscv64-linux")
`(("glslang" ,glslang)))
(_
`()))
("glslang" ,glslang)
("pkg-config" ,pkg-config)
("python" ,python-wrapper)
("python-libxml2", python-libxml2) ;for OpenGL ES 1.1 and 2.0 support
@ -322,9 +312,12 @@ (define-public mesa
(arguments
`(#:configure-flags
'(,@(match (%current-system)
((or "armhf-linux" "aarch64-linux")
("aarch64-linux"
;; TODO: Fix svga driver for non-Intel architectures.
'("-Dgallium-drivers=etnaviv,freedreno,kmsro,lima,nouveau,panfrost,r300,r600,swrast,tegra,v3d,vc4,virgl"))
("armhf-linux"
;; Freedreno FTBFS when built on a 64-bit machine.
'("-Dgallium-drivers=etnaviv,kmsro,lima,nouveau,panfrost,r300,r600,swrast,tegra,v3d,vc4,virgl"))
((or "powerpc64le-linux" "powerpc-linux" "riscv64-linux")
'("-Dgallium-drivers=nouveau,r300,r600,radeonsi,swrast,virgl"))
(_
@ -356,13 +349,8 @@ (define-public mesa
(_
'("-Dvulkan-drivers=auto")))
;; Enable the Vulkan overlay layer on architectures using llvm.
,@(match (%current-system)
((or "x86_64-linux" "i686-linux" "powerpc64le-linux" "aarch64-linux"
"powerpc-linux" "riscv64-linux")
'("-Dvulkan-layers=device-select,overlay"))
(_
'()))
;; Enable the Vulkan overlay layer on all architectures.
"-Dvulkan-layers=device-select,overlay"
;; Also enable the tests.
"-Dbuild-tests=true"
@ -371,13 +359,11 @@ (define-public mesa
;; from the default dri drivers
,@(match (%current-system)
((or "x86_64-linux" "i686-linux")
'("-Ddri-drivers=i915,i965,nouveau,r200,r100"
"-Dllvm=enabled")) ; default is x86/x86_64 only
((or "powerpc64le-linux" "aarch64-linux" "powerpc-linux" "riscv64-linux")
'("-Ddri-drivers=nouveau,r200,r100"
"-Dllvm=enabled"))
'("-Ddri-drivers=i915,i965,nouveau,r200,r100"))
(_
'("-Ddri-drivers=nouveau,r200,r100"))))
'("-Ddri-drivers=nouveau,r200,r100")))
"-Dllvm=enabled") ; default is x86/x86_64 only
;; XXX: 'debugoptimized' causes LTO link failures on some drivers. The
;; documentation recommends using 'release' for performance anyway.
@ -435,6 +421,10 @@ (define-public mesa
;; The simplest way to skip it is to run a different test instead.
`((substitute* "src/freedreno/ir3/meson.build"
(("disasm\\.c'") "delay.c',\n link_args: ld_args_build_id"))))
("armhf-linux"
;; Disable some of the llvmpipe tests.
`((substitute* "src/gallium/drivers/llvmpipe/meson.build"
(("'lp_test_arit', ") ""))))
(_
'((display "No tests to disable on this architecture.\n"))))))
(add-before 'configure 'fix-dlopen-libnames