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 |

Reply via email to