Re: [V2][PATCH] libjpeg-turbo: fix do_compile error on armv5


Andre McCurdy
 

On Thu, Jun 10, 2021 at 2:42 AM Changqing Li <changqing.li@...> wrote:
On 6/10/21 1:29 AM, Andre McCurdy wrote:
[Please note: This e-mail is from an EXTERNAL e-mail address]

On Wed, Jun 9, 2021 at 12:32 AM Changqing Li <changqing.li@...> wrote:
From: Changqing Li <changqing.li@...>

fix below error:
/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"

Neon is not supported by armv5, disable the simd extension build.
Drop this comment. Neon may be missing from other ISA levels too (i.e.
this fix is not specific to armv5).
Get it. Thanks.

Signed-off-by: Changqing Li <changqing.li@...>
---
meta/recipes-graphics/jpeg/libjpeg-turbo_2.1.0.bb | 2 ++
1 file changed, 2 insertions(+)

diff --git a/meta/recipes-graphics/jpeg/libjpeg-turbo_2.1.0.bb b/meta/recipes-graphics/jpeg/libjpeg-turbo_2.1.0.bb
index 7f91cc02ac..da21971113 100644
--- a/meta/recipes-graphics/jpeg/libjpeg-turbo_2.1.0.bb
+++ b/meta/recipes-graphics/jpeg/libjpeg-turbo_2.1.0.bb
@@ -40,6 +40,8 @@ EXTRA_OECMAKE_append_class-target = " ${@bb.utils.contains("TUNE_FEATURES", "mx3
# Work around missing non-floating point ABI support in MIPS
EXTRA_OECMAKE_append_class-target = " ${@bb.utils.contains("MIPSPKGSFX_FPU", "-nf", "-DWITH_SIMD=False", "", d)}"

+EXTRA_OECMAKE_append_class-target = " ${@ ('') if (d.getVar('TUNE_CCARGS_MFPU') != '') else '-DWITH_SIMD=False'}"
Shouldn't this be checking for neon in TUNE_FEATURES rather than
TUNE_CCARGS_MFPU?
Refer feature-arm-vfp.inc:

TUNE_CCARGS_MFLOAT = "${@ bb.utils.contains('TUNE_FEATURES',
'callconvention-hard', 'hard', 'softfp', d) if
(d.getVar('TUNE_CCARGS_MFPU') != '') else '' }"

TUNE_CCARGS .= "${@ ' -mfloat-abi=${TUNE_CCARGS_MFLOAT}' if
(d.getVar('TUNE_CCARGS_MFLOAT') != '') else ''}"


There are condition that neon is not in TUNE_FEATURES, but vfp is in it.
so TUNE_CCARGS may append -mfloat-abi=softfp, then

simd module here can be compiled sucessfully.
The SIMD code can only be used on targets which support neon. There
may be other cases where the code can be compiled but if it can never
be used at run time it's not very useful.

It should also probably be conditional on the _arm
over-ride since neon will be missing from
TUNE_CCARGS_MFPU/TUNE_FEATURES for other architectures.Since big
endian ARM doesn't use the _arm over-ride you will also need a
duplicate line with the same logic with the _armeb override too. See
the lines below which do the equivalent for _powerpc / _powerpc64 as a
reference.
ok. thanks.


# Provide a workaround if Altivec unit is not present in PPC
EXTRA_OECMAKE_append_class-target_powerpc = " ${@bb.utils.contains("TUNE_FEATURES", "altivec", "", "-DWITH_SIMD=False", d)}"
EXTRA_OECMAKE_append_class-target_powerpc64 = " ${@bb.utils.contains("TUNE_FEATURES", "altivec", "", "-DWITH_SIMD=False", d)}"
--
2.17.1



Join openembedded-core@lists.openembedded.org to automatically receive all group messages.