summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta-oe/recipes-multimedia/libjxl/libjxl/0001-cmake-Do-not-use-mrelax-all-with-clang-on-RISCV64.patch56
-rw-r--r--meta-oe/recipes-multimedia/libjxl/libjxl_0.10.3.bb4
2 files changed, 59 insertions, 1 deletions
diff --git a/meta-oe/recipes-multimedia/libjxl/libjxl/0001-cmake-Do-not-use-mrelax-all-with-clang-on-RISCV64.patch b/meta-oe/recipes-multimedia/libjxl/libjxl/0001-cmake-Do-not-use-mrelax-all-with-clang-on-RISCV64.patch
new file mode 100644
index 0000000000..287dfc8ca8
--- /dev/null
+++ b/meta-oe/recipes-multimedia/libjxl/libjxl/0001-cmake-Do-not-use-mrelax-all-with-clang-on-RISCV64.patch
@@ -0,0 +1,56 @@
1From 0cf439c243dfdb6eee6133ee87172235a42e59c9 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Sat, 14 Sep 2024 22:04:06 +0000
4Subject: [PATCH] cmake: Do not use -mrelax-all with clang on RISCV64
5
6This option causes clang 19+ to crash on riscv64
7
8For RISC-V -mrelax-all causes the assembler stage to convert
9all conditional branches into
10
11 bcc reg, reg, tmplabel
12 jmp target
13tmplabel:
14
15Unconditional jmp can reach targets a lot further than a conditional branch.
16Unfortunately, jmp also has a limited range so sometimes needs to be
17converted to an indirect jump which requires a scratch register.
18We do all branch relaxation early for RISC-V during the compilation
19stage so we can allocate the scratch register.
20
21If the assembler also does branch relaxation it will increase the size
22of the function and may cause unconditional jmps to go out of range.
23If this happens, linking will fail.
24
25Upstream-Status: Submitted [https://github.com/libjxl/libjxl/pull/3826]
26Signed-off-by: Khem Raj <raj.khem@gmail.com>
27---
28 CMakeLists.txt | 2 +-
29 CONTRIBUTORS | 1 +
30 2 files changed, 2 insertions(+), 1 deletion(-)
31
32diff --git a/CMakeLists.txt b/CMakeLists.txt
33index 8b2ccb57..39bee096 100644
34--- a/CMakeLists.txt
35+++ b/CMakeLists.txt
36@@ -335,7 +335,7 @@ else ()
37
38 # Machine flags.
39 add_compile_options(-funwind-tables)
40- if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
41+ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND NOT CMAKE_SYSTEM_PROCESSOR MATCHES "riscv")
42 add_compile_options("SHELL:-Xclang -mrelax-all")
43 endif()
44 if (CXX_CONSTRUCTOR_ALIASES_SUPPORTED)
45diff --git a/CONTRIBUTORS b/CONTRIBUTORS
46index 848096f9..a88c6157 100644
47--- a/CONTRIBUTORS
48+++ b/CONTRIBUTORS
49@@ -10,6 +10,7 @@ Iulia-Maria Comșa
50 Jan Wassenberg
51 Jon Sneyers
52 Jyrki Alakuijala
53+Khem Raj
54 Krzysztof Potempa
55 Lode Vandevenne
56 Luca Versari
diff --git a/meta-oe/recipes-multimedia/libjxl/libjxl_0.10.3.bb b/meta-oe/recipes-multimedia/libjxl/libjxl_0.10.3.bb
index 3b694e0497..6e6e5edfd7 100644
--- a/meta-oe/recipes-multimedia/libjxl/libjxl_0.10.3.bb
+++ b/meta-oe/recipes-multimedia/libjxl/libjxl_0.10.3.bb
@@ -8,7 +8,9 @@ inherit cmake pkgconfig mime
8 8
9DEPENDS = "highway brotli" 9DEPENDS = "highway brotli"
10 10
11SRC_URI = "gitsm://github.com/libjxl/libjxl.git;protocol=https;nobranch=1" 11SRC_URI = "gitsm://github.com/libjxl/libjxl.git;protocol=https;nobranch=1 \
12 file://0001-cmake-Do-not-use-mrelax-all-with-clang-on-RISCV64.patch \
13 "
12 14
13SRCREV = "4a3b22d2600f92d8706fb72d85d52bfee2acbd54" 15SRCREV = "4a3b22d2600f92d8706fb72d85d52bfee2acbd54"
14S = "${WORKDIR}/git" 16S = "${WORKDIR}/git"