![Thomas Petazzoni](/assets/img/avatar_default.png)
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 <thomas.petazzoni@free-electrons.com> Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> [Thomas: add a comment above the --enable-arm-simd option, as suggested by Arnout.] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
55 lines
1.7 KiB
Makefile
55 lines
1.7 KiB
Makefile
################################################################################
|
|
#
|
|
# pixman
|
|
#
|
|
################################################################################
|
|
|
|
PIXMAN_VERSION = 0.34.0
|
|
PIXMAN_SOURCE = pixman-$(PIXMAN_VERSION).tar.bz2
|
|
PIXMAN_SITE = http://xorg.freedesktop.org/releases/individual/lib
|
|
PIXMAN_LICENSE = MIT
|
|
PIXMAN_LICENSE_FILES = COPYING
|
|
|
|
PIXMAN_INSTALL_STAGING = YES
|
|
PIXMAN_DEPENDENCIES = host-pkgconf
|
|
HOST_PIXMAN_DEPENDENCIES = host-pkgconf
|
|
|
|
# For 0001-Disable-tests.patch
|
|
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)
|
|
PIXMAN_CONF_OPTS += --disable-arm-iwmmxt
|
|
endif
|
|
|
|
# toolchain gets confused about TLS access through GOT (PIC), so disable TLS
|
|
# movhi r4, %got_hiadj(%tls_ldo(fast_path_cache))
|
|
# {standard input}:172: Error: bad expression
|
|
ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII),y)
|
|
PIXMAN_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -DPIXMAN_NO_TLS"
|
|
endif
|
|
|
|
$(eval $(autotools-package))
|
|
$(eval $(host-autotools-package))
|