From: Michael Olbrich <m.olbrich@pengutronix.de>
To: ptxdist@pengutronix.de
Subject: Re: [ptxdist] [RFC] Improve speex's buildsystem
Date: Sun, 8 Apr 2012 09:42:16 +0200 [thread overview]
Message-ID: <20120408074216.GB13585@pengutronix.de> (raw)
In-Reply-To: <201204061308.53661.jbe@pengutronix.de>
On Fri, Apr 06, 2012 at 01:08:53PM +0200, Juergen Beisert wrote:
> Please find below a patch to improve 'speex' buildsystem in various ways.
> 'speex' comes with many hardware related switches. And as it is a user-land
> component, sharing the settings in a PTXdist project based on more than one
> platform with different architectures is (currently) impossible.
>
> Also the current rule file is broken, as it depends on a few platform settings
> which are no longer available since ages.
>
> This patch adds some auto-scripts (thanks to Uwe) that are able to read back
> the important settings from the toolchain. And the result will configure
> 'speex' automagically in accordance to the architecture's features.
>
> These auto-scripts could also be used in other packages, that need
> architecture specific configuration. And since the use of these auto-scripts
> depends on an autogen step, PTXdist could provide these auto-scripts as a
> generic part, instead of patching them into each package (like it is done in
> this example).
>
> Comments are welcome.
When I try to apply this I get an error:
Applying: Improve speex's buildsystem
fatal: corrupt patch at line 942
Michael
>
> commit 5de468977ac9df84e5a24120494e96668626ca58
> Author: Juergen Beisert <jbe@pengutronix.de>
> Date: Tue Dec 27 20:00:30 2011 +0100
>
> SPEEX: improve its buildsystem
>
> This patch adds a series of patches to the speex package to
> - fix its buildsystem
> - add libogg dependency on demand only
> - add autodetection of the architecture and possible optimzations
>
> Signed-off-by: Juergen Beisert <jbe@pengutronix.de>
>
> diff --git a/patches/speex-1.2rc1/add_more_autodetection.diff b/patches/speex-1.2rc1/add_more_autodetection.diff
> new file mode 100644
> index 0000000..2907379
> --- /dev/null
> +++ b/patches/speex-1.2rc1/add_more_autodetection.diff
> @@ -0,0 +1,168 @@
> +From: Juergen Beisert <jbe@pengutronix.de>
> +Subject: [PATCH] SPEEX: lets configure detect more arch settings from the compiler
> +
> +The preprocessor defines various symbols on its default settings and also on
> +given parameters. Use these symbols to detect optimization possibilities.
> +
> +Signed-off-by: Juergen Beisert <jbe@pengutronix.de>
> +
> +---
> + configure.ac | 127 ++++++++++++++++++++++++++++++++++++++++++++++++++---------
> + 1 file changed, 108 insertions(+), 19 deletions(-)
> +
> +Index: speex-1.2rc1/configure.ac
> +===================================================================
> +--- speex-1.2rc1.orig/configure.ac
> ++++ speex-1.2rc1/configure.ac
> +@@ -36,7 +36,7 @@ AC_CANONICAL_HOST
> + LT_INIT
> +
> + # default is more output while building the package
> +-AM_SILENT_RULES()
> ++AM_SILENT_RULES([${enable_silent_rules}])
> +
> + AC_C_BIGENDIAN
> + AC_C_CONST
> +@@ -64,22 +64,98 @@ AC_TYPE_INT16_T
> + AC_TYPE_INT32_T
> + AC_TYPE_SIZE_T
> +
> +-AC_MSG_CHECKING(for SSE in current arch/CFLAGS)
> +-AC_LINK_IFELSE([
> +-AC_LANG_PROGRAM([[
> +-#include <xmmintrin.h>
> +-__m128 testfunc(float *a, float *b) {
> +- return _mm_add_ps(_mm_loadu_ps(a), _mm_loadu_ps(b));
> +-}
> +-]])],
> +-[
> +-has_sse=yes
> +-],
> +-[
> +-has_sse=no
> +-]
> +-)
> +-AC_MSG_RESULT($has_sse)
> ++target_arch_detected=guessed
> ++
> ++# ---------------------------------------------------------------------------
> ++
> ++case $host_cpu in
> ++ i?86)
> ++ base_arch=x86
> ++ ;;
> ++ arm)
> ++ base_arch=arm;
> ++ ;;
> ++ *)
> ++ base_arch=unknown;
> ++ ;;
> ++esac
> ++
> ++# ---------------------------------------------------------------------------
> ++
> ++# Checking if this CPU has a hardware floating point unit
> ++
> ++AX_HARDWARE_FP([target_hardware_fp=yes], [target_hardware_fp=no])
> ++
> ++# When a hardware floating point unit seems available, then use it.
> ++# This will end in bad code on badly configured compilers which generates
> ++# floating point instructions even if the CPU has not hardware FP unit
> ++#
> ++if test x${target_hardware_fp} = xyes; then
> ++ enable_fixed_point=no
> ++ enable_float_api=yes
> ++ enable_vbr=yes
> ++ with_fft=smallft
> ++ math_type="floating"
> ++else
> ++ enable_fixed_point=yes
> ++ enable_float_api=no
> ++ enable_vbr=no
> ++ with_fft=kiss
> ++ math_type="fixed"
> ++fi
> ++
> ++# ---------------------------------------------------------------------------
> ++
> ++if test x${base_arch} = xarm; then
> ++# discover the architecture this compiler builds code for
> ++
> ++enable_arm4_asm=no;
> ++enable_arm5e_asm=no;
> ++
> ++# check here for symbols the preprocessor automatically defines.
> ++# To find the correct symbol to test for just run "cpp -dM" and press CTRL-D.
> ++
> ++AX_DETECT_ARMV4([enable_arm4_asm=yes; optimized_for="ARMv4"; target_arch_detected=yes], [])
> ++AX_DETECT_ARMV5([enable_arm5e_asm=yes; optimized_for="ARMv5"; target_arch_detected=yes], [])
> ++#currently not used in this package
> ++# AX_DETECT_ARMV6([enable_arm6_asm=yes; optimized_for="ARMv6"; target_arch_detected=yes], [])
> ++# AX_DETECT_ARMV7([enable_arm7_asm=yes; optimized_for="ARMv7"; target_arch_detected=yes], [])
> ++
> ++if test x${target_arch_detected} = xguessed; then
> ++ optimized_for="ARM"
> ++fi
> ++
> ++fi
> ++
> ++# end of ARM
> ++# ---------------------------------------------------------------------------
> ++
> ++if test x${base_arch} = xx86; then
> ++
> ++# on x86 we assume a floating point unit
> ++ target_arch_detected=guessed
> ++ optimized_for="x86";
> ++
> ++AC_MSG_CHECKING(for SSE capability)
> ++AC_COMPILE_IFELSE(
> ++ [AC_LANG_PROGRAM([[]],
> ++ [[
> ++#undef SSE_IS_POSSIBLE
> ++#if defined(__SSE__) || defined(__SSE2__) || defined(__SSE2_MATH__)
> ++# define SSE_IS_POSSIBLE 1
> ++#endif
> ++int foo = SSE_IS_POSSIBLE;
> ++ ]])],
> ++ [has_sse=yes],
> ++ [has_sse=no],
> ++ [Optimize for SSE])
> ++AC_MSG_RESULT(${has_sse})
> ++
> ++AX_EXT
> ++
> ++fi
> ++
> ++# ---------------------------------------------------------------------------
> +
> + SAVE_CFLAGS="$CFLAGS"
> + CFLAGS="$CFLAGS -fvisibility=hidden"
> +@@ -316,8 +392,6 @@ AC_CONFIG_FILES([Makefile libspeex/Makef
> + ti/speex_C64_test/Makefile ])
> + AC_OUTPUT
> +
> +-echo "Type \"make; make install\" to compile and install Speex";
> +-
> + echo "------------------------------------------------------"
> + echo " Results:"
> + echo "------------------------------------------------------"
> +@@ -330,3 +404,18 @@ echo " CFLAGS: $CFLAGS
> + echo " Additional libs: $LIBS $OGG_LIBS"
> + echo " Coder/Encoder tools: $enable_coders"
> + echo "------------------------------------------------------"
> ++echo " Architecture specific settings:"
> ++echo ""
> ++echo " Arch discovered: ${target_arch_detected}"
> ++echo " Base architecture: ${base_arch}"
> ++echo " Optimized for: ${optimized_for} with ${math_type} point"
> ++if test x${base_arch} = xx86; then
> ++echo " enable SSE math: ${has_sse}"
> ++fi
> ++if test x${base_arch} = xarm; then
> ++ echo " ARMv4 enabled: ${enable_arm4_asm}"
> ++ echo " ARMv5 enabled: ${enable_arm5e_asm}"
> ++fi
> ++echo "------------------------------------------------------"
> ++
> ++echo "Type \"make; make install\" to compile and install Speex";
> diff --git a/patches/speex-1.2rc1/autogen.sh b/patches/speex-1.2rc1/autogen.sh
> new file mode 120000
> index 0000000..9f8a4cb
> --- /dev/null
> +++ b/patches/speex-1.2rc1/autogen.sh
> @@ -0,0 +1 @@
> +../autogen.sh
> \ No newline at end of file
> diff --git a/patches/speex-1.2rc1/ax_armv4_detection.diff b/patches/speex-1.2rc1/ax_armv4_detection.diff
> new file mode 100644
> index 0000000..32c6b40
> --- /dev/null
> +++ b/patches/speex-1.2rc1/ax_armv4_detection.diff
> @@ -0,0 +1,117 @@
> +From: Juergen Beisert <jbe@pengutronix.de>
> +Subject: [PATCH] lets configure detect more arch settings from the compiler
> +
> +The preprocessor defines various symbols on its default settings and also on
> +given parameters. Use these symbols to detect optimization possibilities.
> +
> +__ARM_ARCH_4__/__ARM_ARCH_4T__ are defined if the default architecture is ARMv4
> +
> +Signed-off-by: Juergen Beisert <jbe@pengutronix.de>
> +
> +---
> + m4/ax_armv4_detection.m4 | 98 +++++++++++++++++++++++++++++++++++++++++++++++
> + 1 file changed, 98 insertions(+)
> +
> +Index: speex-1.2rc1/m4/ax_armv4_detection.m4
> +===================================================================
> +--- /dev/null
> ++++ speex-1.2rc1/m4/ax_armv4_detection.m4
> +@@ -0,0 +1,98 @@
> ++#
> ++# SYNOPSIS
> ++#
> ++# AX_DETECT_ARMV4([ACTION-IF-ARMv4],[ACTION-IF-NO-ARMv4])
> ++#
> ++# DESCRIPTION
> ++#
> ++# AX_DETECT_ARMV4 detects from the compiler settings if the target is of
> ++# type ARMv4. It is intended mostly for cross compiling to be able to collect
> ++# more information about the target architecture and features. The user can
> ++# overwrite the detection by using the option --enable-armv4core or
> ++# --disable-armv4core.
> ++# It works by detecting the compiler's macros __ARM_ARCH_4__ and
> ++# __ARM_ARCH_4T__. These are set in gcc compilers when they are configured
> ++# to create code for ARMv4 cores.
> ++# This macro cannot detect the correct target's features if the compiler is
> ++# not correctly configured to reflect the target's features.
> ++#
> ++# LICENSE
> ++#
> ++# Copyright (c) 2012 Juergen Beisert <jbe@pengutronix.de>
> ++#
> ++# This program is free software; you can redistribute it and/or modify it
> ++# under the terms of the GNU General Public License as published by the
> ++# Free Software Foundation; either version 2 of the License, or (at your
> ++# option) any later version.
> ++#
> ++# This program is distributed in the hope that it will be useful, but
> ++# WITHOUT ANY WARRANTY; without even the implied warranty of
> ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
> ++# Public License for more details.
> ++#
> ++# You should have received a copy of the GNU General Public License along
> ++# with this program. If not, see <http://www.gnu.org/licenses/>.
> ++#
> ++# As a special exception, the respective Autoconf Macro's copyright owner
> ++# gives unlimited permission to copy, distribute and modify the configure
> ++# scripts that are the output of Autoconf when processing the Macro. You
> ++# need not follow the terms of the GNU General Public License when using
> ++# or distributing such scripts, even though portions of the text of the
> ++# Macro appear in them. The GNU General Public License (GPL) does govern
> ++# all other use of the material that constitutes the Autoconf Macro.
> ++#
> ++# This special exception to the GPL applies to versions of the Autoconf
> ++# Macro released by the Autoconf Archive. When you make and distribute a
> ++# modified version of the Autoconf Macro, you may extend this special
> ++# exception to the GPL to apply to your modified version as well.
> ++
> ++AC_DEFUN([AX_DETECT_ARMV4],
> ++ [AC_REQUIRE([AC_PROG_CC])
> ++dnl
> ++dnl Give the user the possibility to overwrite the auto detection
> ++dnl
> ++ AC_ARG_ENABLE([armv4core],
> ++ [AS_HELP_STRING([--enable-armv4core],
> ++ [Enable optimizations for ARMv4 cores @<:@default=auto@:>@])],
> ++ [ax_armv4core="${enableval}"],
> ++ [ax_armv4core=auto])
> ++
> ++ AC_CACHE_CHECK([for ARMv4 target core], [ax_cv_armv4core],
> ++ [ax_cv_armv4core=${ax_armv4core}])
> ++dnl AC_MSG_RESULT([${ax_cv_armv4core}])
> ++
> ++ if test "x${ax_cv_armv4core}" = "xauto"; then
> ++ if test "x$GCC" != "xyes"; then
> ++dnl only for GCC we know it works in this way
> ++ AC_MSG_ERROR([Cannot autodetect the architecture for non GCC compilers])
> ++ else
> ++ AC_MSG_CHECKING(if target's core is of type ARMv4)
> ++ AC_COMPILE_IFELSE(
> ++ [AC_LANG_PROGRAM([[]],
> ++ [[
> ++#undef THIS_IS_V4
> ++#if defined(__ARM_ARCH_4__) || defined(__ARM_ARCH_4T__)
> ++# define THIS_IS_V4 1
> ++#endif
> ++int foo = THIS_IS_V4;
> ++ ]]) dnl AC_LANG_PROGRAM
> ++ ],
> ++ [ax_cv_armv4core=yes],
> ++ [ax_cv_armv4core=no],
> ++ [ARMv4 core]); dnl AC_COMPILE_IFELSE
> ++ AC_MSG_RESULT([${ax_cv_armv4core}]);
> ++ fi
> ++ fi
> ++
> ++ case "x${ax_cv_armv4core}" in
> ++ "xyes")
> ++ $1
> ++ ;;
> ++ "xno")
> ++ $2
> ++ ;;
> ++ *)
> ++ AC_MSG_ERROR([Unknown setting for ARMv4 architecture: '${ax_cv_armv4core}'.])
> ++ ;;
> ++ esac
> ++]) dnl AC_DEFUN
> diff --git a/patches/speex-1.2rc1/ax_armv5_detection.diff b/patches/speex-1.2rc1/ax_armv5_detection.diff
> new file mode 100644
> index 0000000..b8358ac
> --- /dev/null
> +++ b/patches/speex-1.2rc1/ax_armv5_detection.diff
> @@ -0,0 +1,120 @@
> +From: Juergen Beisert <jbe@pengutronix.de>
> +Subject: [PATCH] lets configure detect more arch settings from the compiler
> +
> +The preprocessor defines various symbols on its default settings and also on
> +given parameters. Use these symbols to detect optimization possibilities.
> +
> +__ARM_ARCH_5__/__ARM_ARCH_5E__/__ARM_ARCH_5T__/__ARM_ARCH_5TE__/__ARM_ARCH_5TEJ__
> +are defined if the default architecture is ARMv5
> +
> +Signed-off-by: Juergen Beisert <jbe@pengutronix.de>
> +
> +---
> + m4/ax_armv5_detection.m4 | 100 +++++++++++++++++++++++++++++++++++++++++++++++
> + 1 file changed, 100 insertions(+)
> +
> +Index: speex-1.2rc1/m4/ax_armv5_detection.m4
> +===================================================================
> +--- /dev/null
> ++++ speex-1.2rc1/m4/ax_armv5_detection.m4
> +@@ -0,0 +1,100 @@
> ++#
> ++# SYNOPSIS
> ++#
> ++# AX_DETECT_ARMV5([ACTION-IF-ARMv5],[ACTION-IF-NO-ARMv5])
> ++#
> ++# DESCRIPTION
> ++#
> ++# AX_DETECT_ARMV5 detects from the compiler settings if the target is of
> ++# type ARMv5. It is intended mostly for cross compiling to be able to collect
> ++# more information about the target architecture and features. The user can
> ++# overwrite the detection by using the option --enable-armv5core or
> ++# --disable-armv5core.
> ++# It works by detecting the compiler's macros __ARM_ARCH_5__, __ARM_ARCH_5E__,
> ++# __ARM_ARCH_5T__, __ARM_ARCH_5TE__ and __ARM_ARCH_5TEJ__. These are set in
> ++# gcc compilers when they are configured to create code for ARMv5 cores.
> ++# This macro cannot detect the correct target's features if the compiler is
> ++# not correctly configured to reflect the target's features.
> ++#
> ++# LICENSE
> ++#
> ++# Copyright (c) 2012 Juergen Beisert <jbe@pengutronix.de>
> ++#
> ++# This program is free software; you can redistribute it and/or modify it
> ++# under the terms of the GNU General Public License as published by the
> ++# Free Software Foundation; either version 2 of the License, or (at your
> ++# option) any later version.
> ++#
> ++# This program is distributed in the hope that it will be useful, but
> ++# WITHOUT ANY WARRANTY; without even the implied warranty of
> ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
> ++# Public License for more details.
> ++#
> ++# You should have received a copy of the GNU General Public License along
> ++# with this program. If not, see <http://www.gnu.org/licenses/>.
> ++#
> ++# As a special exception, the respective Autoconf Macro's copyright owner
> ++# gives unlimited permission to copy, distribute and modify the configure
> ++# scripts that are the output of Autoconf when processing the Macro. You
> ++# need not follow the terms of the GNU General Public License when using
> ++# or distributing such scripts, even though portions of the text of the
> ++# Macro appear in them. The GNU General Public License (GPL) does govern
> ++# all other use of the material that constitutes the Autoconf Macro.
> ++#
> ++# This special exception to the GPL applies to versions of the Autoconf
> ++# Macro released by the Autoconf Archive. When you make and distribute a
> ++# modified version of the Autoconf Macro, you may extend this special
> ++# exception to the GPL to apply to your modified version as well.
> ++
> ++AC_DEFUN([AX_DETECT_ARMV5],
> ++ [AC_REQUIRE([AC_PROG_CC])
> ++dnl
> ++dnl Give the user the possibility to overwrite the auto detection
> ++dnl
> ++ AC_ARG_ENABLE([armv5core],
> ++ [AS_HELP_STRING([--enable-armv5core],
> ++ [Enable optimizations for ARMv5 cores @<:@default=auto@:>@])],
> ++ [ax_armv5core="${enableval}"],
> ++ [ax_armv5core=auto])
> ++
> ++ AC_CACHE_CHECK([for ARMv5 target core], [ax_cv_armv5core],
> ++ [ax_cv_armv5core=${ax_armv5core}])
> ++dnl AC_MSG_RESULT([${ax_cv_armv5core}])
> ++
> ++ if test "x${ax_cv_armv5core}" = "xauto"; then
> ++ if test "x$GCC" != "xyes"; then
> ++dnl only for GCC we know it works in this way
> ++ AC_MSG_ERROR([Cannot autodetect the architecture for non GCC compilers])
> ++ else
> ++ AC_MSG_CHECKING(if target's core is of type ARMv5)
> ++ AC_COMPILE_IFELSE(
> ++ [AC_LANG_PROGRAM([[]],
> ++ [[
> ++#undef THIS_IS_V5
> ++#if defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5E__) || \
> ++defined(__ARM_ARCH_5T__) || defined(__ARM_ARCH_5TE__) || \
> ++defined(__ARM_ARCH_5TEJ__)
> ++# define THIS_IS_V5 1
> ++#endif
> ++int foo = THIS_IS_V5;
> ++ ]]) dnl AC_LANG_PROGRAM
> ++ ],
> ++ [ax_cv_armv5core=yes],
> ++ [ax_cv_armv5core=no],
> ++ [ARMv5 core]); dnl AC_COMPILE_IFELSE
> ++ AC_MSG_RESULT([${ax_cv_armv5core}]);
> ++ fi
> ++ fi
> ++
> ++ case "x${ax_cv_armv5core}" in
> ++ "xyes")
> ++ $1
> ++ ;;
> ++ "xno")
> ++ $2
> ++ ;;
> ++ *)
> ++ AC_MSG_ERROR([Unknown setting for ARMv5 architecture: '${ax_cv_armv5core}'.])
> ++ ;;
> ++ esac
> ++]) dnl AC_DEFUN
> diff --git a/patches/speex-1.2rc1/ax_armv6_detection.diff b/patches/speex-1.2rc1/ax_armv6_detection.diff
> new file mode 100644
> index 0000000..635e6a8
> --- /dev/null
> +++ b/patches/speex-1.2rc1/ax_armv6_detection.diff
> @@ -0,0 +1,122 @@
> +From: Juergen Beisert <jbe@pengutronix.de>
> +Subject: [PATCH] lets configure detect more arch settings from the compiler
> +
> +The preprocessor defines various symbols on its default settings and also on
> +given parameters. Use these symbols to detect optimization possibilities.
> +
> +__ARM_ARCH_6__, __ARM_ARCH_6J__, __ARM_ARCH_6K__, __ARM_ARCH_6Z__,
> +__ARM_ARCH_6ZK__ and __ARM_ARCH_6T2__ are defined if the default
> +architecture is ARMv6
> +
> +Signed-off-by: Juergen Beisert <jbe@pengutronix.de>
> +
> +---
> + m4/ax_armv6_detection.m4 | 101 +++++++++++++++++++++++++++++++++++++++++++++++
> + 1 file changed, 101 insertions(+)
> +
> +Index: speex-1.2rc1/m4/ax_armv6_detection.m4
> +===================================================================
> +--- /dev/null
> ++++ speex-1.2rc1/m4/ax_armv6_detection.m4
> +@@ -0,0 +1,101 @@
> ++#
> ++# SYNOPSIS
> ++#
> ++# AX_DETECT_ARMV6([ACTION-IF-ARMv6],[ACTION-IF-NO-ARMv6])
> ++#
> ++# DESCRIPTION
> ++#
> ++# AX_DETECT_ARMV6 detects from the compiler settings if the target is of
> ++# type ARMv6. It is intended mostly for cross compiling to be able to collect
> ++# more information about the target architecture and features. The user can
> ++# overwrite the detection by using the option --enable-armv6core or
> ++# --disable-armv6core.
> ++# It works by detecting the compiler's macros __ARM_ARCH_6__, __ARM_ARCH_6J__,
> ++# __ARM_ARCH_6K__, __ARM_ARCH_6Z__, __ARM_ARCH_6ZK__ and __ARM_ARCH_6T2__.
> ++# These are set in gcc compilers when they are configured to create code for
> ++# ARMv6 cores.
> ++# This macro cannot detect the correct target's features if the compiler is
> ++# not correctly configured to reflect the target's features.
> ++#
> ++# LICENSE
> ++#
> ++# Copyright (c) 2012 Juergen Beisert <jbe@pengutronix.de>
> ++#
> ++# This program is free software; you can redistribute it and/or modify it
> ++# under the terms of the GNU General Public License as published by the
> ++# Free Software Foundation; either version 2 of the License, or (at your
> ++# option) any later version.
> ++#
> ++# This program is distributed in the hope that it will be useful, but
> ++# WITHOUT ANY WARRANTY; without even the implied warranty of
> ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
> ++# Public License for more details.
> ++#
> ++# You should have received a copy of the GNU General Public License along
> ++# with this program. If not, see <http://www.gnu.org/licenses/>.
> ++#
> ++# As a special exception, the respective Autoconf Macro's copyright owner
> ++# gives unlimited permission to copy, distribute and modify the configure
> ++# scripts that are the output of Autoconf when processing the Macro. You
> ++# need not follow the terms of the GNU General Public License when using
> ++# or distributing such scripts, even though portions of the text of the
> ++# Macro appear in them. The GNU General Public License (GPL) does govern
> ++# all other use of the material that constitutes the Autoconf Macro.
> ++#
> ++# This special exception to the GPL applies to versions of the Autoconf
> ++# Macro released by the Autoconf Archive. When you make and distribute a
> ++# modified version of the Autoconf Macro, you may extend this special
> ++# exception to the GPL to apply to your modified version as well.
> ++
> ++AC_DEFUN([AX_DETECT_ARMV6],
> ++ [AC_REQUIRE([AC_PROG_CC])
> ++dnl
> ++dnl Give the user the possibility to overwrite the auto detection
> ++dnl
> ++ AC_ARG_ENABLE([armv6core],
> ++ [AS_HELP_STRING([--enable-armv6core],
> ++ [Enable optimizations for ARMv6 cores @<:@default=auto@:>@])],
> ++ [ax_armv6core="${enableval}"],
> ++ [ax_armv6core=auto])
> ++
> ++ AC_CACHE_CHECK([for ARMv6 target core], [ax_cv_armv6core],
> ++ [ax_cv_armv6core=${ax_armv6core}])
> ++dnl AC_MSG_RESULT([${ax_cv_armv6core}])
> ++
> ++ if test "x${ax_cv_armv6core}" = "xauto"; then
> ++ if test "x$GCC" != "xyes"; then
> ++dnl only for GCC we know it works in this way
> ++ AC_MSG_ERROR([Cannot autodetect the architecture for non GCC compilers])
> ++ else
> ++ AC_MSG_CHECKING(if target's core is of type ARMv6)
> ++ AC_COMPILE_IFELSE(
> ++ [AC_LANG_PROGRAM([[]],
> ++ [[
> ++#undef THIS_IS_V6
> ++#if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || \
> ++defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || \
> ++defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__)
> ++# define THIS_IS_V6 1
> ++#endif
> ++int foo = THIS_IS_V6;
> ++ ]]) dnl AC_LANG_PROGRAM
> ++ ],
> ++ [ax_cv_armv6core=yes],
> ++ [ax_cv_armv6core=no],
> ++ [ARMv6 core]); dnl AC_COMPILE_IFELSE
> ++ AC_MSG_RESULT([${ax_cv_armv6core}]);
> ++ fi
> ++ fi
> ++
> ++ case "x${ax_cv_armv6core}" in
> ++ "xyes")
> ++ $1
> ++ ;;
> ++ "xno")
> ++ $2
> ++ ;;
> ++ *)
> ++ AC_MSG_ERROR([Unknown setting for ARMv6 architecture: '${ax_cv_armv6core}'.])
> ++ ;;
> ++ esac
> ++]) dnl AC_DEFUN
> diff --git a/patches/speex-1.2rc1/ax_armv7_detection.diff b/patches/speex-1.2rc1/ax_armv7_detection.diff
> new file mode 100644
> index 0000000..1653a9e
> --- /dev/null
> +++ b/patches/speex-1.2rc1/ax_armv7_detection.diff
> @@ -0,0 +1,118 @@
> +From: Juergen Beisert <jbe@pengutronix.de>
> +Subject: [PATCH] lets configure detect more arch settings from the compiler
> +
> +The preprocessor defines various symbols on its default settings and also on
> +given parameters. Use these symbols to detect optimization possibilities.
> +
> +__ARM_ARCH_7A__, __ARM_ARCH_7M__ are defined if the default
> +architecture is ARMv7
> +
> +Signed-off-by: Juergen Beisert <jbe@pengutronix.de>
> +
> +---
> + m4/ax_armv7_detection.m4 | 98 +++++++++++++++++++++++++++++++++++++++++++++++
> + 1 file changed, 98 insertions(+)
> +
> +Index: speex-1.2rc1/m4/ax_armv7_detection.m4
> +===================================================================
> +--- /dev/null
> ++++ speex-1.2rc1/m4/ax_armv7_detection.m4
> +@@ -0,0 +1,98 @@
> ++#
> ++# SYNOPSIS
> ++#
> ++# AX_DETECT_ARMV7([ACTION-IF-ARMv7],[ACTION-IF-NO-ARMv7])
> ++#
> ++# DESCRIPTION
> ++#
> ++# AX_DETECT_ARMV7 detects from the compiler settings if the target is of
> ++# type ARMv7. It is intended mostly for cross compiling to be able to collect
> ++# more information about the target architecture and features. The user can
> ++# overwrite the detection by using the option --enable-armv7core or
> ++# --disable-armv7core.
> ++# It works by detecting the compiler's macros __ARM_ARCH_7A__, __ARM_ARCH_7M__.
> ++# These are set in gcc compilers when they are configured to create code for
> ++# ARMv6 cores.
> ++# This macro cannot detect the correct target's features if the compiler is
> ++# not correctly configured to reflect the target's features.
> ++#
> ++# LICENSE
> ++#
> ++# Copyright (c) 2012 Juergen Beisert <jbe@pengutronix.de>
> ++#
> ++# This program is free software; you can redistribute it and/or modify it
> ++# under the terms of the GNU General Public License as published by the
> ++# Free Software Foundation; either version 2 of the License, or (at your
> ++# option) any later version.
> ++#
> ++# This program is distributed in the hope that it will be useful, but
> ++# WITHOUT ANY WARRANTY; without even the implied warranty of
> ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
> ++# Public License for more details.
> ++#
> ++# You should have received a copy of the GNU General Public License along
> ++# with this program. If not, see <http://www.gnu.org/licenses/>.
> ++#
> ++# As a special exception, the respective Autoconf Macro's copyright owner
> ++# gives unlimited permission to copy, distribute and modify the configure
> ++# scripts that are the output of Autoconf when processing the Macro. You
> ++# need not follow the terms of the GNU General Public License when using
> ++# or distributing such scripts, even though portions of the text of the
> ++# Macro appear in them. The GNU General Public License (GPL) does govern
> ++# all other use of the material that constitutes the Autoconf Macro.
> ++#
> ++# This special exception to the GPL applies to versions of the Autoconf
> ++# Macro released by the Autoconf Archive. When you make and distribute a
> ++# modified version of the Autoconf Macro, you may extend this special
> ++# exception to the GPL to apply to your modified version as well.
> ++
> ++AC_DEFUN([AX_DETECT_ARMV7],
> ++ [AC_REQUIRE([AC_PROG_CC])
> ++dnl
> ++dnl Give the user the possibility to overwrite the auto detection
> ++dnl
> ++ AC_ARG_ENABLE([armv7core],
> ++ [AS_HELP_STRING([--enable-armv7core],
> ++ [Enable optimizations for ARMv7 cores @<:@default=auto@:>@])],
> ++ [ax_armv7core="${enableval}"],
> ++ [ax_armv7core=auto])
> ++
> ++ AC_CACHE_CHECK([for ARMv7 target core], [ax_cv_armv7core],
> ++ [ax_cv_armv7core=${ax_armv6core}])
> ++dnl AC_MSG_RESULT([${ax_cv_armv7core}])
> ++
> ++ if test "x${ax_cv_armv7core}" = "xauto"; then
> ++ if test "x$GCC" != "xyes"; then
> ++dnl only for GCC we know it works in this way
> ++ AC_MSG_ERROR([Cannot autodetect the architecture for non GCC compilers])
> ++ else
> ++ AC_MSG_CHECKING(if target's core is of type ARMv7)
> ++ AC_COMPILE_IFELSE(
> ++ [AC_LANG_PROGRAM([[]],
> ++ [[
> ++#undef THIS_IS_V7
> ++#if defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7M__)
> ++# define THIS_IS_V7 1
> ++#endif
> ++int foo = THIS_IS_V7;
> ++ ]]) dnl AC_LANG_PROGRAM
> ++ ],
> ++ [ax_cv_armv7core=yes],
> ++ [ax_cv_armv7core=no],
> ++ [ARMv6 core]); dnl AC_COMPILE_IFELSE
> ++ AC_MSG_RESULT([${ax_cv_armv7core}]);
> ++ fi
> ++ fi
> ++
> ++ case "x${ax_cv_armv7core}" in
> ++ "xyes")
> ++ $1
> ++ ;;
> ++ "xno")
> ++ $2
> ++ ;;
> ++ *)
> ++ AC_MSG_ERROR([Unknown setting for ARMv7 architecture: '${ax_cv_armv7core}'.])
> ++ ;;
> ++ esac
> ++]) dnl AC_DEFUN
> diff --git a/patches/speex-1.2rc1/ax_floating_point.diff b/patches/speex-1.2rc1/ax_floating_point.diff
> new file mode 100644
> index 0000000..9e64ce3
> --- /dev/null
> +++ b/patches/speex-1.2rc1/ax_floating_point.diff
> @@ -0,0 +1,117 @@
> +From: Juergen Beisert <jbe@pengutronix.de>
> +Subject: [PATCH] lets configure detect more arch settings from the compiler
> +
> +The preprocessor defines various symbols on its default settings and also on
> +given parameters. Use these symbols to detect optimization possibilities.
> +
> +__SOFTFP__ is a symbol defined when the toolchain is configured to not create
> +floating point instructions and call soft floating point routines instead.
> +
> +Signed-off-by: Juergen Beisert <jbe@pengutronix.de>
> +
> +---
> + m4/ax_floating_point.m4 | 97 ++++++++++++++++++++++++++++++++++++++++++++++++
> + 1 file changed, 97 insertions(+)
> +
> +Index: speex-1.2rc1/m4/ax_floating_point.m4
> +===================================================================
> +--- /dev/null
> ++++ speex-1.2rc1/m4/ax_floating_point.m4
> +@@ -0,0 +1,97 @@
> ++#
> ++# SYNOPSIS
> ++#
> ++# AX_HARDWARE_FP([ACTION-IF-HARD-FLOAT],[ACTION-IF-SOFT-FLOAT])
> ++#
> ++# DESCRIPTION
> ++#
> ++# AX_DETECT_FLOAT detects the compiler settings about floating point usage.
> ++# It is intended mostly for cross compiling to be able to collect more
> ++# information about the target architecture and features. The user can
> ++# overwrite the detection by using the option --enable-hardware-fp or
> ++# --disable-hardware-fp.
> ++# It works by detecting the compiler's macro __SOFTFP__. This one is set in
> ++# gcc compilers when there is no hardware floating point available.
> ++# This macro cannot detect the correct target's features if the compiler is
> ++# not correctly configured to reflect the target's features.
> ++#
> ++# LICENSE
> ++#
> ++# Copyright (c) 2012 Juergen Beisert <jbe@pengutronix.de>
> ++#
> ++# This program is free software; you can redistribute it and/or modify it
> ++# under the terms of the GNU General Public License as published by the
> ++# Free Software Foundation; either version 2 of the License, or (at your
> ++# option) any later version.
> ++#
> ++# This program is distributed in the hope that it will be useful, but
> ++# WITHOUT ANY WARRANTY; without even the implied warranty of
> ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
> ++# Public License for more details.
> ++#
> ++# You should have received a copy of the GNU General Public License along
> ++# with this program. If not, see <http://www.gnu.org/licenses/>.
> ++#
> ++# As a special exception, the respective Autoconf Macro's copyright owner
> ++# gives unlimited permission to copy, distribute and modify the configure
> ++# scripts that are the output of Autoconf when processing the Macro. You
> ++# need not follow the terms of the GNU General Public License when using
> ++# or distributing such scripts, even though portions of the text of the
> ++# Macro appear in them. The GNU General Public License (GPL) does govern
> ++# all other use of the material that constitutes the Autoconf Macro.
> ++#
> ++# This special exception to the GPL applies to versions of the Autoconf
> ++# Macro released by the Autoconf Archive. When you make and distribute a
> ++# modified version of the Autoconf Macro, you may extend this special
> ++# exception to the GPL to apply to your modified version as well.
> ++
> ++AC_DEFUN([AX_HARDWARE_FP],
> ++ [AC_REQUIRE([AC_PROG_CC])
> ++dnl
> ++dnl Give the user the possibility to overwrite the auto detection
> ++dnl
> ++ AC_ARG_ENABLE([hardware-fp],
> ++ [AS_HELP_STRING([--enable-hardware-fp],
> ++ [Enable hardware floating point @<:@default=auto@:>@])],
> ++ [ax_hardware_fp="${enableval}"],
> ++ [ax_hardware_fp=auto])
> ++
> ++ AC_CACHE_CHECK([for hardware fp support], [ax_cv_hardware_fp],
> ++ [ax_cv_hardware_fp=${ax_hardware_fp}])
> ++dnl AC_MSG_RESULT([${ax_cv_hardware_fp}])
> ++
> ++ if test "x${ax_cv_hardware_fp}" = "xauto"; then
> ++ if test "x$GCC" != "xyes"; then
> ++dnl only for GCC we know it works in this way
> ++ AC_MSG_ERROR([Cannot autodetect the hardware floating point feature for non GCC compilers])
> ++ else
> ++ AC_MSG_CHECKING(if hardware fp is supported)
> ++ AC_COMPILE_IFELSE(
> ++ [AC_LANG_PROGRAM([[]],
> ++ [[
> ++#define HARD_FP_SUPPORT 1
> ++#if defined(__SOFTFP__)
> ++# undef HARD_FP_SUPPORT
> ++#endif
> ++int foo = HARD_FP_SUPPORT;
> ++ ]]) dnl AC_LANG_PROGRAM
> ++ ],
> ++ [ax_cv_hardware_fp=yes],
> ++ [ax_cv_hardware_fp=no],
> ++ [hardware FP support]); dnl AC_COMPILE_IFELSE
> ++ AC_MSG_RESULT([${ax_cv_hardware_fp}]);
> ++ fi
> ++ fi
> ++
> ++ case "x${ax_cv_hardware_fp}" in
> ++ "xyes")
> ++ $1
> ++ ;;
> ++ "xno")
> ++ $2
> ++ ;;
> ++ *)
> ++ AC_MSG_ERROR([Unknown setting for hardware floating point usage: '${ax_cv_hardware_fp}'.])
> ++ ;;
> ++ esac
> ++]) dnl AC_DEFUN
> diff --git a/patches/speex-1.2rc1/clean_up_configure_ac.diff b/patches/speex-1.2rc1/clean_up_configure_ac.diff
> new file mode 100644
> index 0000000..72abf44
> --- /dev/null
> +++ b/patches/speex-1.2rc1/clean_up_configure_ac.diff
> @@ -0,0 +1,160 @@
> +From: Juergen Beisert <jbe@pengutronix.de>
> +Subject: [PATCH] SPEEX: update the configure.ac by running 'autoupdate'
> +
> +Signed-off-by: Juergen Beisert <jbe@pengutronix.de>
> +
> +---
> + Makefile.am | 2 +
> + configure.ac | 81 +++++++++++++++++++++++++++++------------------------------
> + 2 files changed, 43 insertions(+), 40 deletions(-)
> +
> +Index: speex-1.2rc1/configure.ac
> +===================================================================
> +--- speex-1.2rc1.orig/configure.ac
> ++++ speex-1.2rc1/configure.ac
> +@@ -1,8 +1,10 @@
> + dnl Process this file with autoconf to produce a configure script. -*-m4-*-
> +
> +-AC_INIT(libspeex/speex.c)
> ++AC_INIT
> ++AC_CONFIG_SRCDIR([libspeex/speex.c])
> +
> +-AM_CONFIG_HEADER([config.h])
> ++AC_CONFIG_HEADERS([config.h])
> ++AC_CONFIG_MACRO_DIR([m4])
> +
> + SPEEX_MAJOR_VERSION=1
> + SPEEX_MINOR_VERSION=1
> +@@ -30,8 +32,11 @@ AM_INIT_AUTOMAKE($PACKAGE, $VERSION, no-
> + AM_MAINTAINER_MODE
> +
> + AC_CANONICAL_HOST
> +-AC_LIBTOOL_WIN32_DLL
> +-AM_PROG_LIBTOOL
> ++
> ++LT_INIT
> ++
> ++# default is more output while building the package
> ++AM_SILENT_RULES()
> +
> + AC_C_BIGENDIAN
> + AC_C_CONST
> +@@ -40,37 +45,24 @@ AC_C_RESTRICT
> +
> +
> + AC_MSG_CHECKING(for C99 variable-size arrays)
> +-AC_TRY_COMPILE( , [
> ++AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
> + int foo;
> + foo = 10;
> + int array[foo];
> +-],
> +-[has_var_arrays=yes;AC_DEFINE([VAR_ARRAYS], [], [Use C99 variable-size arrays])
> +-],
> +-has_var_arrays=no
> +-)
> ++]])],[has_var_arrays=yes;AC_DEFINE([VAR_ARRAYS], [], [Use C99 variable-size arrays])
> ++],[has_var_arrays=no
> ++])
> + AC_MSG_RESULT($has_var_arrays)
> +
> +-AC_CHECK_HEADERS([alloca.h getopt.h])
> +-AC_MSG_CHECKING(for alloca)
> +-AC_TRY_COMPILE( [
> +-#ifdef HAVE_ALLOCA_H
> +-# include <alloca.h>
> +-#endif
> +-#include <stdlib.h>
> +-], [
> +-int foo=10;
> +-int *array = alloca(foo);
> +-],
> +-[
> +-has_alloca=yes;
> +-if test x$has_var_arrays = "xno" ; then
> +-AC_DEFINE([USE_ALLOCA], [], [Make use of alloca])
> +-fi
> +-],
> +-has_alloca=no
> +-)
> +-AC_MSG_RESULT($has_alloca)
> ++AC_CHECK_HEADERS([alloca.h getopt.h fcntl.h libintl.h malloc.h sys/ioctl.h])
> ++AC_FUNC_ALLOCA
> ++AC_FUNC_MALLOC
> ++AC_FUNC_REALLOC
> ++AC_CHECK_FUNCS([floor memset pow sqrt strchr])
> ++
> ++AC_TYPE_INT16_T
> ++AC_TYPE_INT32_T
> ++AC_TYPE_SIZE_T
> +
> + AC_MSG_CHECKING(for SSE in current arch/CFLAGS)
> + AC_LINK_IFELSE([
> +@@ -138,7 +130,9 @@ if test "x$enable_libogg" = xyes; then
> + PKG_CHECK_MODULES(OGG, ogg)
> + fi
> +
> +-AC_CHECK_LIB(m, sin)
> ++AC_SEARCH_LIBS([floor], [m], [], [AC_MSG_ERROR([unable to find the floor() function])])
> ++AC_SEARCH_LIBS([pow], [m], [], [AC_MSG_ERROR([unable to find the pow() function])])
> ++AC_SEARCH_LIBS([sqrt], [m], [], [AC_MSG_ERROR([unable to find the sqrt() function])])
> +
> + # Check for getopt_long; if not found, use included source.
> + AC_CHECK_FUNCS([getopt_long],,
> +@@ -181,8 +175,7 @@ AC_ARG_ENABLE(fixed-point, [ --enable-f
> + AC_DEFINE([FIXED_POINT], , [Compile as fixed-point])
> + else
> + AC_DEFINE([FLOATING_POINT], , [Compile as floating-point])
> +-fi],
> +-AC_DEFINE([FLOATING_POINT], , [Compile as floating-point]))
> ++fi],AC_DEFINE([FLOATING_POINT], , [Compile as floating-point]))
> +
> + if test "$has_sse" = yes; then
> + AC_DEFINE([_USE_SSE], , [Enable SSE support])
> +@@ -296,7 +289,7 @@ fi
> + AC_SUBST(SIZE16)
> + AC_SUBST(SIZE32)
> +
> +-AC_OUTPUT([Makefile libspeex/Makefile src/Makefile doc/Makefile Speex.spec
> ++AC_CONFIG_FILES([Makefile libspeex/Makefile src/Makefile doc/Makefile Speex.spec
> + include/Makefile include/speex/Makefile speex.pc speexdsp.pc
> + win32/Makefile win32/libspeex/Makefile win32/speexenc/Makefile
> + win32/speexdec/Makefile symbian/Makefile
> +@@ -321,11 +314,19 @@ AC_OUTPUT([Makefile libspeex/Makefile sr
> + include/speex/speex_config_types.h ti/Makefile
> + ti/speex_C54_test/Makefile ti/speex_C55_test/Makefile
> + ti/speex_C64_test/Makefile ])
> +-
> +-if test "x$src" = "x"; then
> +-echo "**IMPORTANT**"
> +-echo "You don't seem to have the development package for libogg (libogg-devel) installed. Only the Speex library (libspeex) will be built (no
> encoder/decoder executable)"
> +-echo "You can download libogg from http://downloads.xiph.org/releases/ogg/"
> +-fi
> ++AC_OUTPUT
> +
> + echo "Type \"make; make install\" to compile and install Speex";
> ++
> ++echo "------------------------------------------------------"
> ++echo " Results:"
> ++echo "------------------------------------------------------"
> ++echo " Cross compiling: $cross_compiling"
> ++echo " Target CPU: $host_cpu"
> ++echo " Target OS: $host_os"
> ++echo " Install prefix: $prefix"
> ++echo " Compiler: $CC"
> ++echo " CFLAGS: $CFLAGS $OGG_CFLAGS"
> ++echo " Additional libs: $LIBS $OGG_LIBS"
> ++echo " Coder/Encoder tools: $enable_coders"
> ++echo "------------------------------------------------------"
> +Index: speex-1.2rc1/Makefile.am
> +===================================================================
> +--- speex-1.2rc1.orig/Makefile.am
> ++++ speex-1.2rc1/Makefile.am
> +@@ -1,5 +1,7 @@
> + ## Process this file with automake to produce Makefile.in. -*-Makefile-*-
> +
> ++ACLOCAL_AMFLAGS = -I m4
> ++
> + # To disable automatic dependency tracking if using other tools than
> + # gcc and gmake, add the option 'no-dependencies'
> + AUTOMAKE_OPTIONS = 1.8
> diff --git a/patches/speex-1.2rc1/fix_ogg_usage.diff b/patches/speex-1.2rc1/fix_ogg_usage.diff
> new file mode 100644
> index 0000000..0d0c30e
> --- /dev/null
> +++ b/patches/speex-1.2rc1/fix_ogg_usage.diff
> @@ -0,0 +1,162 @@
> +From: Juergen Beisert <jbe@pengutronix.de>
> +Subject: [PATCH] SPEEX: avoid libogg if not really required
> +
> +The SPEEX library needs the oggvorbis library only when the decode/encoder tools
> +are built. The library itself does not need it. But the configure test if the
> +oggvorbis library is required is broken. This patch fix it by adding
> +a new switch "--enable-coders". If not given, oggvorbis is not required anymore.
> +Also the handmade check for oggvorbis is now replaced by a simple call to
> +pkg_config.
> +
> +Signed-off-by: Juergen Beisert <jbe@pengutronix.de>
> +
> +---
> + acinclude.m4 | 102 -----------------------------------------------------------
> + configure.ac | 25 +++++++++++++-
> + 2 files changed, 24 insertions(+), 103 deletions(-)
> +
> +Index: speex-1.2rc1/configure.ac
> +===================================================================
> +--- speex-1.2rc1.orig/configure.ac
> ++++ speex-1.2rc1/configure.ac
> +@@ -112,9 +112,32 @@ AC_MSG_RESULT($has_visibility)
> +
> + AC_CHECK_HEADERS(sys/soundcard.h sys/audioio.h)
> +
> +-XIPH_PATH_OGG([src="src"], [src=""])
> ++PKG_PROG_PKG_CONFIG
> ++
> ++# without the coder tools we do not need libogg
> ++AC_MSG_CHECKING([whether to build coders tools])
> ++AC_ARG_ENABLE([coders],
> ++ [AS_HELP_STRING([--enable-coders],
> ++ [Enable coder tools (needs oggvorbis) @<:@default=disabled@:>@])],
> ++ [enable_coders="$enableval"],
> ++ [enable_coders=no])
> ++AC_MSG_RESULT([${enable_coders}])
> ++
> ++# building the coders requires libogg
> ++if test "x$enable_coders" = xyes; then
> ++ src="src"
> ++ enable_libogg="yes"
> ++else
> ++ src=""
> ++ enable_libogg="no"
> ++fi
> + AC_SUBST(src)
> +
> ++# do we need libogg?
> ++if test "x$enable_libogg" = xyes; then
> ++ PKG_CHECK_MODULES(OGG, ogg)
> ++fi
> ++
> + AC_CHECK_LIB(m, sin)
> +
> + # Check for getopt_long; if not found, use included source.
> +Index: speex-1.2rc1/acinclude.m4
> +===================================================================
> +--- speex-1.2rc1.orig/acinclude.m4
> ++++ /dev/null
> +@@ -1,102 +0,0 @@
> +-# Configure paths for libogg
> +-# Jack Moffitt <jack@icecast.org> 10-21-2000
> +-# Shamelessly stolen from Owen Taylor and Manish Singh
> +-
> +-dnl XIPH_PATH_OGG([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
> +-dnl Test for libogg, and define OGG_CFLAGS and OGG_LIBS
> +-dnl
> +-AC_DEFUN([XIPH_PATH_OGG],
> +-[dnl
> +-dnl Get the cflags and libraries
> +-dnl
> +-AC_ARG_WITH(ogg,[ --with-ogg=PFX Prefix where libogg is installed (optional)], ogg_prefix="$withval", ogg_prefix="")
> +-AC_ARG_WITH(ogg-libraries,[ --with-ogg-libraries=DIR Directory where libogg library is installed (optional)], ogg_libraries="$withval",
> ogg_libraries="")
> +-AC_ARG_WITH(ogg-includes,[ --with-ogg-includes=DIR Directory where libogg header files are installed (optional)], ogg_includes="$withval",
> ogg_includes="")
> +-AC_ARG_ENABLE(oggtest, [ --disable-oggtest Do not try to compile and run a test Ogg program],, enable_oggtest=yes)
> +-
> +- if test "x$ogg_libraries" != "x" ; then
> +- OGG_LIBS="-L$ogg_libraries"
> +- elif test "x$ogg_prefix" != "x" ; then
> +- OGG_LIBS="-L$ogg_prefix/lib"
> +- elif test "x$prefix" != "xNONE" ; then
> +- OGG_LIBS="-L$prefix/lib"
> +- fi
> +-
> +- OGG_LIBS="$OGG_LIBS -logg"
> +-
> +- if test "x$ogg_includes" != "x" ; then
> +- OGG_CFLAGS="-I$ogg_includes"
> +- elif test "x$ogg_prefix" != "x" ; then
> +- OGG_CFLAGS="-I$ogg_prefix/include"
> +- elif test "x$prefix" != "xNONE"; then
> +- OGG_CFLAGS="-I$prefix/include"
> +- fi
> +-
> +- AC_MSG_CHECKING(for Ogg)
> +- no_ogg=""
> +-
> +-
> +- if test "x$enable_oggtest" = "xyes" ; then
> +- ac_save_CFLAGS="$CFLAGS"
> +- ac_save_LIBS="$LIBS"
> +- CFLAGS="$CFLAGS $OGG_CFLAGS"
> +- LIBS="$LIBS $OGG_LIBS"
> +-dnl
> +-dnl Now check if the installed Ogg is sufficiently new.
> +-dnl
> +- rm -f conf.oggtest
> +- AC_TRY_RUN([
> +-#include <stdio.h>
> +-#include <stdlib.h>
> +-#include <string.h>
> +-#include <ogg/ogg.h>
> +-
> +-int main ()
> +-{
> +- system("touch conf.oggtest");
> +- return 0;
> +-}
> +-
> +-],, no_ogg=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
> +- CFLAGS="$ac_save_CFLAGS"
> +- LIBS="$ac_save_LIBS"
> +- fi
> +-
> +- if test "x$no_ogg" = "x" ; then
> +- AC_MSG_RESULT(yes)
> +- ifelse([$1], , :, [$1])
> +- else
> +- AC_MSG_RESULT(no)
> +- if test -f conf.oggtest ; then
> +- :
> +- else
> +- echo "*** Could not run Ogg test program, checking why..."
> +- CFLAGS="$CFLAGS $OGG_CFLAGS"
> +- LIBS="$LIBS $OGG_LIBS"
> +- AC_TRY_LINK([
> +-#include <stdio.h>
> +-#include <ogg/ogg.h>
> +-], [ return 0; ],
> +- [ echo "*** The test program compiled, but did not run. This usually means"
> +- echo "*** that the run-time linker is not finding Ogg or finding the wrong"
> +- echo "*** version of Ogg. If it is not finding Ogg, you'll need to set your"
> +- echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
> +- echo "*** to the installed location Also, make sure you have run ldconfig if that"
> +- echo "*** is required on your system"
> +- echo "***"
> +- echo "*** If you have an old version installed, it is best to remove it, although"
> +- echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
> +- [ echo "*** The test program failed to compile or link. See the file config.log for the"
> +- echo "*** exact error that occured. This usually means Ogg was incorrectly installed"
> +- echo "*** or that you have moved Ogg since it was installed." ])
> +- CFLAGS="$ac_save_CFLAGS"
> +- LIBS="$ac_save_LIBS"
> +- fi
> +- OGG_CFLAGS=""
> +- OGG_LIBS=""
> +- ifelse([$2], , :, [$2])
> +- fi
> +- AC_SUBST(OGG_CFLAGS)
> +- AC_SUBST(OGG_LIBS)
> +- rm -f conf.oggtest
> +-])
> diff --git a/patches/speex-1.2rc1/install_tests.diff b/patches/speex-1.2rc1/install_tests.diff
> new file mode 100644
> index 0000000..d0e4f4d
> --- /dev/null
> +++ b/patches/speex-1.2rc1/install_tests.diff
> @@ -0,0 +1,22 @@
> +From: Juergen Beisert <jbe@pengutronix.de>
> +Subject: [PATCH] also install the test tools
> +
> +Signed-off-by: Juergen Beisert <jbe@pengutronix.de>
> +
> +---
> + libspeex/Makefile.am | 2 +-
> + 1 file changed, 1 insertion(+), 1 deletion(-)
> +
> +Index: speex-1.2rc1/libspeex/Makefile.am
> +===================================================================
> +--- speex-1.2rc1.orig/libspeex/Makefile.am
> ++++ speex-1.2rc1/libspeex/Makefile.am
> +@@ -40,7 +40,7 @@ noinst_HEADERS = arch.h cb_search_arm4
> + libspeex_la_LDFLAGS = -no-undefined -version-info @SPEEX_LT_CURRENT@:@SPEEX_LT_REVISION@:@SPEEX_LT_AGE@
> + libspeexdsp_la_LDFLAGS = -no-undefined -version-info @SPEEX_LT_CURRENT@:@SPEEX_LT_REVISION@:@SPEEX_LT_AGE@
> +
> +-noinst_PROGRAMS = testenc testenc_wb testenc_uwb testdenoise testecho testjitter
> ++bin_PROGRAMS = testenc testenc_wb testenc_uwb testdenoise testecho testjitter
> + testenc_SOURCES = testenc.c
> + testenc_LDADD = libspeex.la
> + testenc_wb_SOURCES = testenc_wb.c
> diff --git a/patches/speex-1.2rc1/series b/patches/speex-1.2rc1/series
> new file mode 100644
> index 0000000..3adfd21
> --- /dev/null
> +++ b/patches/speex-1.2rc1/series
> @@ -0,0 +1,9 @@
> +fix_ogg_usage.diff
> +clean_up_configure_ac.diff
> +ax_floating_point.diff
> +ax_armv4_detection.diff
> +ax_armv5_detection.diff
> +ax_armv6_detection.diff
> +ax_armv7_detection.diff
> +add_more_autodetection.diff
> +install_tests.diff
> diff --git a/rules/speex.in b/rules/speex.in
> index 7ed3b83..060feb6 100644
> --- a/rules/speex.in
> +++ b/rules/speex.in
> @@ -3,62 +3,41 @@
> menuconfig SPEEX
> tristate
> select LIBC_M
> - select GCCLIBS_GCC_S
> - select LIBOGG
> + select GCCLIBS_GCC_S if SPEEX_INSTALL_SPEEXDEC
> + select LIBOGG if SPEEX_ENABLE_TOOLS
> prompt "speex "
> help
> - Speex is an Open Source/Free Software
> - patent-free audio compression format
> - designed for speech.
> + Speex is an Open Source/Free Software patent-free audio compression
> + format designed for speech.
>
> if SPEEX
>
> -config SPEEX_FIXED_POINT
> +config SPEEX_ENABLE_TOOLS
> bool
> - prompt "use fixed point"
>
> -config SPEEX_FIXED_POINT_DEBUG
> - bool
> - depends on SPEEX_FIXED_POINT
> - prompt "fixed point debugging"
> -
> -config SPEEX_FLOAT_API
> - bool
> - prompt "enable float api"
> -
> -config SPEEX_VBR
> - bool
> - prompt "enable VBR"
> -
> -choice
> - prompt "Kind of FFT to use"
> - default SPEEX_FFT_KISS
> -
> - config SPEEX_FFT_KISS
> - bool
> - prompt "kiss"
> -
> - config SPEEX_FFT_SMALLFT
> - bool
> - prompt "smallft"
> -
> - config SPEEX_FFT_GPL_FFTW3
> - bool
> - depends on BROKEN
> - prompt "gpl-fftw3 [BROKEN]"
> -
> - config SPEEX_FFT_PROPRIETARY_INTL_MKL
> - bool
> - depends on BROKEN
> - prompt "proprietary-intel-mkl [BROKEN]"
> -endchoice
> +comment "--- install options ---"
>
> config SPEEX_INSTALL_SPEEXENC
> bool
> - prompt "Install speexenc"
> + select SPEEX_ENABLE_TOOLS
> + prompt "install speexenc"
> + help
> + Install a tool to encode an audio file into the speex format.
> + Note: this requires libogg
>
> config SPEEX_INSTALL_SPEEXDEC
> bool
> - prompt "Install speexdec"
> + select SPEEX_ENABLE_TOOLS
> + prompt "install speexdec"
> + help
> + Install a tool to decode a speex audio file.
> + Note: this requires libogg
> +
> +config SPEEX_INSTALL_TESTS
> + bool
> + prompt "install tests"
> + help
> + Install some tests from the package. Useful only for development or
> + debugging.
>
> endif
> diff --git a/rules/speex.make b/rules/speex.make
> index d181ca4..51eff4d 100644
> --- a/rules/speex.make
> +++ b/rules/speex.make
> @@ -26,58 +26,22 @@ SPEEX_DIR := $(BUILDDIR)/$(SPEEX)
> SPEEX_LICENSE := unknown
>
> # ----------------------------------------------------------------------------
> -# Get
> -# ----------------------------------------------------------------------------
> -
> -$(SPEEX_SOURCE):
> - @$(call targetinfo)
> - @$(call get, SPEEX)
> -
> -# ----------------------------------------------------------------------------
> # Prepare
> # ----------------------------------------------------------------------------
>
> -SPEEX_FFT-$(PTXCONF_SPEEX_FFT_KISS) += kiss
> -SPEEX_FFT-$(PTXCONF_SPEEX_FFT_SMALLFT) += smallft
> -SPEEX_FFT-$(PTXCONF_SPEEX_FFT_GPL_FFTW3) += gpl-fftw3
> -SPEEX_FFT-$(PTXCONF_SPEEX_FFT_PROPRIETARY_INTL_MKL) += proprietary-intel-mkl
> -
> #
> # autoconf
> #
> SPEEX_CONF_TOOL := autoconf
> SPEEX_CONF_OPT := \
> $(CROSS_AUTOCONF_USR) \
> - --disable-oggtest \
> + --enable-shared \
> + --disable-static \
> --disable-valgrind \
> - --disable-fixed-point-debug \
> - --enable-fixed-point \
> - --disable-float-api \
> - --disable-vbr \
> --disable-ti-c55x \
> - --with-fft=$(SPEEX_FFT-y) \
> - --with-ogg=$(PTXDIST_SYSROOT_TARGET)/usr
> + --$(call ptx/endis, PTXCONF_SPEEX_ENABLE_TOOLS)-coders
>
> -ifdef PTXCONF_ARCH_ARM_V4
> -SPEEX_CONF_OPT += --enable-arm4-asm
> -else
> -SPEEX_CONF_OPT += --disable-arm4-asm
> -endif
> -ifdef PTXCONF_ARCH_ARM_V5E
> -SPEEX_CONF_OPT += --enable-arm5e-asm
> -else
> -SPEEX_CONF_OPT += --disable-arm5e-asm
> -endif
> -ifdef PTXCONF_ARCH_X86
> -SPEEX_CONF_OPT += --enable-sse
> -else
> -SPEEX_CONF_OPT += --disable-sse
> -endif
> -ifdef PTXCONF_ARCH_BLACKFIN
> -SPEEX_CONF_OPT += --enable-blackfin-asm
> -else
> -SPEEX_CONF_OPT += --disable-blackfin-asm
> -endif
> +SPEEX_TESTS := testdenoise testecho testenc testenc_uwb testenc_wb testjitter
>
> # ----------------------------------------------------------------------------
> # Target-Install
> @@ -102,6 +66,11 @@ endif
> @$(call install_lib, speex, 0, 0, 0644, libspeexdsp)
> @$(call install_lib, speex, 0, 0, 0644, libspeex)
>
> +ifdef PTXCONF_SPEEX_INSTALL_TESTS
> + @$(foreach test, $(SPEEX_TESTS), \
> + $(call install_copy, speex, 0, 0, 0755, -, /usr/bin/$(test));)
> +endif
> +
> @$(call install_finish, speex)
>
> @$(call touch)
>
> --
> Pengutronix e.K. | Juergen Beisert |
> Linux Solutions for Science and Industry | http://www.pengutronix.de/ |
>
> --
> ptxdist mailing list
> ptxdist@pengutronix.de
>
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
--
ptxdist mailing list
ptxdist@pengutronix.de
next prev parent reply other threads:[~2012-04-08 7:42 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-06 11:08 Juergen Beisert
2012-04-08 7:42 ` Michael Olbrich [this message]
2012-04-08 7:47 ` Wolfram Sang
2012-04-08 7:56 ` Michael Olbrich
2012-04-08 8:59 ` Juergen Beisert
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120408074216.GB13585@pengutronix.de \
--to=m.olbrich@pengutronix.de \
--cc=ptxdist@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox