cross-compiling gstream for armhf gives Error: selected FPU does not support instruction -- `vmul.f32 q8,q0,q2'

Holger Böhnke gstreamer at biz.amarin.de
Wed Apr 19 09:28:20 UTC 2023


Hi,

I try to x-compile gstreamer for an embedded arm (32) device, roughly 
(using the monorepo instead) following this tutorial:

https://www.collabora.com/news-and-blog/blog/2020/05/15/cross-compiling-with-gst-build-and-gstreamer/

For some reason it chokes on compiling *libavutil_arm_float_dsp_neon.S*.

[5/2396] Compiling C object 
subprojects/FFmpeg/libavutil-static.a.p/libavutil_arm_float_dsp_neon.S.o
FAILED: 
subprojects/FFmpeg/libavutil-static.a.p/libavutil_arm_float_dsp_neon.S.o
arm-linux-gnueabihf-gcc -Isubprojects/FFmpeg/libavutil-static.a.p 
-Isubprojects/FFmpeg -I../subprojects/FFmpeg -fdiagnostics-color=always 
-D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -std=c99 -O2 -g 
-D_ISOC99_SOURCE -D_GNU_SOURCE -D_LARGEFILE_SOURCE -DPIC 
-Wno-parentheses -Wno-pointer-sign -Wno-switch -Wno-format-truncation 
-Wno-deprecated-declarations -Wno-unused-function 
-Wno-maybe-uninitialized -Wno-discarded-qualifiers -Wno-unused-variable 
-Wno-bool-operation -Wno-incompatible-pointer-types -Wno-address 
-D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -mthumb -fPIC -pthread 
-DHAVE_AV_CONFIG_H -DBUILDING_avutil -MD -MQ 
subprojects/FFmpeg/libavutil-static.a.p/libavutil_arm_float_dsp_neon.S.o 
-MF 
subprojects/FFmpeg/libavutil-static.a.p/libavutil_arm_float_dsp_neon.S.o.d 
-o 
subprojects/FFmpeg/libavutil-static.a.p/*libavutil_arm_float_dsp_neon.S*.o 
-c ../subprojects/FFmpeg/libavutil/arm/float_dsp_neon.S
../subprojects/FFmpeg/libavutil/arm/float_dsp_neon.S: Assembler messages:
../subprojects/FFmpeg/libavutil/arm/float_dsp_neon.S:29: Error: selected 
FPU does not support instruction -- `vmul.f32 q8,q0,q2'
../subprojects/FFmpeg/libavutil/arm/float_dsp_neon.S:30: Error: selected 
FPU does not support instruction -- `vmul.f32 q9,q1,q3'
... many more like this

So apparently the compiler assumes a CPU without neon. If I add the 
appropriate compiler flags manually to the above command it compiles the 
file fine. The question is, how do I tell meson which features my cpu 
has, so the correct compiler flags are passed within the build?

My guess is that I'm missing out on some banality

CPU:

processor       : 0
model name      : ARMv7 Processor rev 10 (v7l)
BogoMIPS        : 6.00
Features        : half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpd32
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x2
CPU part        : 0xc09
CPU revision    : 10

processor       : 1
model name      : ARMv7 Processor rev 10 (v7l)
BogoMIPS        : 6.00
Features        : half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpd32
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x2
CPU part        : 0xc09
CPU revision    : 10

Hardware        : Freescale i.MX6 Quad/DualLite (Device Tree)
Revision        : 0000
Serial          : 0000000000000000

My cross compile file is:

[build_machine]
system = 'linux'
cpu_family = 'x86_64'
cpu = 'x86_64'
endian = 'little'

[binaries]
c = ['arm-linux-gnueabihf-gcc']
cpp = ['arm-linux-gnueabihf-g++']
ar = ['arm-linux-gnueabihf-ar']
pkgconfig = 'pkg-config'
strip = ['arm-linux-gnueabihf-strip']
cmake = ['false']
#pkgconfig = ['arm-linux-gnueabihf-pkg-config']

[host_machine]
system = 'linux'
cpu_family = 'arm'
cpu = 'arm'
endian = 'little'

[properties]
c_args = []
cpp_args = []
objc_args = []
objcpp_args = []
c_link_args = ['-L/sysroot/lib', '-Wl,-rpath-link=/sysroot/lib']
cpp_link_args = ['-L/sysroot/lib', '-Wl,-rpath-link=/sysroot/lib']
objc_link_args = ['-L/sysroot/lib', '-Wl,-rpath-link=/sysroot/lib']
objcpp_link_args = ['-L/sysroot/lib', '-Wl,-rpath-link=/sysroot/lib']
pkg_config_libdir = ['/sysroot/lib/pkgconfig:/sysroot/usr/share/pkgconfig']
sys_root = '/sysroot/'

Thanks

Holger


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20230419/0fa6d625/attachment-0001.htm>


More information about the gstreamer-devel mailing list