ebiggers / libdeflate

Heavily optimized library for DEFLATE/zlib/gzip compression and decompression

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

arm build failure with soft float

ffontaine opened this issue · comments

Here is an other "interesting" build failure raised on arm by buildroot autobuilders:

In file included from /home/autobuild/autobuild/instance-3/output-1/build/libdeflate-1.15/lib/arm/crc32_impl.h:256,
                 from /home/autobuild/autobuild/instance-3/output-1/build/libdeflate-1.15/lib/crc32.c:227:
/home/autobuild/autobuild/instance-3/output-1/host/lib/gcc/arm-buildroot-linux-gnueabi/11.3.0/include/arm_neon.h:31:2: error: #error "NEON intrinsics not available with the soft-float ABI.  Please use -mfloat-abi=softfp or -mfloat-abi=hard"
   31 | #error "NEON intrinsics not available with the soft-float ABI.  Please use -mfloat-abi=softfp or -mfloat-abi=hard"
      |  ^~~~~
In file included from /home/autobuild/autobuild/instance-3/output-1/build/libdeflate-1.15/lib/crc32.c:227:
/home/autobuild/autobuild/instance-3/output-1/build/libdeflate-1.15/lib/arm/crc32_impl.h: In function 'clmul_u32':
/home/autobuild/autobuild/instance-3/output-1/build/libdeflate-1.15/lib/arm/crc32_impl.h:262:9: error: unknown type name 'uint64x2_t'; did you mean 'uint16x2_t'?
  262 |         uint64x2_t res = vreinterpretq_u64_p128(
      |         ^~~~~~~~~~
      |         uint16x2_t

Full build log: http://autobuild.buildroot.org/results/144/1445dcbf676893133f311a92ac21b29237fb75df/build-end.log

This build failure is raised because libdeflate is compiled by buildroot with soft float (i.e. -mfloat-abi=soft).

One way to fix this build failure on buildroot side would be to allow the user to disable neon through a cmake variable when BR2_SOFT_FLOAT is set.

Thanks, this was a bug introduced in v1.15: PMULL intrinsics were accidentally enabled on soft float arm32. Fixed now.