cross-compiling gstream for armhf gives Error: selected FPU does not support instruction -- `vmul.f32 q8,q0,q2'
Jonas Danielsson
jonas.danielsson at spiideo.com
Wed Apr 19 11:38:45 UTC 2023
Hello Holger!
When I do this for armv7hf my host_machine section looks like:
[host_machine]
system = 'linux'
cpu_family = 'arm'
cpu = 'armv7hf'
endian = 'little'
The difference being that cpu specifies the target arch rather than
the cpu family.
Does that help?
Regards
Jonas
On Wed, 19 Apr 2023 at 11:35, Holger Böhnke via gstreamer-devel
<gstreamer-devel at lists.freedesktop.org> wrote:
>
> 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
>
>
More information about the gstreamer-devel
mailing list