From 28b7bccd226c4d9040ef0d8199a29e74f2da72b1 Mon Sep 17 00:00:00 2001 From: Tanu Kaskinen Date: Thu, 9 Jul 2015 13:43:13 +0300 Subject: speexdsp: initial recipe speexdsp was split off from speex in 1.2rc2, so we need a separate recipe for speexdsp when before we can upgrade speex. The speex recipe has so far used the --enable-fixed-point configure option unconditionally, but I believe that was a mistake, so I dropped that. The option is still enabled if TARGET_FPU is set to "soft". Commit e8f707f16a38d85535593a32efff6dcbf4ddb203 added the TARGET_FPU check, and I think that commit should have removed --enable-fixed-point from the static configure options, like it removed --disable-float-api. The NEON code caused a build failure on qemuarm64. As a workaround, I disabled NEON optimizations when building for aarch64. I added a patch that fixes a build failure in alsa-plugins. Compiling alsa-plugins against the new speexdsp version without the patch resulted in this error: In file included from .../usr/include/speex/speexdsp_types.h:122:0, from .../usr/include/speex/speex_preprocess.h:46, from .../alsa-plugins-1.0.29/speex/pcm_speex.c:23: .../usr/include/speex/speexdsp_config_types.h:13:9: error: unknown type name 'uint16_t' typedef uint16_t spx_uint16_t; ^ (From OE-Core rev: bb826645d188e5ea78718f3ad4b2e420eec3b354) Signed-off-by: Tanu Kaskinen Signed-off-by: Richard Purdie --- ...ely-on-HAVE_STDINT_H-et-al.-being-defined.patch | 63 ++++++++++++++++++++++ meta/recipes-multimedia/speex/speexdsp_1.2rc3.bb | 39 ++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 meta/recipes-multimedia/speex/speexdsp/0001-Don-t-rely-on-HAVE_STDINT_H-et-al.-being-defined.patch create mode 100644 meta/recipes-multimedia/speex/speexdsp_1.2rc3.bb diff --git a/meta/recipes-multimedia/speex/speexdsp/0001-Don-t-rely-on-HAVE_STDINT_H-et-al.-being-defined.patch b/meta/recipes-multimedia/speex/speexdsp/0001-Don-t-rely-on-HAVE_STDINT_H-et-al.-being-defined.patch new file mode 100644 index 0000000000..c7067daaa0 --- /dev/null +++ b/meta/recipes-multimedia/speex/speexdsp/0001-Don-t-rely-on-HAVE_STDINT_H-et-al.-being-defined.patch @@ -0,0 +1,63 @@ +From c73370ceafd138becee8ca3c688ba75756830bfe Mon Sep 17 00:00:00 2001 +From: Tanu Kaskinen +Date: Sun, 5 Jul 2015 17:48:16 +0300 +Subject: [PATCH] Don't rely on HAVE_STDINT_H et al. being defined + +Not everyone who includes speexdsp_config_types.h will have a test +which defines those, and if we've chosen to use the stdint types at +configure time then we know exactly which header(s) are available, so +just choose the best one then and generate the header to use it. + +This patch, including the above text, is copied from a commit in the +speex repository[1]. The original commit for speex was made by Ron +. + +[1] https://git.xiph.org/?p=speex.git;a=commitdiff;h=774c87d6cb7dd8dabdd17677fc6da753ecf4aa87 + +Upstream-Status: Backport + +Signed-off-by: Tanu Kaskinen +--- + configure.ac | 6 ++++++ + include/speex/speexdsp_config_types.h.in | 8 +------- + 2 files changed, 7 insertions(+), 7 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 2cd2d1e..1de0c23 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -334,6 +334,12 @@ AC_SUBST([USIZE16]) + AC_SUBST([SIZE32]) + AC_SUBST([USIZE32]) + ++AS_IF([test "$ac_cv_header_stdint_h" = "yes"], [INCLUDE_STDINT="#include "], ++ [test "$ac_cv_header_inttypes_h" = "yes"], [INCLUDE_STDINT="#include "], ++ [test "$ac_cv_header_sys_types_h" = "yes"], [INCLUDE_STDINT="#include "]) ++ ++AC_SUBST([INCLUDE_STDINT]) ++ + AC_CONFIG_FILES([ + Makefile libspeexdsp/Makefile doc/Makefile SpeexDSP.spec + include/Makefile include/speex/Makefile speexdsp.pc +diff --git a/include/speex/speexdsp_config_types.h.in b/include/speex/speexdsp_config_types.h.in +index 02b82fd..5ea7b55 100644 +--- a/include/speex/speexdsp_config_types.h.in ++++ b/include/speex/speexdsp_config_types.h.in +@@ -1,13 +1,7 @@ + #ifndef __SPEEX_TYPES_H__ + #define __SPEEX_TYPES_H__ + +-#if defined HAVE_STDINT_H +-# include +-#elif defined HAVE_INTTYPES_H +-# include +-#elif defined HAVE_SYS_TYPES_H +-# include +-#endif ++@INCLUDE_STDINT@ + + typedef @SIZE16@ spx_int16_t; + typedef @USIZE16@ spx_uint16_t; +-- +1.9.3 + diff --git a/meta/recipes-multimedia/speex/speexdsp_1.2rc3.bb b/meta/recipes-multimedia/speex/speexdsp_1.2rc3.bb new file mode 100644 index 0000000000..6b1acedbef --- /dev/null +++ b/meta/recipes-multimedia/speex/speexdsp_1.2rc3.bb @@ -0,0 +1,39 @@ +SUMMARY = "A patent-free DSP library" +DESCRIPTION = "SpeexDSP is a patent-free, Open Source/Free Software DSP library." +HOMEPAGE = "http://www.speex.org" +SECTION = "libs" +LICENSE = "BSD" +LIC_FILES_CHKSUM = "file://COPYING;md5=314649d8ba9dd7045dfb6683f298d0a8" + +SRC_URI = "http://downloads.xiph.org/releases/speex/speexdsp-${PV}.tar.gz \ + file://0001-Don-t-rely-on-HAVE_STDINT_H-et-al.-being-defined.patch" + +SRC_URI[md5sum] = "70d9d31184f7eb761192fd1ef0b73333" +SRC_URI[sha256sum] = "4ae688600039f5d224bdf2e222d2fbde65608447e4c2f681585e4dca6df692f1" + +inherit autotools pkgconfig + +EXTRA_OECONF = "\ + --disable-examples \ + ${@bb.utils.contains('TARGET_FPU', 'soft', '--enable-fixed-point --disable-float-api', '', d)} \ +" + +# Workaround for a build failure when building with MACHINE=qemuarm64. I think +# aarch64 is supposed to support NEON just fine, but building for qemuarm64 +# fails in NEON code: +# +# .../speexdsp-1.2rc3/libspeexdsp/resample_neon.h:148:5: error: impossible constraint in 'asm' +# asm volatile (" cmp %[len], #0\n" +# ^ +# +# I sent an email about the issue to speex-dev. At the time of writing there +# are no responses yet: +# http://thread.gmane.org/gmane.comp.audio.compression.speex.devel/7360 +EXTRA_OECONF += "${@bb.utils.contains('TUNE_FEATURES', 'aarch64', '--disable-neon', '', d)}" + +# speexdsp was split off from speex in 1.2rc2. Older versions of speex can't +# be installed together with speexdsp, since they contain overlapping files. +RCONFLICTS_${PN} = "speex (< 1.2rc2)" +RCONFLICTS_${PN}-dbg = "speex-dbg (< 1.2rc2)" +RCONFLICTS_${PN}-dev = "speex-dev (< 1.2rc2)" +RCONFLICTS_${PN}-staticdev = "speex-staticdev (< 1.2rc2)" -- cgit 1.2.3-korg