On Thu, Jul 03, 2025 at 10:38:23PM +0200, Christian Melki wrote:
> On 6/27/25 12:41 PM, Michael Olbrich wrote:
> > On Mon, Jun 16, 2025 at 08:21:08PM +0200, Christian Melki wrote:
> >> https://sourceforge.net/p/libpng/code/ci/libpng16/tree/CHANGES
> >>
> >> * Add RISC-V vector option.
> >>
> >> * Re-add lost ARM NEON optimization. I removed this, misunderstanding
> >> the work done. This can be enabled for ARM64 where NEON
> >> is an unconditional addition. I think it also could be enabled
> >> for ARM NEON capable hard-float and soft-fp (not soft-float).
> >>
> >> * Disable the automatic optimization. It seems to not get the ARM
> >> NEON case right.
> >
> > What exactly did not work for you?
> >
> > So I looked at that stuff, and I think, the correct way to handle this is
> > to _not_ specify --{en,dis}able-hardware-optimizations at all and then use
> > --enable-arm-neon=$(call ptx/ifdef, PTXCONF_ARCH_ARM_NEON,api,no)
> >
> > Does that work in your case?
> >
> > Michael
> >
>
> I think the ARM neon case is slightly more complex than it looks.
> If I enable it, it breaks on my builds. Maybe I need a way to discern if
> the toolchain is generating hard floats or soft-fp with neon or not?
Right, so you have a softfp toolchain with NEON, right?
Does this work:
diff --git a/rules/libpng.make b/rules/libpng.make
index 824974289782..ac8d1faf9dcc 100644
--- a/rules/libpng.make
+++ b/rules/libpng.make
@@ -33,16 +33,21 @@ LIBPNG_LICENSE_FILES := \
LIBPNG_WRAPPER_BLACKLIST := TARGET_DEBUG_FULL
+LIBPNG_NEON = $(PTXCONF_ARCH_ARM_NEON)
+ifdef PTXCONF_ARCH_ARMV7_NEON
+# NEON with softfp is broken
+LIBPNG_NEON = $(if $(filter softfp,$(shell ptxd_cross_cc_v | sed -n
"s/COLLECT_GCC_OPTIONS=.*'-mfloat-abi=\([^']*\)'.*/\1/p" | tail -n1)),,y)
+endif
+
LIBPNG_CONF_TOOL:= autoconf
-LIBPNG_CONF_OPT := \
+LIBPNG_CONF_OPT = \
$(CROSS_AUTOCONF_USR) \
--disable-tests \
--disable-tools \
--enable-unversioned-links \
--enable-unversioned-libpng-pc \
--enable-unversioned-libpng-config \
- --disable-hardware-optimizations \
- --$(call ptx/endis, PTXCONF_ARCH_ARM64)-arm-neon \
+ --enable-arm-neon=$(call ptx/ifdef, LIBPNG_NEON,api,no) \
--disable-mips-msa \
--disable-mips-mmi \
--$(call ptx/endis, PTXCONF_ARCH_X86)-intel-sse \
Michael
> Not sure how to formulate it, that's why the update ignores ARM for now.
>
> Christian
>
> >> Signed-off-by: Christian Melki <[email protected]>
> >> ---
> >> rules/libpng.make | 7 +++++--
> >> 1 file changed, 5 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/rules/libpng.make b/rules/libpng.make
> >> index 07c6ea99b..824974289 100644
> >> --- a/rules/libpng.make
> >> +++ b/rules/libpng.make
> >> @@ -16,8 +16,8 @@ PACKAGES-$(PTXCONF_LIBPNG) += libpng
> >> #
> >> # Paths and names
> >> #
> >> -LIBPNG_VERSION := 1.6.48
> >> -LIBPNG_MD5 := 6ddbe2107e3811d51da698794b8fb4a2
> >> +LIBPNG_VERSION := 1.6.49
> >> +LIBPNG_MD5 := 66c58f211e8e9fc66e621965960df19c
> >> LIBPNG := libpng-$(LIBPNG_VERSION)
> >> LIBPNG_SUFFIX := tar.xz
> >> LIBPNG_URL := $(call ptx/mirror, SF,
> >> libpng/$(LIBPNG).$(LIBPNG_SUFFIX))
> >> @@ -41,11 +41,14 @@ LIBPNG_CONF_OPT := \
> >> --enable-unversioned-links \
> >> --enable-unversioned-libpng-pc \
> >> --enable-unversioned-libpng-config \
> >> + --disable-hardware-optimizations \
> >> + --$(call ptx/endis, PTXCONF_ARCH_ARM64)-arm-neon \
> >> --disable-mips-msa \
> >> --disable-mips-mmi \
> >> --$(call ptx/endis, PTXCONF_ARCH_X86)-intel-sse \
> >> --disable-powerpc-vsx \
> >> --disable-loongarch-lsx \
> >> + --$(call ptx/endis, PTXCONF_ARCH_RISCV)-riscv-rvv \
> >> --with-binconfigs
> >>
> >> #
> >> ----------------------------------------------------------------------------
> >> --
> >> 2.34.1
> >>
> >>
> >>
> >
>
>
>
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |