From: Thomas Petazzoni Date: Fri, 26 Aug 2016 20:44:58 +0000 (+0200) Subject: pixman: properly enable/disable ARM optimizations X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2ba72e02b0883e61a11160f0212b51ae1e4d0c70;p=buildroot.git pixman: properly enable/disable ARM optimizations The pixman ARM optimized code assumes that ARM instructions are available. Unfortunately, the configure.ac checks do not detect that the platform is Thumb-only for Cortex-M builds, so it enables the ARM optimizations, leading to failures like: error: /home/test/autobuild/run/instance-3/output/host/usr/arm-buildroot-uclinux-uclibcgnueabi/sysroot/usr/lib/libpixman-1.a(pixman-arm-simd-asm-scaled.o): Conflicting CPU architectures 13/1 When building programs linked with pixman on Thumb-only architectures. This is due to the fact that some object files in libpixman-1.a are built for the ARM instruction set. To resolve this, we give better hints to the pixman configure script about which ARM optimizations to use: the ARM SIMD optimizations need at least a CPU that supports ARM instructions, and obviously the ARM NEON optimizations need NEON support. Fixes: http://autobuild.buildroot.net/results/54bee2ce382fcd067965d30f758f9d15514478d9/ Signed-off-by: Thomas Petazzoni Reviewed-by: Arnout Vandecappelle (Essensium/Mind) [Thomas: add a comment above the --enable-arm-simd option, as suggested by Arnout.] Signed-off-by: Thomas Petazzoni --- diff --git a/package/pixman/pixman.mk b/package/pixman/pixman.mk index 38524e63c4..c797b3e60c 100644 --- a/package/pixman/pixman.mk +++ b/package/pixman/pixman.mk @@ -20,6 +20,23 @@ PIXMAN_AUTORECONF = YES # don't build gtk based demos PIXMAN_CONF_OPTS = --disable-gtk +# The ARM SIMD code from pixman requires a recent enough ARM core, but +# there is a runtime CPU check that makes sure it doesn't get used if +# the HW doesn't support it. The only case where the ARM SIMD code +# cannot be *built* at all is when the platform doesn't support ARM +# instructions at all, so we have to disable that explicitly. +ifeq ($(BR2_ARM_CPU_HAS_ARM),y) +PIXMAN_CONF_OPTS += --enable-arm-simd +else +PIXMAN_CONF_OPTS += --disable-arm-simd +endif + +ifeq ($(BR2_ARM_CPU_HAS_ARM)$(BR2_ARM_CPU_HAS_NEON),yy) +PIXMAN_CONF_OPTS += --enable-arm-neon +else +PIXMAN_CONF_OPTS += --disable-arm-neon +endif + # disable iwmmxt support for CPU's that don't have # this feature ifneq ($(BR2_iwmmxt),y)