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