flac: fix build issues with e500v2 (gnuspe) toolchain

For a PPC target flac will try to build with altivec optimizations.
Altivec and SPE are mutually exclusive options.  Between flac's
configure choices and the ppce500v2 tune file options we'd end up with
a compile invocation with the following arguments:

-mabi=spe -mspe -mabi=altivec -maltivec

Which would cause the compile to fail due to the mutual exclusion.

Pulled in a patch from the debian SPE port that addresses this issue:

http://lists.alioth.debian.org/pipermail/pkg-multimedia-maintainers/2010-June/010212.html

(From OE-Core rev: 0cb68387f9aca914c603a26e85a2ea405f721f53)

Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Kumar Gala 2011-07-19 12:41:36 -05:00 committed by Richard Purdie
parent 9f952b2349
commit 2097906db6
2 changed files with 77 additions and 2 deletions

View File

@ -0,0 +1,74 @@
From f9b017c2c958d968cc5dfd36dc68fc8e5fb89a58 Mon Sep 17 00:00:00 2001
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date: Fri, 11 Jun 2010 09:48:58 +0200
Subject: [PATCH] No AltiVec on SPE
Consider *gnuspe which matches powerpc-unknown-linux-gnuspe where
AltiVec is not available at all. This triplet uses SPE which is
incompatible with AltiVec shares the same opcode range and can't be used
at all.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
configure.in | 8 ++++++++
src/libFLAC/Makefile.am | 10 +++++++++-
2 files changed, 17 insertions(+), 1 deletions(-)
diff --git a/configure.in b/configure.in
index bfa6d8e..17b7c73 100644
--- a/configure.in
+++ b/configure.in
@@ -82,6 +82,14 @@ case "$host" in
*) OBJ_FORMAT=elf ;;
esac
AC_SUBST(OBJ_FORMAT)
+case "$host" in
+ *-gnuspe)
+ abi_spe=true
+ AC_DEFINE(FLAC__CPU_PPC_SPE)
+ AH_TEMPLATE(FLAC__CPU_PPC_SPE, [define if building for PowerPC with SPE ABI])
+ ;;
+esac
+AM_CONDITIONAL(FLaC__CPU_PPC_SPE, test "x$abi_spe" = xtrue)
# only needed because of ntohl() usage, can get rid of after that's gone:
case "$host" in
diff --git a/src/libFLAC/Makefile.am b/src/libFLAC/Makefile.am
index cbfb0ac..5785372 100644
--- a/src/libFLAC/Makefile.am
+++ b/src/libFLAC/Makefile.am
@@ -40,8 +40,13 @@ if FLaC__SYS_DARWIN
CPUCFLAGS = -faltivec -force_cpusubtype_ALL -DFLAC__NO_ASM
else
# Linux-gcc for PPC does not have -force_cpusubtype_ALL, it is Darwin-specific
+CPUCFLAGS =
+if FLaC__CPU_PPC_SPE
+else
+CPUCFLAGS += -maltivec -mabi=altivec
+endif
#@@@ PPC optimizations temporarily disabled
-CPUCFLAGS = -maltivec -mabi=altivec -DFLAC__NO_ASM
+CPUCFLAGS += -DFLAC__NO_ASM
endif
endif
@@ -58,6 +63,8 @@ endif
if FLaC__CPU_PPC
ARCH_SUBDIRS = ppc
if FLaC__HAS_AS__TEMPORARILY_DISABLED
+if FLaC__CPU_PPC_SPE
+else
LOCAL_EXTRA_LIBADD = ppc/as/libFLAC-asm.la
LOCAL_EXTRA_LDFLAGS = "-Wl,-read_only_relocs,warning"
else
@@ -68,6 +75,7 @@ endif
endif
endif
endif
+endif
libFLAC_la_LIBADD = $(LOCAL_EXTRA_LIBADD) @OGG_LIBS@
--
1.5.6.5

View File

@ -14,12 +14,13 @@ LIC_FILES_CHKSUM = "file://COPYING.FDL;md5=ad1419ecc56e060eccf8184a87c4285f \
file://include/FLAC/all.h;beginline=64;endline=69;md5=64474f2b22e9e77b28d8b8b25c983a48"
DEPENDS = "libogg"
PR = "r0"
PR = "r1"
SRC_URI = "${SOURCEFORGE_MIRROR}/flac/flac-${PV}.tar.gz \
file://disable-xmms-plugin.patch;patch=1 \
file://flac-gcc43-fixes.patch;patch=1 \
file://xmms.m4"
file://xmms.m4 \
file://0001-No-AltiVec-on-SPE.patch"
SRC_URI[md5sum] = "153c8b15a54da428d1f0fadc756c22c7"
SRC_URI[sha256sum] = "9635a44bceb478bbf2ee8a785cf6986fba525afb5fad1fd4bba73cf71f2d3edf"