Issue 500 in webp: libwebp compilation error with armv7l / arm32

63 views
Skip to first unread message

suley… via monorail

unread,
Jan 31, 2021, 6:18:48 AM1/31/21
to webp-d...@webmproject.org
Status: New
Owner: ----
Labels: Type-Defect Priority-Medium

New issue 500 by suley...@gmail.com: libwebp compilation error with armv7l / arm32
https://bugs.chromium.org/p/webp/issues/detail?id=500

What steps will reproduce the problem?
1. I get libwebp from https://chromium.googlesource.com/webm/libwebp
2. I generate build instructions with `cmake .` command
3. I build with make

What is the expected output? What do you see instead?
It need to be compiled but due to some problems it cannot compiled. This is bug report from build.
```
[ 57%] Building C object CMakeFiles/webpdsp.dir/src/dsp/lossless_enc.c.o
[ 58%] Building C object CMakeFiles/webpencode.dir/src/enc/picture_psnr_enc.c.o
[ 58%] Building C object CMakeFiles/webpdsp.dir/src/dsp/ssim.c.o
[ 59%] Building C object CMakeFiles/webpdspdecode.dir/src/dsp/lossless_neon.c.o
[ 59%] Building C object CMakeFiles/webpencode.dir/src/enc/picture_rescale_enc.c.o
[ 60%] Building C object CMakeFiles/webpdspdecode.dir/src/dsp/rescaler_neon.c.o
[ 61%] Building C object CMakeFiles/webpdsp.dir/src/dsp/cost_neon.c.o
[ 61%] Building C object CMakeFiles/webpdspdecode.dir/src/dsp/upsampling_neon.c.o
[ 62%] Building C object CMakeFiles/webpencode.dir/src/enc/picture_tools_enc.c.o
[ 63%] Building C object CMakeFiles/webpdsp.dir/src/dsp/enc_neon.c.o
[ 63%] Building C object CMakeFiles/webpdsp.dir/src/dsp/lossless_enc_neon.c.o
[ 64%] Building C object CMakeFiles/webpdspdecode.dir/src/dsp/yuv_neon.c.o
[ 65%] Building C object CMakeFiles/webpencode.dir/src/enc/predictor_enc.c.o
[ 65%] Building C object CMakeFiles/webpencode.dir/src/enc/quant_enc.c.o
[ 66%] Building C object CMakeFiles/webpencode.dir/src/enc/syntax_enc.c.o
In file included from /home/pi/pixart/google/libwebp/src/dsp/quant.h:20,
from /home/pi/pixart/google/libwebp/src/enc/quant_enc.c:18:
/home/pi/pixart/google/libwebp/src/dsp/quant.h: In function ‘horizontal_add_uint32x4’:
/usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h:561:1: error: inlining failed in call to always_inline ‘vadd_u32’: target specific option mismatch
vadd_u32 (uint32x2_t __a, uint32x2_t __b)
^~~~~~~~
In file included from /home/pi/pixart/google/libwebp/src/enc/quant_enc.c:18:
/home/pi/pixart/google/libwebp/src/dsp/quant.h:26:10: note: called from here
return vadd_u32(vreinterpret_u32_u64(vget_low_u64(b)),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vreinterpret_u32_u64(vget_high_u64(b)));
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/pi/pixart/google/libwebp/src/dsp/quant.h:20,
from /home/pi/pixart/google/libwebp/src/enc/quant_enc.c:18:
/usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h:15433:1: error: inlining failed in call to always_inline ‘vreinterpret_u32_u64’: target specific option mismatch
vreinterpret_u32_u64 (uint64x1_t __a)
^~~~~~~~~~~~~~~~~~~~
In file included from /home/pi/pixart/google/libwebp/src/enc/quant_enc.c:18:
/home/pi/pixart/google/libwebp/src/dsp/quant.h:26:10: note: called from here
return vadd_u32(vreinterpret_u32_u64(vget_low_u64(b)),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vreinterpret_u32_u64(vget_high_u64(b)));
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/pi/pixart/google/libwebp/src/dsp/quant.h:20,
from /home/pi/pixart/google/libwebp/src/enc/quant_enc.c:18:
/usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h:7295:1: error: inlining failed in call to always_inline ‘vget_high_u64’: target specific option mismatch
vget_high_u64 (uint64x2_t __a)
^~~~~~~~~~~~~
In file included from /home/pi/pixart/google/libwebp/src/enc/quant_enc.c:18:
/home/pi/pixart/google/libwebp/src/dsp/quant.h:26:10: note: called from here
return vadd_u32(vreinterpret_u32_u64(vget_low_u64(b)),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vreinterpret_u32_u64(vget_high_u64(b)));
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/pi/pixart/google/libwebp/src/dsp/quant.h:20,
from /home/pi/pixart/google/libwebp/src/enc/quant_enc.c:18:
/usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h:15433:1: error: inlining failed in call to always_inline ‘vreinterpret_u32_u64’: target specific option mismatch
vreinterpret_u32_u64 (uint64x1_t __a)
^~~~~~~~~~~~~~~~~~~~
In file included from /home/pi/pixart/google/libwebp/src/enc/quant_enc.c:18:
/home/pi/pixart/google/libwebp/src/dsp/quant.h:26:10: note: called from here
return vadd_u32(vreinterpret_u32_u64(vget_low_u64(b)),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vreinterpret_u32_u64(vget_high_u64(b)));
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/pi/pixart/google/libwebp/src/dsp/quant.h:20,
from /home/pi/pixart/google/libwebp/src/enc/quant_enc.c:18:
/usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h:7405:1: error: inlining failed in call to always_inline ‘vget_low_u64’: target specific option mismatch
vget_low_u64 (uint64x2_t __a)
^~~~~~~~~~~~
In file included from /home/pi/pixart/google/libwebp/src/enc/quant_enc.c:18:
/home/pi/pixart/google/libwebp/src/dsp/quant.h:26:10: note: called from here
return vadd_u32(vreinterpret_u32_u64(vget_low_u64(b)),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vreinterpret_u32_u64(vget_high_u64(b)));
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/pi/pixart/google/libwebp/src/dsp/quant.h:20,
from /home/pi/pixart/google/libwebp/src/enc/quant_enc.c:18:
/usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h:3636:1: error: inlining failed in call to always_inline ‘vpaddlq_u32’: target specific option mismatch
vpaddlq_u32 (uint32x4_t __a)
^~~~~~~~~~~
In file included from /home/pi/pixart/google/libwebp/src/enc/quant_enc.c:18:
/home/pi/pixart/google/libwebp/src/dsp/quant.h:25:24: note: called from here
const uint64x2_t b = vpaddlq_u32(a);
^~~~~~~~~~~~~~
make[2]: *** [CMakeFiles/webpencode.dir/build.make:284: CMakeFiles/webpencode.dir/src/enc/quant_enc.c.o] Error 1
make[2]: *** Waiting for unfinished jobs....
[ 66%] Built target webpdsp
make[1]: *** [CMakeFiles/Makefile2:311: CMakeFiles/webpencode.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 66%] Built target webpdspdecode
make: *** [Makefile:130: all] Error 2

```

What version of the product are you using? On what operating system?

OS: Raspbian 10 buster
Kernel: armv7l Linux 5.4.83+
GCC: gcc (Raspbian 8.3.0-6+rpi1) 8.3.0
GLIBC: (Debian GLIBC 2.28-10+rpi1) 2.28
CLANG: 7.0.1-8+rpi3+deb10u2 (tags/RELEASE_701/final)

--
You received this message because:
1. The project was configured to send all issue notifications to this address

You may adjust your notification preferences at:
https://bugs.chromium.org/hosting/settings

jz… via monorail

unread,
Feb 3, 2021, 10:49:06 PM2/3/21
to webp-d...@webmproject.org
Updates:
Cc: vince...@gmail.com
Labels: Needs-Feedback

Comment #1 on issue 500 by jz...@google.com: libwebp compilation error with armv7l / arm32
https://bugs.chromium.org/p/webp/issues/detail?id=500#c1

Thanks for the report. It looks like cmake isn't flagging the neon code properly in this case (-mfpu=neon and one of -mfloat-abi=softfp or -mfloat-abi=hard).
Can you add the output from: make VERBOSE=1 for a failing file?

configure should test for this, could you also try:
./autogen.sh
./configure
Reply all
Reply to author
Forward
0 new messages