[pulseaudio: 3/3] Add upstream patch to fix compilation on ARM
Peter Robinson
pbrobinson at fedoraproject.org
Thu Apr 7 15:43:00 UTC 2011
commit 8ffd5695103cc5c1fce3fe5a1c5eb75d6ce74504
Author: Peter Robinson <pbrobinson at gmail.com>
Date: Thu Apr 7 16:28:46 2011 +0100
Add upstream patch to fix compilation on ARM
pulseaudio-arm6.patch | 102 +++++++++++++++++++++++++++++++++++++++++++++++++
pulseaudio.spec | 8 +++-
2 files changed, 109 insertions(+), 1 deletions(-)
---
diff --git a/pulseaudio-arm6.patch b/pulseaudio-arm6.patch
new file mode 100644
index 0000000..2a798c2
--- /dev/null
+++ b/pulseaudio-arm6.patch
@@ -0,0 +1,102 @@
+From 12b900858ae82d435c100d6eb94cb7bb22fe5e29 Mon Sep 17 00:00:00 2001
+From: Arun Raghavan <arun.raghavan at collabora.co.uk>
+Date: Fri, 26 Nov 2010 11:55:57 +0530
+Subject: [PATCH] volume: Add explicit checks for ARMv6 instructions
+
+This ensures that the build does not fail if the ssat and pkhbt
+instructions are not available (armv5te and below).
+
+Fixes: http://www.pulseaudio.org/ticket/790
+---
+ configure.ac | 33 ++++++++++++++++++++++++++++++++-
+ src/pulsecore/svolume_arm.c | 8 ++++----
+ 2 files changed, 36 insertions(+), 5 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index f93d461..0f6ff81 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -227,7 +227,7 @@ else
+ [pulseaudio_cv_support_arm_atomic_ops=no])
+ ])
+ AS_IF([test "$pulseaudio_cv_support_arm_atomic_ops" = "yes"], [
+- AC_DEFINE([ATOMIC_ARM_INLINE_ASM], 1, [Have ARMv6 instructions.])
++ AC_DEFINE([ATOMIC_ARM_INLINE_ASM], 1, [Have ARM atomic instructions.])
+ need_libatomic_ops=no
+ ])
+ fi
+@@ -246,6 +246,37 @@ else
+ esac
+ fi
+
++# If we're on ARM, check for the ARMV6 instructions we need */
++case $host in
++ arm*)
++ AC_CACHE_CHECK([support for required armv6 instructions],
++ pulseaudio_cv_support_armv6,
++ [AC_COMPILE_IFELSE(
++ AC_LANG_PROGRAM([],
++ [[volatile int a = -60000, b = 0xaaaabbbb, c = 0xccccdddd;
++ asm volatile ("ldr r0, %2 \n"
++ "ldr r2, %3 \n"
++ "ldr r3, %4 \n"
++ "ssat r1, #8, r0 \n"
++ "str r1, %0 \n"
++ "pkhbt r1, r3, r2, LSL #8 \n"
++ "str r1, %1 \n"
++ : "=m" (a), "=m" (b)
++ : "m" (a), "m" (b), "m" (c)
++ : "r0", "r1", "r2", "r3", "cc");
++ return (a == -128 && b == 0xaabbdddd) ? 0 : -1;
++ ]]),
++ [pulseaudio_cv_support_armv6=yes],
++ [pulseaudio_cv_support_armv6=no])
++ ])
++ AS_IF([test "$pulseaudio_cv_support_armv6" = "yes"], [
++ AC_DEFINE([HAVE_ARMV6], 1, [Have ARMv6 instructions.])
++ ])
++ ;;
++ *)
++ ;;
++esac
++
+ CC_CHECK_TLS
+
+ AC_CACHE_CHECK([whether $CC knows _Bool],
+diff --git a/src/pulsecore/svolume_arm.c b/src/pulsecore/svolume_arm.c
+index fdd8f09..3973e51 100644
+--- a/src/pulsecore/svolume_arm.c
++++ b/src/pulsecore/svolume_arm.c
+@@ -35,7 +35,7 @@
+ #include "sample-util.h"
+ #include "endianmacros.h"
+
+-#if defined (__arm__)
++#if defined (__arm__) && defined (HAVE_ARMV6)
+
+ #define MOD_INC() \
+ " subs r0, r6, %2 \n\t" \
+@@ -182,11 +182,11 @@ static void run_test (void) {
+ }
+ #endif
+
+-#endif /* defined (__arm__) */
++#endif /* defined (__arm__) && defined (HAVE_ARMV6) */
+
+
+ void pa_volume_func_init_arm (pa_cpu_arm_flag_t flags) {
+-#if defined (__arm__)
++#if defined (__arm__) && defined (HAVE_ARMV6)
+ pa_log_info("Initialising ARM optimized functions.");
+
+ #ifdef RUN_TEST
+@@ -194,5 +194,5 @@ void pa_volume_func_init_arm (pa_cpu_arm_flag_t flags) {
+ #endif
+
+ pa_set_volume_func (PA_SAMPLE_S16NE, (pa_do_volume_func_t) pa_volume_s16ne_arm);
+-#endif /* defined (__arm__) */
++#endif /* defined (__arm__) && defined (HAVE_ARMV6) */
+ }
+--
+1.6.3.3
+
diff --git a/pulseaudio.spec b/pulseaudio.spec
index db41c6c..377e874 100644
--- a/pulseaudio.spec
+++ b/pulseaudio.spec
@@ -1,7 +1,7 @@
Name: pulseaudio
Summary: Improved Linux Sound Server
Version: 0.9.22
-Release: 4%{?dist}
+Release: 5%{?dist}
License: LGPLv2+
Group: System Environment/Daemons
Source0: http://0pointer.de/lennart/projects/pulseaudio/pulseaudio-%{version}.tar.gz
@@ -9,6 +9,8 @@ Source1: default.pa-for-gdm
# activate pulseaudio early at login
Patch0: pulseaudio-activation.patch
+# upstream patch to fix compilation of ARM platforms
+Patch1: pulseaudio-arm6.patch
URL: http://pulseaudio.org/
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: m4
@@ -221,6 +223,7 @@ This package contains GDM integration hooks for the PulseAudio sound server.
%prep
%setup -q -T -b0
%patch0 -p1 -b .activation
+%patch1 -p1 -b .arm
%build
autoreconf
@@ -469,6 +472,9 @@ exit 0
%attr(0600, gdm, gdm) %{_localstatedir}/lib/gdm/.pulse/default.pa
%changelog
+* Thu Apr 7 2011 Peter Robinson <pbrobinson at gmail.com> - 0.9.22-5
+- Add upstream patch to fix compilation on ARM
+
* Mon Mar 28 2011 Matthias Clasen <mclasen at redhat.com> - 0.9.22-4
- Activate pulseaudio earlier during login
More information about the scm-commits
mailing list