package/pixman: fix pixman compilation on riscv

When the riscv vector extension is enabled for pixman, it assumes that
the kernel headers also support riscv vector. Apply a patch that
disables riscv vector in pixman if the Linux headers do not support
COMPAT_HWCAP_ISA_V which pixman requires for vector runtime detection.

This issue exists since pixman 0.44.0, which Buildroot started using
in commit ba2fb599cd.

Fixes:

  http://autobuild.buildroot.net/results/4ecdf5320716ec8b39f09fde3fcbbdcdb557f8ab/

Signed-off-by: Charlie Jenkins <charlie@rivosinc.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
Charlie Jenkins
2025-04-21 14:37:04 -07:00
committed by Thomas Petazzoni
parent 386e6bb479
commit ffc154197d

View File

@@ -0,0 +1,44 @@
From d0045f1fc32635d9629ea9e361631b07d9ca4140 Mon Sep 17 00:00:00 2001
From: Charlie Jenkins <charlie@rivosinc.com>
Date: Mon, 21 Apr 2025 13:08:50 -0700
Subject: [PATCH] RISC-V: Only enable RVV on linux if hwcap headers are
available
Linux 6.4 introduced COMPAT_HWCAP_ISA_V. When trying to compile pixman
against linux headers older than this, pixman will fail to compile
because it assumes COMPAT_HWCAP_ISA_V exists.
During meson configuration, do not enable have_rvv if the platform is
Linux and COMPAT_HWCAP_ISA_V doesn't exist.
Signed-off-by: Charlie Jenkins <charlie@rivosinc.com>
Fixes: 0e424031bda2 ("RISC-V floating point operations")
Upstream: https://gitlab.freedesktop.org/pixman/pixman/-/merge_requests/149
---
meson.build | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/meson.build b/meson.build
index fdea28f..cb10931 100644
--- a/meson.build
+++ b/meson.build
@@ -379,7 +379,15 @@ if not use_rvv.disabled()
}
''',
args : rvv_flags,
- name : 'RISC-V Vector Intrinsic Support')
+ name : 'RISC-V Vector Intrinsic Support') and cc.compiles('''
+ #if defined(__linux__)
+ #include <asm/hwcap.h>
+ #include <sys/auxv.h>
+ COMPAT_HWCAP_ISA_V
+ #endif
+ ''',
+ args : rvv_flags,
+ name: 'RISC-V Vector Linux HWCAP Support')
have_rvv = true
endif
endif
--
2.43.0