* [Buildroot] [PATCH] package/jpeg-turbo: fix aarch64 build using an upstream patch
@ 2026-07-26 21:57 Alessandro Rubini
0 siblings, 0 replies; 2+ messages in thread
From: Alessandro Rubini @ 2026-07-26 21:57 UTC (permalink / raw)
To: buildroot
This patch is 3.2.0-8-g0da22762 in the original jpeg-turbo package,
where the committer claims they can't reproduce the problem. Buildroot
is currently using version 3.2.0 of the package.
The build issue I esperience with an aarch64 build (cm4 custom baseboard)
is the following:
spng.c:(.text+0x4d8c): undefined reference to `__fpclassifyf'
The patch actually fixes it.
Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
---
...-Really-remove-gamma-correction-code.patch | 109 ++++++++++++++++++
1 file changed, 109 insertions(+)
create mode 100644 package/jpeg-turbo/0001-libspng-Really-remove-gamma-correction-code.patch
diff --git a/package/jpeg-turbo/0001-libspng-Really-remove-gamma-correction-code.patch b/package/jpeg-turbo/0001-libspng-Really-remove-gamma-correction-code.patch
new file mode 100644
index 0000000000..5dcd95d0b9
--- /dev/null
+++ b/package/jpeg-turbo/0001-libspng-Really-remove-gamma-correction-code.patch
@@ -0,0 +1,109 @@
+From 0da22762971551462cfad8f0b11cfb037472a4e8 Mon Sep 17 00:00:00 2001
+From: DRC <information@libjpeg-turbo.org>
+Date: Thu, 16 Jul 2026 12:09:54 -0400
+Subject: [PATCH] libspng: Really remove gamma correction code
+
+We really don't use it, and fpclassify() apparently introduces yet
+another libm dependency in some cases (although I can't reproduce that.)
+
+Fixes #904
+---
+ src/spng/spng.c | 20 ++++++++++++++++++--
+ 1 file changed, 18 insertions(+), 2 deletions(-)
+
+diff --git a/src/spng/spng.c b/src/spng/spng.c
+index 06249d68..aeadb67e 100644
+--- a/src/spng/spng.c
++++ b/src/spng/spng.c
+@@ -353,9 +353,12 @@ struct spng_ctx
+ int widest_pass;
+ int last_pass; /* last non-empty pass */
+
++#if 0 /* libjpeg-turbo: Eliminate unused gamma correction code, which
++ introduces an unwanted libm dependency */
+ uint16_t *gamma_lut; /* points to either _lut8 or _lut16 */
+ uint16_t *gamma_lut16;
+ uint16_t gamma_lut8[256];
++#endif
+ unsigned char trns_px[8];
+ union spng__decode_plte decode_plte;
+ struct spng_sbit decode_sb;
+@@ -1742,6 +1745,8 @@ static uint16_t sample_to_target(uint16_t sample, unsigned bit_depth, unsigned s
+ return sample;
+ }
+
++#if 0 /* libjpeg-turbo: Eliminate unused gamma correction code, which
++ introduces an unwanted libm dependency */
+ static inline void gamma_correct_row(unsigned char *row, uint32_t pixels, int fmt, const uint16_t *gamma_lut)
+ {
+ uint32_t i;
+@@ -1785,6 +1790,7 @@ static inline void gamma_correct_row(unsigned char *row, uint32_t pixels, int fm
+ }
+ }
+ }
++#endif
+
+ /* Apply transparency to output row */
+ static inline void trns_row(unsigned char *row,
+@@ -3302,7 +3308,10 @@ int spng_decode_scanline(spng_ctx *ctx, void *out, size_t len)
+ const struct spng_subimage *sub = ctx->subimage;
+
+ const struct spng_ihdr *ihdr = &ctx->ihdr;
++#if 0 /* libjpeg-turbo: Eliminate unused gamma correction code, which
++ introduces an unwanted libm dependency */
+ const uint16_t *gamma_lut = ctx->gamma_lut;
++#endif
+ unsigned char *trns_px = ctx->trns_px;
+ const struct spng_sbit *sb = &ctx->decode_sb;
+ const struct spng_plte_entry *plte = ctx->decode_plte.rgba;
+@@ -3529,7 +3538,10 @@ int spng_decode_scanline(spng_ctx *ctx, void *out, size_t len)
+
+ if(f.do_scaling) scale_row(out, width, fmt, processing_depth, sb);
+
++#if 0 /* libjpeg-turbo: Eliminate unused gamma correction code, which
++ introduces an unwanted libm dependency */
+ if(f.apply_gamma) gamma_correct_row(out, width, fmt, gamma_lut);
++#endif
+
+ /* The previous scanline is always defiltered */
+ void *t = ctx->prev_scanline;
+@@ -3768,6 +3780,8 @@ int spng_decode_image(spng_ctx *ctx, void *out, size_t len, int fmt, int flags)
+
+ /*if(f.same_layout && !flags && !f.interlaced) f.zerocopy = 1;*/
+
++#if 0 /* libjpeg-turbo: Eliminate unused gamma correction code, which
++ introduces an unwanted libm dependency */
+ uint16_t *gamma_lut = NULL;
+
+ if(f.apply_gamma)
+@@ -3807,15 +3821,14 @@ int spng_decode_image(spng_ctx *ctx, void *out, size_t len, int fmt, int flags)
+ unsigned i;
+ for(i=0; i < lut_entries; i++)
+ {
+-#if 0 /* libjpeg-turbo: Eliminate libm dependency */
+ float c = pow((float)i / max, exponent) * max;
+-#endif
+ float c = 0.0f;
+ if(c > max) c = max;
+
+ gamma_lut[i] = (uint16_t)c;
+ }
+ }
++#endif
+
+ struct spng_sbit *sb = &ctx->decode_sb;
+
+@@ -5000,7 +5013,10 @@ void spng_ctx_free(spng_ctx *ctx)
+
+ if(!ctx->user_owns_out_png) spng__free(ctx, ctx->out_png);
+
++#if 0 /* libjpeg-turbo: Eliminate unused gamma correction code, which
++ introduces an unwanted libm dependency */
+ spng__free(ctx, ctx->gamma_lut16);
++#endif
+
+ spng__free(ctx, ctx->row_buf);
+ spng__free(ctx, ctx->scanline_buf);
+--
+2.47.3
+
--
2.47.3
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-07-27 5:16 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <amaCxq1lFi8rsIyJ__7967.02165841765$1785105510$gmane$org@arcana.i.gnudd.com>
2026-07-27 5:15 ` [Buildroot] [PATCH] package/jpeg-turbo: fix aarch64 build using an upstream patch Bernd Kuhls
2026-07-26 21:57 Alessandro Rubini
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox