diff mbox series

[meta-multimedia,v2] spandsp: new telephony DSP library

Message ID 0afe6e7d5c9f3de0c3b82a646236bb9bbbe8210f.1710445397.git.joerg.sommer@navimatix.de
State Accepted
Headers show
Series [meta-multimedia,v2] spandsp: new telephony DSP library | expand

Commit Message

Jörg Sommer March 14, 2024, 7:43 p.m. UTC
From: Jörg Sommer <joerg.sommer@navimatix.de>

Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
---
 .../spandsp/spandsp/configure.patch           |  56 ++++++
 .../spandsp/spandsp/makefile.patch            | 161 ++++++++++++++++++
 .../recipes-multimedia/spandsp/spandsp_git.bb |  47 +++++
 3 files changed, 264 insertions(+)
 create mode 100644 meta-multimedia/recipes-multimedia/spandsp/spandsp/configure.patch
 create mode 100644 meta-multimedia/recipes-multimedia/spandsp/spandsp/makefile.patch
 create mode 100644 meta-multimedia/recipes-multimedia/spandsp/spandsp_git.bb

Comments

Khem Raj March 15, 2024, 4:37 a.m. UTC | #1
fails to build with musl/clang

https://snips.sh/f/qCR86Rwwz1

On Thu, Mar 14, 2024 at 12:43 PM Jörg Sommer via
lists.openembedded.org
<joerg.sommer=navimatix.de@lists.openembedded.org> wrote:
>
> From: Jörg Sommer <joerg.sommer@navimatix.de>
>
> Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
> ---
>  .../spandsp/spandsp/configure.patch           |  56 ++++++
>  .../spandsp/spandsp/makefile.patch            | 161 ++++++++++++++++++
>  .../recipes-multimedia/spandsp/spandsp_git.bb |  47 +++++
>  3 files changed, 264 insertions(+)
>  create mode 100644 meta-multimedia/recipes-multimedia/spandsp/spandsp/configure.patch
>  create mode 100644 meta-multimedia/recipes-multimedia/spandsp/spandsp/makefile.patch
>  create mode 100644 meta-multimedia/recipes-multimedia/spandsp/spandsp_git.bb
>
> diff --git a/meta-multimedia/recipes-multimedia/spandsp/spandsp/configure.patch b/meta-multimedia/recipes-multimedia/spandsp/spandsp/configure.patch
> new file mode 100644
> index 000000000..af504be76
> --- /dev/null
> +++ b/meta-multimedia/recipes-multimedia/spandsp/spandsp/configure.patch
> @@ -0,0 +1,56 @@
> +From: =?UTF-8?q?J=C3=B6rg=20Sommer?= <joerg.sommer@navimatix.de>
> +Date: Thu, 14 Mar 2024 09:41:57 +0100
> +Subject: [PATCH 2/2] configure: Replace manual search for libxml by
> + AC_CHECK_LIB
> +MIME-Version: 1.0
> +Content-Type: text/plain; charset=UTF-8
> +Content-Transfer-Encoding: 8bit
> +
> +The manual search fails if the include directories (and build environment)
> +are located somewhere else.
> +
> +Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
> +Upstream-Status: Submitted [https://github.com/freeswitch/spandsp/pull/74]
> +---
> +
> +ERROR: spandsp-3.0.0+git-r0 do_configure: QA Issue: This autoconf log indicates errors, it looked at host include and/or library paths while determining system capabilities.
> +
> + configure.ac | 22 +++++-----------------
> + 1 file changed, 5 insertions(+), 17 deletions(-)
> +
> +diff --git a/configure.ac b/configure.ac
> +index 2140837..b5138d6 100644
> +--- a/configure.ac
> ++++ b/configure.ac
> +@@ -185,23 +185,11 @@ then
> + fi
> +
> + # Determine XML2 include path
> +-AC_MSG_CHECKING(for libxml/xmlmemory.h)
> +-
> +-# Can we include headers using system include dirs?
> +-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <libxml/xmlmemory.h>]], [[int a = 1;]])],[XML2_INCLUDE=" "],[XML2_INCLUDE=])
> +-
> +-# Hunt through several possible directories to find the includes for libxml2
> +-if test "x$XML2_INCLUDE" = "x"; then
> +-    old_CPPFLAGS="$CPPFLAGS"
> +-    for i in $xml2_include_dir /usr/include /usr/local/include /usr/include/libxml2 /usr/local/include/libxml2 ; do
> +-        CPPFLAGS="$old_CPPFLAGS -I$i"
> +-        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <libxml/xmlmemory.h>]], [[int a = 1;]])],[XML2_INCLUDE="-I$i"],[XML2_INCLUDE=
> +-        ])
> +-        if test "x$XML2_INCLUDE" != "x"; then
> +-            break;
> +-        fi
> +-    done
> +-    CPPFLAGS="$old_CPPFLAGS $XML2_INCLUDE"
> ++AC_CHECK_LIB([xml2], [xmlParseFile], [libxml2_found=yes])
> ++if test "$libxml2_found" = "yes" ; then
> ++    AC_DEFINE(HAVE_LIBXML2,1,[defined when libxml2 is available])
> ++else
> ++    AC_MSG_WARN([libxml2 not found. Disabling cache.])
> + fi
> +
> + AC_CHECK_HEADERS([libxml/xmlmemory.h])
> +--
> +2.34.1
> +
> diff --git a/meta-multimedia/recipes-multimedia/spandsp/spandsp/makefile.patch b/meta-multimedia/recipes-multimedia/spandsp/spandsp/makefile.patch
> new file mode 100644
> index 000000000..d3eb047fe
> --- /dev/null
> +++ b/meta-multimedia/recipes-multimedia/spandsp/spandsp/makefile.patch
> @@ -0,0 +1,161 @@
> +From: =?UTF-8?q?J=C3=B6rg=20Sommer?= <joerg.sommer@navimatix.de>
> +Date: Thu, 14 Mar 2024 08:08:13 +0100
> +Subject: [PATCH 1/2] configure: Use AX_PROG_CC_FOR_BUILD for cross compiling
> +MIME-Version: 1.0
> +Content-Type: text/plain; charset=UTF-8
> +Content-Transfer-Encoding: 8bit
> +
> +The macro AX_PROG_CC_FOR_BUILD [1] sets the variables CC_FOR_BUILD and
> +..._FLAGS_FOR_BUILD they can be used [2] to build binaries used at compile
> +time.
> +
> +[1]: https://www.gnu.org/software/autoconf-archive/ax_prog_cc_for_build.html
> +[2]: https://stackoverflow.com/questions/24201260/autotools-cross-compilation-and-generated-sources/24208587#24208587
> +
> +Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
> +Upstream-Status: Submitted [https://github.com/freeswitch/spandsp/pull/74]
> +---
> + configure.ac    | 49 +-------------------------------------------
> + src/Makefile.am | 54 +++++++++++++++++++++++++------------------------
> + 2 files changed, 29 insertions(+), 74 deletions(-)
> +
> +diff --git a/configure.ac b/configure.ac
> +index 96fd022..2140837 100644
> +--- a/configure.ac
> ++++ b/configure.ac
> +@@ -55,54 +55,7 @@ AC_LANG([C])
> +
> + AX_COMPILER_VENDOR
> +
> +-if test "${build}" != "${host}"
> +-then
> +-    # If we are doing a Canadian Cross, in which the host and build systems
> +-    # are not the same, we set reasonable default values for the tools.
> +-
> +-    CC_FOR_BUILD=${CC_FOR_BUILD-gcc}
> +-    CPPFLAGS_FOR_BUILD="\$(CPPFLAGS)"
> +-    CC=${CC-${host_alias}-gcc}
> +-    CFLAGS=${CFLAGS-"-g -O2"}
> +-    CXX=${CXX-${host_alias}-c++}
> +-    CXXFLAGS=${CXXFLAGS-"-g -O2"}
> +-else
> +-    # Set reasonable default values for some tools even if not Canadian.
> +-    # Of course, these are different reasonable default values, originally
> +-    # specified directly in the Makefile.
> +-    # We don't export, so that autoconf can do its job.
> +-    # Note that all these settings are above the fragment inclusion point
> +-    # in Makefile.in, so can still be overridden by fragments.
> +-    # This is all going to change when we autoconfiscate...
> +-    CC_FOR_BUILD="\$(CC)"
> +-    CPPFLAGS_FOR_BUILD="\$(CPPFLAGS)"
> +-    AC_PROG_CC
> +-
> +-    # We must set the default linker to the linker used by gcc for the correct
> +-    # operation of libtool.  If LD is not defined and we are using gcc, try to
> +-    # set the LD default to the ld used by gcc.
> +-    if test -z "$LD"
> +-    then
> +-        if test "$GCC" = yes
> +-        then
> +-            case $build in
> +-            *-*-mingw*)
> +-                gcc_prog_ld=`$CC -print-prog-name=ld 2>&1 | tr -d '\015'` ;;
> +-            *)
> +-                gcc_prog_ld=`$CC -print-prog-name=ld 2>&1` ;;
> +-            esac
> +-            case $gcc_prog_ld in
> +-            # Accept absolute paths.
> +-            [[\\/]* | [A-Za-z]:[\\/]*)]
> +-                LD="$gcc_prog_ld" ;;
> +-            esac
> +-        fi
> +-    fi
> +-
> +-    CXX=${CXX-"c++"}
> +-    CFLAGS=${CFLAGS-"-g -O2"}
> +-    CXXFLAGS=${CXXFLAGS-"-g -O2"}
> +-fi
> ++AX_PROG_CC_FOR_BUILD
> +
> + AC_DEFUN([REMOVE_FROM_VAR],[
> +     new_val=""
> +diff --git a/src/Makefile.am b/src/Makefile.am
> +index e05fad5..9b409a1 100644
> +--- a/src/Makefile.am
> ++++ b/src/Makefile.am
> +@@ -386,44 +386,46 @@ noinst_HEADERS = cielab_luts.h \
> +                  v34_tx_pre_emphasis_filters.h \
> +                  v34_tables.h
> +
> +-make_at_dictionary$(EXEEXT): $(top_srcdir)/src/make_at_dictionary.c
> +-      $(CC_FOR_BUILD) -o make_at_dictionary$(EXEEXT) $(top_srcdir)/src/make_at_dictionary.c -DHAVE_CONFIG_H -I$(top_builddir)/src
> ++LINK_FOR_BUILD.c = $(CC_FOR_BUILD) -DHAVE_CONFIG_H -I$(top_builddir)/src $(CFLAGS_FOR_BUILD) $(CPPFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) $(TARGET_ARCH_FOR_BUILD)
> +
> +-make_cielab_luts$(EXEEXT): $(top_srcdir)/src/make_cielab_luts.c
> +-      $(CC_FOR_BUILD) -o make_cielab_luts$(EXEEXT) $(top_srcdir)/src/make_cielab_luts.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> ++make_at_dictionary$(BUILD_EXEEXT): $(top_srcdir)/src/make_at_dictionary.c
> ++      $(LINK_FOR_BUILD.c) -o $@ $^
> +
> +-make_math_fixed_tables$(EXEEXT): $(top_srcdir)/src/make_math_fixed_tables.c
> +-      $(CC_FOR_BUILD) -o make_math_fixed_tables$(EXEEXT) $(top_srcdir)/src/make_math_fixed_tables.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> ++make_cielab_luts$(BUILD_EXEEXT): $(top_srcdir)/src/make_cielab_luts.c
> ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> +
> +-make_modem_filter$(EXEEXT): $(top_srcdir)/src/make_modem_filter.c $(top_srcdir)/src/filter_tools.c
> +-      $(CC_FOR_BUILD) -o make_modem_filter$(EXEEXT) $(top_srcdir)/src/make_modem_filter.c $(top_srcdir)/src/filter_tools.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> ++make_math_fixed_tables$(BUILD_EXEEXT): $(top_srcdir)/src/make_math_fixed_tables.c
> ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> +
> +-make_modem_godard_coefficients$(EXEEXT): $(top_srcdir)/src/make_modem_godard_coefficients.c $(top_srcdir)/src/filter_tools.c
> +-      $(CC_FOR_BUILD) -o make_modem_godard_coefficients$(EXEEXT) $(top_srcdir)/src/make_modem_godard_coefficients.c $(top_srcdir)/src/filter_tools.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> ++make_modem_filter$(BUILD_EXEEXT): $(top_srcdir)/src/make_modem_filter.c $(top_srcdir)/src/filter_tools.c
> ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> +
> +-make_t43_gray_code_tables$(EXEEXT): $(top_srcdir)/src/make_t43_gray_code_tables.c
> +-      $(CC_FOR_BUILD) -o make_t43_gray_code_tables$(EXEEXT) $(top_srcdir)/src/make_t43_gray_code_tables.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> ++make_modem_godard_coefficients$(BUILD_EXEEXT): $(top_srcdir)/src/make_modem_godard_coefficients.c $(top_srcdir)/src/filter_tools.c
> ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> +
> +-make_v17_v32_constellation_map$(EXEEXT): $(top_srcdir)/src/make_v17_v32_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> +-      $(CC_FOR_BUILD) -o make_v17_v32_constellation_map$(EXEEXT) $(top_srcdir)/src/make_v17_v32_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> ++make_t43_gray_code_tables$(BUILD_EXEEXT): $(top_srcdir)/src/make_t43_gray_code_tables.c
> ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> +
> +-make_v17_v32_convolutional_encoder$(EXEEXT): $(top_srcdir)/src/make_v17_v32_convolutional_encoder.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> +-      $(CC_FOR_BUILD) -o make_v17_v32_convolutional_encoder$(EXEEXT) $(top_srcdir)/src/make_v17_v32_convolutional_encoder.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> ++make_v17_v32_constellation_map$(BUILD_EXEEXT): $(top_srcdir)/src/make_v17_v32_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> +
> +-make_v29_constellation_map$(EXEEXT): $(top_srcdir)/src/make_v29_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> +-      $(CC_FOR_BUILD) -o make_v29_constellation_map$(EXEEXT) $(top_srcdir)/src/make_v29_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> ++make_v17_v32_convolutional_encoder$(BUILD_EXEEXT): $(top_srcdir)/src/make_v17_v32_convolutional_encoder.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> +
> +-make_v34_convolutional_coders$(EXEEXT): $(top_srcdir)/src/make_v34_convolutional_coders.c
> +-      $(CC_FOR_BUILD) -o make_v34_convolutional_coders$(EXEEXT) $(top_srcdir)/src/make_v34_convolutional_coders.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> ++make_v29_constellation_map$(BUILD_EXEEXT): $(top_srcdir)/src/make_v29_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> +
> +-make_v34_probe_signals$(EXEEXT): $(top_srcdir)/src/make_v34_probe_signals.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> +-      $(CC_FOR_BUILD) -o make_v34_probe_signals$(EXEEXT) $(top_srcdir)/src/make_v34_probe_signals.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> ++make_v34_convolutional_coders$(BUILD_EXEEXT): $(top_srcdir)/src/make_v34_convolutional_coders.c
> ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> +
> +-make_v34_shell_map$(EXEEXT): $(top_srcdir)/src/make_v34_shell_map.c
> +-      $(CC_FOR_BUILD) -o make_v34_shell_map$(EXEEXT) $(top_srcdir)/src/make_v34_shell_map.c -DHAVE_CONFIG_H -I$(top_builddir)/src
> ++make_v34_probe_signals$(BUILD_EXEEXT): $(top_srcdir)/src/make_v34_probe_signals.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> ++      $(LINK_FOR_BUILD.c) -o $@ $^ -I$(top_srcdir)/src -lm
> +
> +-make_v34_tx_pre_emphasis_filters$(EXEEXT): $(top_srcdir)/src/make_v34_tx_pre_emphasis_filters.c $(top_srcdir)/tools/meteor-engine.c
> +-      $(CC_FOR_BUILD) -o make_v34_tx_pre_emphasis_filters$(EXEEXT) $(top_srcdir)/src/make_v34_tx_pre_emphasis_filters.c $(top_srcdir)/tools/meteor-engine.c -DHAVE_CONFIG_H -I$(top_builddir)/src -I$(top_builddir)/tools -lm
> ++make_v34_shell_map$(BUILD_EXEEXT): $(top_srcdir)/src/make_v34_shell_map.c
> ++      $(LINK_FOR_BUILD.c) -o $@ $^
> ++
> ++make_v34_tx_pre_emphasis_filters$(BUILD_EXEEXT): $(top_srcdir)/src/make_v34_tx_pre_emphasis_filters.c $(top_srcdir)/tools/meteor-engine.c
> ++      $(LINK_FOR_BUILD.c) -o $@ $^ -I$(top_srcdir)/tools -lm
> +
> + # We need to run make_at_dictionary, so it generates the
> + # at_interpreter_dictionary.h file
> +--
> +2.34.1
> +
> diff --git a/meta-multimedia/recipes-multimedia/spandsp/spandsp_git.bb b/meta-multimedia/recipes-multimedia/spandsp/spandsp_git.bb
> new file mode 100644
> index 000000000..84bc4a8f1
> --- /dev/null
> +++ b/meta-multimedia/recipes-multimedia/spandsp/spandsp_git.bb
> @@ -0,0 +1,47 @@
> +SUMMARY = "A DSP library for telephony"
> +DESCRIPTION = "\
> +    SpanDSP is a low-level signal processing library that modulates and \
> +    demodulates signals commonly used in telephony, such as the \"noise\" \
> +    generated by a fax modem or DTMF touchpad. \
> +"
> +HOMEPAGE = "https://www.soft-switch.org/"
> +BUGTRACKER = "https://github.com/freeswitch/spandsp/issues"
> +SECTION = "libs"
> +LICENSE = "LGPL-2.1-only"
> +LIC_FILES_CHKSUM = "file://COPYING;md5=8791c23ddf418deb5be264cffb5fa6bc"
> +
> +DEPENDS = "\
> +    libxml2 \
> +    tiff \
> +    tiff-native \
> +"
> +
> +PV = "3.0.0+git"
> +
> +SRC_URI = "\
> +    git://github.com/freeswitch/spandsp.git;protocol=https;branch=master \
> +    file://configure.patch \
> +    file://makefile.patch \
> +"
> +SRCREV = "7b0b8cf3d42b725405bcc63145de5e280265ce4e"
> +
> +S = "${WORKDIR}/git"
> +
> +inherit autotools
> +
> +PACKAGECONFIG ?= ""
> +
> +PACKAGECONFIG[mmx] = "--enable-mmx,--disable-mmx"
> +PACKAGECONFIG[sse] = "--enable-sse,--disable-sse"
> +PACKAGECONFIG[sse2] = "--enable-sse2,--disable-sse2"
> +PACKAGECONFIG[sse3] = "--enable-sse3,--disable-sse3"
> +PACKAGECONFIG[ssse3] = "--enable-ssse3,--disable-ssse3"
> +PACKAGECONFIG[sse4-1] = "--enable-sse4-1,--disable-sse4-1"
> +PACKAGECONFIG[sse4-2] = "--enable-sse4-2,--disable-sse4-2"
> +PACKAGECONFIG[avx] = "--enable-avx,--disable-avx"
> +PACKAGECONFIG[avx2] = "--enable-avx2,--disable-avx2"
> +PACKAGECONFIG[neon] = "--enable-neon,--disable-neon"
> +PACKAGECONFIG[fixed-point] = "--enable-fixed-point,--disable-fixed-point"
> +PACKAGECONFIG[v32bis] = "--enable-v32bis,--disable-v32bis"
> +PACKAGECONFIG[v34] = "--enable-v34,--disable-v34"
> +PACKAGECONFIG[sslfax] = "--enable-sslfax,--disable-sslfax"
> --
> 2.34.1
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#109321): https://lists.openembedded.org/g/openembedded-devel/message/109321
> Mute This Topic: https://lists.openembedded.org/mt/104933829/1997914
> Group Owner: openembedded-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Khem Raj March 15, 2024, 5:13 a.m. UTC | #2
Not much to do with musl, it fails when I use clang on my desktop as
well. you can see the same errors with clang on host

CC=clang ./configure
make

On Thu, Mar 14, 2024 at 9:37 PM Khem Raj <raj.khem@gmail.com> wrote:
>
> fails to build with musl/clang
>
> https://snips.sh/f/qCR86Rwwz1
>
> On Thu, Mar 14, 2024 at 12:43 PM Jörg Sommer via
> lists.openembedded.org
> <joerg.sommer=navimatix.de@lists.openembedded.org> wrote:
> >
> > From: Jörg Sommer <joerg.sommer@navimatix.de>
> >
> > Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
> > ---
> >  .../spandsp/spandsp/configure.patch           |  56 ++++++
> >  .../spandsp/spandsp/makefile.patch            | 161 ++++++++++++++++++
> >  .../recipes-multimedia/spandsp/spandsp_git.bb |  47 +++++
> >  3 files changed, 264 insertions(+)
> >  create mode 100644 meta-multimedia/recipes-multimedia/spandsp/spandsp/configure.patch
> >  create mode 100644 meta-multimedia/recipes-multimedia/spandsp/spandsp/makefile.patch
> >  create mode 100644 meta-multimedia/recipes-multimedia/spandsp/spandsp_git.bb
> >
> > diff --git a/meta-multimedia/recipes-multimedia/spandsp/spandsp/configure.patch b/meta-multimedia/recipes-multimedia/spandsp/spandsp/configure.patch
> > new file mode 100644
> > index 000000000..af504be76
> > --- /dev/null
> > +++ b/meta-multimedia/recipes-multimedia/spandsp/spandsp/configure.patch
> > @@ -0,0 +1,56 @@
> > +From: =?UTF-8?q?J=C3=B6rg=20Sommer?= <joerg.sommer@navimatix.de>
> > +Date: Thu, 14 Mar 2024 09:41:57 +0100
> > +Subject: [PATCH 2/2] configure: Replace manual search for libxml by
> > + AC_CHECK_LIB
> > +MIME-Version: 1.0
> > +Content-Type: text/plain; charset=UTF-8
> > +Content-Transfer-Encoding: 8bit
> > +
> > +The manual search fails if the include directories (and build environment)
> > +are located somewhere else.
> > +
> > +Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
> > +Upstream-Status: Submitted [https://github.com/freeswitch/spandsp/pull/74]
> > +---
> > +
> > +ERROR: spandsp-3.0.0+git-r0 do_configure: QA Issue: This autoconf log indicates errors, it looked at host include and/or library paths while determining system capabilities.
> > +
> > + configure.ac | 22 +++++-----------------
> > + 1 file changed, 5 insertions(+), 17 deletions(-)
> > +
> > +diff --git a/configure.ac b/configure.ac
> > +index 2140837..b5138d6 100644
> > +--- a/configure.ac
> > ++++ b/configure.ac
> > +@@ -185,23 +185,11 @@ then
> > + fi
> > +
> > + # Determine XML2 include path
> > +-AC_MSG_CHECKING(for libxml/xmlmemory.h)
> > +-
> > +-# Can we include headers using system include dirs?
> > +-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <libxml/xmlmemory.h>]], [[int a = 1;]])],[XML2_INCLUDE=" "],[XML2_INCLUDE=])
> > +-
> > +-# Hunt through several possible directories to find the includes for libxml2
> > +-if test "x$XML2_INCLUDE" = "x"; then
> > +-    old_CPPFLAGS="$CPPFLAGS"
> > +-    for i in $xml2_include_dir /usr/include /usr/local/include /usr/include/libxml2 /usr/local/include/libxml2 ; do
> > +-        CPPFLAGS="$old_CPPFLAGS -I$i"
> > +-        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <libxml/xmlmemory.h>]], [[int a = 1;]])],[XML2_INCLUDE="-I$i"],[XML2_INCLUDE=
> > +-        ])
> > +-        if test "x$XML2_INCLUDE" != "x"; then
> > +-            break;
> > +-        fi
> > +-    done
> > +-    CPPFLAGS="$old_CPPFLAGS $XML2_INCLUDE"
> > ++AC_CHECK_LIB([xml2], [xmlParseFile], [libxml2_found=yes])
> > ++if test "$libxml2_found" = "yes" ; then
> > ++    AC_DEFINE(HAVE_LIBXML2,1,[defined when libxml2 is available])
> > ++else
> > ++    AC_MSG_WARN([libxml2 not found. Disabling cache.])
> > + fi
> > +
> > + AC_CHECK_HEADERS([libxml/xmlmemory.h])
> > +--
> > +2.34.1
> > +
> > diff --git a/meta-multimedia/recipes-multimedia/spandsp/spandsp/makefile.patch b/meta-multimedia/recipes-multimedia/spandsp/spandsp/makefile.patch
> > new file mode 100644
> > index 000000000..d3eb047fe
> > --- /dev/null
> > +++ b/meta-multimedia/recipes-multimedia/spandsp/spandsp/makefile.patch
> > @@ -0,0 +1,161 @@
> > +From: =?UTF-8?q?J=C3=B6rg=20Sommer?= <joerg.sommer@navimatix.de>
> > +Date: Thu, 14 Mar 2024 08:08:13 +0100
> > +Subject: [PATCH 1/2] configure: Use AX_PROG_CC_FOR_BUILD for cross compiling
> > +MIME-Version: 1.0
> > +Content-Type: text/plain; charset=UTF-8
> > +Content-Transfer-Encoding: 8bit
> > +
> > +The macro AX_PROG_CC_FOR_BUILD [1] sets the variables CC_FOR_BUILD and
> > +..._FLAGS_FOR_BUILD they can be used [2] to build binaries used at compile
> > +time.
> > +
> > +[1]: https://www.gnu.org/software/autoconf-archive/ax_prog_cc_for_build.html
> > +[2]: https://stackoverflow.com/questions/24201260/autotools-cross-compilation-and-generated-sources/24208587#24208587
> > +
> > +Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
> > +Upstream-Status: Submitted [https://github.com/freeswitch/spandsp/pull/74]
> > +---
> > + configure.ac    | 49 +-------------------------------------------
> > + src/Makefile.am | 54 +++++++++++++++++++++++++------------------------
> > + 2 files changed, 29 insertions(+), 74 deletions(-)
> > +
> > +diff --git a/configure.ac b/configure.ac
> > +index 96fd022..2140837 100644
> > +--- a/configure.ac
> > ++++ b/configure.ac
> > +@@ -55,54 +55,7 @@ AC_LANG([C])
> > +
> > + AX_COMPILER_VENDOR
> > +
> > +-if test "${build}" != "${host}"
> > +-then
> > +-    # If we are doing a Canadian Cross, in which the host and build systems
> > +-    # are not the same, we set reasonable default values for the tools.
> > +-
> > +-    CC_FOR_BUILD=${CC_FOR_BUILD-gcc}
> > +-    CPPFLAGS_FOR_BUILD="\$(CPPFLAGS)"
> > +-    CC=${CC-${host_alias}-gcc}
> > +-    CFLAGS=${CFLAGS-"-g -O2"}
> > +-    CXX=${CXX-${host_alias}-c++}
> > +-    CXXFLAGS=${CXXFLAGS-"-g -O2"}
> > +-else
> > +-    # Set reasonable default values for some tools even if not Canadian.
> > +-    # Of course, these are different reasonable default values, originally
> > +-    # specified directly in the Makefile.
> > +-    # We don't export, so that autoconf can do its job.
> > +-    # Note that all these settings are above the fragment inclusion point
> > +-    # in Makefile.in, so can still be overridden by fragments.
> > +-    # This is all going to change when we autoconfiscate...
> > +-    CC_FOR_BUILD="\$(CC)"
> > +-    CPPFLAGS_FOR_BUILD="\$(CPPFLAGS)"
> > +-    AC_PROG_CC
> > +-
> > +-    # We must set the default linker to the linker used by gcc for the correct
> > +-    # operation of libtool.  If LD is not defined and we are using gcc, try to
> > +-    # set the LD default to the ld used by gcc.
> > +-    if test -z "$LD"
> > +-    then
> > +-        if test "$GCC" = yes
> > +-        then
> > +-            case $build in
> > +-            *-*-mingw*)
> > +-                gcc_prog_ld=`$CC -print-prog-name=ld 2>&1 | tr -d '\015'` ;;
> > +-            *)
> > +-                gcc_prog_ld=`$CC -print-prog-name=ld 2>&1` ;;
> > +-            esac
> > +-            case $gcc_prog_ld in
> > +-            # Accept absolute paths.
> > +-            [[\\/]* | [A-Za-z]:[\\/]*)]
> > +-                LD="$gcc_prog_ld" ;;
> > +-            esac
> > +-        fi
> > +-    fi
> > +-
> > +-    CXX=${CXX-"c++"}
> > +-    CFLAGS=${CFLAGS-"-g -O2"}
> > +-    CXXFLAGS=${CXXFLAGS-"-g -O2"}
> > +-fi
> > ++AX_PROG_CC_FOR_BUILD
> > +
> > + AC_DEFUN([REMOVE_FROM_VAR],[
> > +     new_val=""
> > +diff --git a/src/Makefile.am b/src/Makefile.am
> > +index e05fad5..9b409a1 100644
> > +--- a/src/Makefile.am
> > ++++ b/src/Makefile.am
> > +@@ -386,44 +386,46 @@ noinst_HEADERS = cielab_luts.h \
> > +                  v34_tx_pre_emphasis_filters.h \
> > +                  v34_tables.h
> > +
> > +-make_at_dictionary$(EXEEXT): $(top_srcdir)/src/make_at_dictionary.c
> > +-      $(CC_FOR_BUILD) -o make_at_dictionary$(EXEEXT) $(top_srcdir)/src/make_at_dictionary.c -DHAVE_CONFIG_H -I$(top_builddir)/src
> > ++LINK_FOR_BUILD.c = $(CC_FOR_BUILD) -DHAVE_CONFIG_H -I$(top_builddir)/src $(CFLAGS_FOR_BUILD) $(CPPFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) $(TARGET_ARCH_FOR_BUILD)
> > +
> > +-make_cielab_luts$(EXEEXT): $(top_srcdir)/src/make_cielab_luts.c
> > +-      $(CC_FOR_BUILD) -o make_cielab_luts$(EXEEXT) $(top_srcdir)/src/make_cielab_luts.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > ++make_at_dictionary$(BUILD_EXEEXT): $(top_srcdir)/src/make_at_dictionary.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^
> > +
> > +-make_math_fixed_tables$(EXEEXT): $(top_srcdir)/src/make_math_fixed_tables.c
> > +-      $(CC_FOR_BUILD) -o make_math_fixed_tables$(EXEEXT) $(top_srcdir)/src/make_math_fixed_tables.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > ++make_cielab_luts$(BUILD_EXEEXT): $(top_srcdir)/src/make_cielab_luts.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > +
> > +-make_modem_filter$(EXEEXT): $(top_srcdir)/src/make_modem_filter.c $(top_srcdir)/src/filter_tools.c
> > +-      $(CC_FOR_BUILD) -o make_modem_filter$(EXEEXT) $(top_srcdir)/src/make_modem_filter.c $(top_srcdir)/src/filter_tools.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > ++make_math_fixed_tables$(BUILD_EXEEXT): $(top_srcdir)/src/make_math_fixed_tables.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > +
> > +-make_modem_godard_coefficients$(EXEEXT): $(top_srcdir)/src/make_modem_godard_coefficients.c $(top_srcdir)/src/filter_tools.c
> > +-      $(CC_FOR_BUILD) -o make_modem_godard_coefficients$(EXEEXT) $(top_srcdir)/src/make_modem_godard_coefficients.c $(top_srcdir)/src/filter_tools.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > ++make_modem_filter$(BUILD_EXEEXT): $(top_srcdir)/src/make_modem_filter.c $(top_srcdir)/src/filter_tools.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > +
> > +-make_t43_gray_code_tables$(EXEEXT): $(top_srcdir)/src/make_t43_gray_code_tables.c
> > +-      $(CC_FOR_BUILD) -o make_t43_gray_code_tables$(EXEEXT) $(top_srcdir)/src/make_t43_gray_code_tables.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > ++make_modem_godard_coefficients$(BUILD_EXEEXT): $(top_srcdir)/src/make_modem_godard_coefficients.c $(top_srcdir)/src/filter_tools.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > +
> > +-make_v17_v32_constellation_map$(EXEEXT): $(top_srcdir)/src/make_v17_v32_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> > +-      $(CC_FOR_BUILD) -o make_v17_v32_constellation_map$(EXEEXT) $(top_srcdir)/src/make_v17_v32_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > ++make_t43_gray_code_tables$(BUILD_EXEEXT): $(top_srcdir)/src/make_t43_gray_code_tables.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > +
> > +-make_v17_v32_convolutional_encoder$(EXEEXT): $(top_srcdir)/src/make_v17_v32_convolutional_encoder.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> > +-      $(CC_FOR_BUILD) -o make_v17_v32_convolutional_encoder$(EXEEXT) $(top_srcdir)/src/make_v17_v32_convolutional_encoder.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > ++make_v17_v32_constellation_map$(BUILD_EXEEXT): $(top_srcdir)/src/make_v17_v32_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > +
> > +-make_v29_constellation_map$(EXEEXT): $(top_srcdir)/src/make_v29_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> > +-      $(CC_FOR_BUILD) -o make_v29_constellation_map$(EXEEXT) $(top_srcdir)/src/make_v29_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > ++make_v17_v32_convolutional_encoder$(BUILD_EXEEXT): $(top_srcdir)/src/make_v17_v32_convolutional_encoder.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > +
> > +-make_v34_convolutional_coders$(EXEEXT): $(top_srcdir)/src/make_v34_convolutional_coders.c
> > +-      $(CC_FOR_BUILD) -o make_v34_convolutional_coders$(EXEEXT) $(top_srcdir)/src/make_v34_convolutional_coders.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > ++make_v29_constellation_map$(BUILD_EXEEXT): $(top_srcdir)/src/make_v29_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > +
> > +-make_v34_probe_signals$(EXEEXT): $(top_srcdir)/src/make_v34_probe_signals.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> > +-      $(CC_FOR_BUILD) -o make_v34_probe_signals$(EXEEXT) $(top_srcdir)/src/make_v34_probe_signals.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > ++make_v34_convolutional_coders$(BUILD_EXEEXT): $(top_srcdir)/src/make_v34_convolutional_coders.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > +
> > +-make_v34_shell_map$(EXEEXT): $(top_srcdir)/src/make_v34_shell_map.c
> > +-      $(CC_FOR_BUILD) -o make_v34_shell_map$(EXEEXT) $(top_srcdir)/src/make_v34_shell_map.c -DHAVE_CONFIG_H -I$(top_builddir)/src
> > ++make_v34_probe_signals$(BUILD_EXEEXT): $(top_srcdir)/src/make_v34_probe_signals.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -I$(top_srcdir)/src -lm
> > +
> > +-make_v34_tx_pre_emphasis_filters$(EXEEXT): $(top_srcdir)/src/make_v34_tx_pre_emphasis_filters.c $(top_srcdir)/tools/meteor-engine.c
> > +-      $(CC_FOR_BUILD) -o make_v34_tx_pre_emphasis_filters$(EXEEXT) $(top_srcdir)/src/make_v34_tx_pre_emphasis_filters.c $(top_srcdir)/tools/meteor-engine.c -DHAVE_CONFIG_H -I$(top_builddir)/src -I$(top_builddir)/tools -lm
> > ++make_v34_shell_map$(BUILD_EXEEXT): $(top_srcdir)/src/make_v34_shell_map.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^
> > ++
> > ++make_v34_tx_pre_emphasis_filters$(BUILD_EXEEXT): $(top_srcdir)/src/make_v34_tx_pre_emphasis_filters.c $(top_srcdir)/tools/meteor-engine.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -I$(top_srcdir)/tools -lm
> > +
> > + # We need to run make_at_dictionary, so it generates the
> > + # at_interpreter_dictionary.h file
> > +--
> > +2.34.1
> > +
> > diff --git a/meta-multimedia/recipes-multimedia/spandsp/spandsp_git.bb b/meta-multimedia/recipes-multimedia/spandsp/spandsp_git.bb
> > new file mode 100644
> > index 000000000..84bc4a8f1
> > --- /dev/null
> > +++ b/meta-multimedia/recipes-multimedia/spandsp/spandsp_git.bb
> > @@ -0,0 +1,47 @@
> > +SUMMARY = "A DSP library for telephony"
> > +DESCRIPTION = "\
> > +    SpanDSP is a low-level signal processing library that modulates and \
> > +    demodulates signals commonly used in telephony, such as the \"noise\" \
> > +    generated by a fax modem or DTMF touchpad. \
> > +"
> > +HOMEPAGE = "https://www.soft-switch.org/"
> > +BUGTRACKER = "https://github.com/freeswitch/spandsp/issues"
> > +SECTION = "libs"
> > +LICENSE = "LGPL-2.1-only"
> > +LIC_FILES_CHKSUM = "file://COPYING;md5=8791c23ddf418deb5be264cffb5fa6bc"
> > +
> > +DEPENDS = "\
> > +    libxml2 \
> > +    tiff \
> > +    tiff-native \
> > +"
> > +
> > +PV = "3.0.0+git"
> > +
> > +SRC_URI = "\
> > +    git://github.com/freeswitch/spandsp.git;protocol=https;branch=master \
> > +    file://configure.patch \
> > +    file://makefile.patch \
> > +"
> > +SRCREV = "7b0b8cf3d42b725405bcc63145de5e280265ce4e"
> > +
> > +S = "${WORKDIR}/git"
> > +
> > +inherit autotools
> > +
> > +PACKAGECONFIG ?= ""
> > +
> > +PACKAGECONFIG[mmx] = "--enable-mmx,--disable-mmx"
> > +PACKAGECONFIG[sse] = "--enable-sse,--disable-sse"
> > +PACKAGECONFIG[sse2] = "--enable-sse2,--disable-sse2"
> > +PACKAGECONFIG[sse3] = "--enable-sse3,--disable-sse3"
> > +PACKAGECONFIG[ssse3] = "--enable-ssse3,--disable-ssse3"
> > +PACKAGECONFIG[sse4-1] = "--enable-sse4-1,--disable-sse4-1"
> > +PACKAGECONFIG[sse4-2] = "--enable-sse4-2,--disable-sse4-2"
> > +PACKAGECONFIG[avx] = "--enable-avx,--disable-avx"
> > +PACKAGECONFIG[avx2] = "--enable-avx2,--disable-avx2"
> > +PACKAGECONFIG[neon] = "--enable-neon,--disable-neon"
> > +PACKAGECONFIG[fixed-point] = "--enable-fixed-point,--disable-fixed-point"
> > +PACKAGECONFIG[v32bis] = "--enable-v32bis,--disable-v32bis"
> > +PACKAGECONFIG[v34] = "--enable-v34,--disable-v34"
> > +PACKAGECONFIG[sslfax] = "--enable-sslfax,--disable-sslfax"
> > --
> > 2.34.1
> >
> >
> > -=-=-=-=-=-=-=-=-=-=-=-
> > Links: You receive all messages sent to this group.
> > View/Reply Online (#109321): https://lists.openembedded.org/g/openembedded-devel/message/109321
> > Mute This Topic: https://lists.openembedded.org/mt/104933829/1997914
> > Group Owner: openembedded-devel+owner@lists.openembedded.org
> > Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [raj.khem@gmail.com]
> > -=-=-=-=-=-=-=-=-=-=-=-
> >
Jörg Sommer March 15, 2024, 7:19 a.m. UTC | #3
Yes, I'm getting these errors, too, when compiling with clang; independent of the clang version up to 19. It seems to be a problem of `pow()`. gcc might have a built-in and can compute it at compile-time, while clang has no built-in of pow.




Jörg Sommer

Software Developer / Programmierer

--


Navimatix GmbH

Tatzendpromenade 2

07745 Jena

T: 03641 - 327 99 0

F: 03641 - 526 306

M: joerg.sommer@navimatix.de

www.navimatix.de<http://www.navimatix.de/>



Geschäftsführer: Steffen Späthe, Jan Rommeley

Registergericht: Amtsgericht Jena, HRB 501480

________________________________
From: Khem Raj <raj.khem@gmail.com>
Sent: Friday, 15 March 2024 06:13
To: Jörg Sommer <joerg.sommer@navimatix.de>
Cc: openembedded-devel@lists.openembedded.org <openembedded-devel@lists.openembedded.org>
Subject: Re: [oe] [meta-multimedia][PATCH v2] spandsp: new telephony DSP library

Not much to do with musl, it fails when I use clang on my desktop as
well. you can see the same errors with clang on host

CC=clang ./configure
make

On Thu, Mar 14, 2024 at 9:37 PM Khem Raj <raj.khem@gmail.com> wrote:
>
> fails to build with musl/clang
>
> https://snips.sh/f/qCR86Rwwz1
>
> On Thu, Mar 14, 2024 at 12:43 PM Jörg Sommer via
> lists.openembedded.org
> <joerg.sommer=navimatix.de@lists.openembedded.org> wrote:
> >
> > From: Jörg Sommer <joerg.sommer@navimatix.de>
> >
> > Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
> > ---
> >  .../spandsp/spandsp/configure.patch           |  56 ++++++
> >  .../spandsp/spandsp/makefile.patch            | 161 ++++++++++++++++++
> >  .../recipes-multimedia/spandsp/spandsp_git.bb |  47 +++++
> >  3 files changed, 264 insertions(+)
> >  create mode 100644 meta-multimedia/recipes-multimedia/spandsp/spandsp/configure.patch
> >  create mode 100644 meta-multimedia/recipes-multimedia/spandsp/spandsp/makefile.patch
> >  create mode 100644 meta-multimedia/recipes-multimedia/spandsp/spandsp_git.bb
> >
> > diff --git a/meta-multimedia/recipes-multimedia/spandsp/spandsp/configure.patch b/meta-multimedia/recipes-multimedia/spandsp/spandsp/configure.patch
> > new file mode 100644
> > index 000000000..af504be76
> > --- /dev/null
> > +++ b/meta-multimedia/recipes-multimedia/spandsp/spandsp/configure.patch
> > @@ -0,0 +1,56 @@
> > +From: =?UTF-8?q?J=C3=B6rg=20Sommer?= <joerg.sommer@navimatix.de>
> > +Date: Thu, 14 Mar 2024 09:41:57 +0100
> > +Subject: [PATCH 2/2] configure: Replace manual search for libxml by
> > + AC_CHECK_LIB
> > +MIME-Version: 1.0
> > +Content-Type: text/plain; charset=UTF-8
> > +Content-Transfer-Encoding: 8bit
> > +
> > +The manual search fails if the include directories (and build environment)
> > +are located somewhere else.
> > +
> > +Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
> > +Upstream-Status: Submitted [https://github.com/freeswitch/spandsp/pull/74]
> > +---
> > +
> > +ERROR: spandsp-3.0.0+git-r0 do_configure: QA Issue: This autoconf log indicates errors, it looked at host include and/or library paths while determining system capabilities.
> > +
> > + configure.ac | 22 +++++-----------------
> > + 1 file changed, 5 insertions(+), 17 deletions(-)
> > +
> > +diff --git a/configure.ac b/configure.ac
> > +index 2140837..b5138d6 100644
> > +--- a/configure.ac
> > ++++ b/configure.ac
> > +@@ -185,23 +185,11 @@ then
> > + fi
> > +
> > + # Determine XML2 include path
> > +-AC_MSG_CHECKING(for libxml/xmlmemory.h)
> > +-
> > +-# Can we include headers using system include dirs?
> > +-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <libxml/xmlmemory.h>]], [[int a = 1;]])],[XML2_INCLUDE=" "],[XML2_INCLUDE=])
> > +-
> > +-# Hunt through several possible directories to find the includes for libxml2
> > +-if test "x$XML2_INCLUDE" = "x"; then
> > +-    old_CPPFLAGS="$CPPFLAGS"
> > +-    for i in $xml2_include_dir /usr/include /usr/local/include /usr/include/libxml2 /usr/local/include/libxml2 ; do
> > +-        CPPFLAGS="$old_CPPFLAGS -I$i"
> > +-        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <libxml/xmlmemory.h>]], [[int a = 1;]])],[XML2_INCLUDE="-I$i"],[XML2_INCLUDE=
> > +-        ])
> > +-        if test "x$XML2_INCLUDE" != "x"; then
> > +-            break;
> > +-        fi
> > +-    done
> > +-    CPPFLAGS="$old_CPPFLAGS $XML2_INCLUDE"
> > ++AC_CHECK_LIB([xml2], [xmlParseFile], [libxml2_found=yes])
> > ++if test "$libxml2_found" = "yes" ; then
> > ++    AC_DEFINE(HAVE_LIBXML2,1,[defined when libxml2 is available])
> > ++else
> > ++    AC_MSG_WARN([libxml2 not found. Disabling cache.])
> > + fi
> > +
> > + AC_CHECK_HEADERS([libxml/xmlmemory.h])
> > +--
> > +2.34.1
> > +
> > diff --git a/meta-multimedia/recipes-multimedia/spandsp/spandsp/makefile.patch b/meta-multimedia/recipes-multimedia/spandsp/spandsp/makefile.patch
> > new file mode 100644
> > index 000000000..d3eb047fe
> > --- /dev/null
> > +++ b/meta-multimedia/recipes-multimedia/spandsp/spandsp/makefile.patch
> > @@ -0,0 +1,161 @@
> > +From: =?UTF-8?q?J=C3=B6rg=20Sommer?= <joerg.sommer@navimatix.de>
> > +Date: Thu, 14 Mar 2024 08:08:13 +0100
> > +Subject: [PATCH 1/2] configure: Use AX_PROG_CC_FOR_BUILD for cross compiling
> > +MIME-Version: 1.0
> > +Content-Type: text/plain; charset=UTF-8
> > +Content-Transfer-Encoding: 8bit
> > +
> > +The macro AX_PROG_CC_FOR_BUILD [1] sets the variables CC_FOR_BUILD and
> > +..._FLAGS_FOR_BUILD they can be used [2] to build binaries used at compile
> > +time.
> > +
> > +[1]: https://www.gnu.org/software/autoconf-archive/ax_prog_cc_for_build.html
> > +[2]: https://stackoverflow.com/questions/24201260/autotools-cross-compilation-and-generated-sources/24208587#24208587
> > +
> > +Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
> > +Upstream-Status: Submitted [https://github.com/freeswitch/spandsp/pull/74]
> > +---
> > + configure.ac    | 49 +-------------------------------------------
> > + src/Makefile.am | 54 +++++++++++++++++++++++++------------------------
> > + 2 files changed, 29 insertions(+), 74 deletions(-)
> > +
> > +diff --git a/configure.ac b/configure.ac
> > +index 96fd022..2140837 100644
> > +--- a/configure.ac
> > ++++ b/configure.ac
> > +@@ -55,54 +55,7 @@ AC_LANG([C])
> > +
> > + AX_COMPILER_VENDOR
> > +
> > +-if test "${build}" != "${host}"
> > +-then
> > +-    # If we are doing a Canadian Cross, in which the host and build systems
> > +-    # are not the same, we set reasonable default values for the tools.
> > +-
> > +-    CC_FOR_BUILD=${CC_FOR_BUILD-gcc}
> > +-    CPPFLAGS_FOR_BUILD="\$(CPPFLAGS)"
> > +-    CC=${CC-${host_alias}-gcc}
> > +-    CFLAGS=${CFLAGS-"-g -O2"}
> > +-    CXX=${CXX-${host_alias}-c++}
> > +-    CXXFLAGS=${CXXFLAGS-"-g -O2"}
> > +-else
> > +-    # Set reasonable default values for some tools even if not Canadian.
> > +-    # Of course, these are different reasonable default values, originally
> > +-    # specified directly in the Makefile.
> > +-    # We don't export, so that autoconf can do its job.
> > +-    # Note that all these settings are above the fragment inclusion point
> > +-    # in Makefile.in, so can still be overridden by fragments.
> > +-    # This is all going to change when we autoconfiscate...
> > +-    CC_FOR_BUILD="\$(CC)"
> > +-    CPPFLAGS_FOR_BUILD="\$(CPPFLAGS)"
> > +-    AC_PROG_CC
> > +-
> > +-    # We must set the default linker to the linker used by gcc for the correct
> > +-    # operation of libtool.  If LD is not defined and we are using gcc, try to
> > +-    # set the LD default to the ld used by gcc.
> > +-    if test -z "$LD"
> > +-    then
> > +-        if test "$GCC" = yes
> > +-        then
> > +-            case $build in
> > +-            *-*-mingw*)
> > +-                gcc_prog_ld=`$CC -print-prog-name=ld 2>&1 | tr -d '\015'` ;;
> > +-            *)
> > +-                gcc_prog_ld=`$CC -print-prog-name=ld 2>&1` ;;
> > +-            esac
> > +-            case $gcc_prog_ld in
> > +-            # Accept absolute paths.
> > +-            [[\\/]* | [A-Za-z]:[\\/]*)]
> > +-                LD="$gcc_prog_ld" ;;
> > +-            esac
> > +-        fi
> > +-    fi
> > +-
> > +-    CXX=${CXX-"c++"}
> > +-    CFLAGS=${CFLAGS-"-g -O2"}
> > +-    CXXFLAGS=${CXXFLAGS-"-g -O2"}
> > +-fi
> > ++AX_PROG_CC_FOR_BUILD
> > +
> > + AC_DEFUN([REMOVE_FROM_VAR],[
> > +     new_val=""
> > +diff --git a/src/Makefile.am b/src/Makefile.am
> > +index e05fad5..9b409a1 100644
> > +--- a/src/Makefile.am
> > ++++ b/src/Makefile.am
> > +@@ -386,44 +386,46 @@ noinst_HEADERS = cielab_luts.h \
> > +                  v34_tx_pre_emphasis_filters.h \
> > +                  v34_tables.h
> > +
> > +-make_at_dictionary$(EXEEXT): $(top_srcdir)/src/make_at_dictionary.c
> > +-      $(CC_FOR_BUILD) -o make_at_dictionary$(EXEEXT) $(top_srcdir)/src/make_at_dictionary.c -DHAVE_CONFIG_H -I$(top_builddir)/src
> > ++LINK_FOR_BUILD.c = $(CC_FOR_BUILD) -DHAVE_CONFIG_H -I$(top_builddir)/src $(CFLAGS_FOR_BUILD) $(CPPFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) $(TARGET_ARCH_FOR_BUILD)
> > +
> > +-make_cielab_luts$(EXEEXT): $(top_srcdir)/src/make_cielab_luts.c
> > +-      $(CC_FOR_BUILD) -o make_cielab_luts$(EXEEXT) $(top_srcdir)/src/make_cielab_luts.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > ++make_at_dictionary$(BUILD_EXEEXT): $(top_srcdir)/src/make_at_dictionary.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^
> > +
> > +-make_math_fixed_tables$(EXEEXT): $(top_srcdir)/src/make_math_fixed_tables.c
> > +-      $(CC_FOR_BUILD) -o make_math_fixed_tables$(EXEEXT) $(top_srcdir)/src/make_math_fixed_tables.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > ++make_cielab_luts$(BUILD_EXEEXT): $(top_srcdir)/src/make_cielab_luts.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > +
> > +-make_modem_filter$(EXEEXT): $(top_srcdir)/src/make_modem_filter.c $(top_srcdir)/src/filter_tools.c
> > +-      $(CC_FOR_BUILD) -o make_modem_filter$(EXEEXT) $(top_srcdir)/src/make_modem_filter.c $(top_srcdir)/src/filter_tools.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > ++make_math_fixed_tables$(BUILD_EXEEXT): $(top_srcdir)/src/make_math_fixed_tables.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > +
> > +-make_modem_godard_coefficients$(EXEEXT): $(top_srcdir)/src/make_modem_godard_coefficients.c $(top_srcdir)/src/filter_tools.c
> > +-      $(CC_FOR_BUILD) -o make_modem_godard_coefficients$(EXEEXT) $(top_srcdir)/src/make_modem_godard_coefficients.c $(top_srcdir)/src/filter_tools.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > ++make_modem_filter$(BUILD_EXEEXT): $(top_srcdir)/src/make_modem_filter.c $(top_srcdir)/src/filter_tools.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > +
> > +-make_t43_gray_code_tables$(EXEEXT): $(top_srcdir)/src/make_t43_gray_code_tables.c
> > +-      $(CC_FOR_BUILD) -o make_t43_gray_code_tables$(EXEEXT) $(top_srcdir)/src/make_t43_gray_code_tables.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > ++make_modem_godard_coefficients$(BUILD_EXEEXT): $(top_srcdir)/src/make_modem_godard_coefficients.c $(top_srcdir)/src/filter_tools.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > +
> > +-make_v17_v32_constellation_map$(EXEEXT): $(top_srcdir)/src/make_v17_v32_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> > +-      $(CC_FOR_BUILD) -o make_v17_v32_constellation_map$(EXEEXT) $(top_srcdir)/src/make_v17_v32_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > ++make_t43_gray_code_tables$(BUILD_EXEEXT): $(top_srcdir)/src/make_t43_gray_code_tables.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > +
> > +-make_v17_v32_convolutional_encoder$(EXEEXT): $(top_srcdir)/src/make_v17_v32_convolutional_encoder.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> > +-      $(CC_FOR_BUILD) -o make_v17_v32_convolutional_encoder$(EXEEXT) $(top_srcdir)/src/make_v17_v32_convolutional_encoder.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > ++make_v17_v32_constellation_map$(BUILD_EXEEXT): $(top_srcdir)/src/make_v17_v32_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > +
> > +-make_v29_constellation_map$(EXEEXT): $(top_srcdir)/src/make_v29_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> > +-      $(CC_FOR_BUILD) -o make_v29_constellation_map$(EXEEXT) $(top_srcdir)/src/make_v29_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > ++make_v17_v32_convolutional_encoder$(BUILD_EXEEXT): $(top_srcdir)/src/make_v17_v32_convolutional_encoder.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > +
> > +-make_v34_convolutional_coders$(EXEEXT): $(top_srcdir)/src/make_v34_convolutional_coders.c
> > +-      $(CC_FOR_BUILD) -o make_v34_convolutional_coders$(EXEEXT) $(top_srcdir)/src/make_v34_convolutional_coders.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > ++make_v29_constellation_map$(BUILD_EXEEXT): $(top_srcdir)/src/make_v29_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > +
> > +-make_v34_probe_signals$(EXEEXT): $(top_srcdir)/src/make_v34_probe_signals.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> > +-      $(CC_FOR_BUILD) -o make_v34_probe_signals$(EXEEXT) $(top_srcdir)/src/make_v34_probe_signals.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > ++make_v34_convolutional_coders$(BUILD_EXEEXT): $(top_srcdir)/src/make_v34_convolutional_coders.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > +
> > +-make_v34_shell_map$(EXEEXT): $(top_srcdir)/src/make_v34_shell_map.c
> > +-      $(CC_FOR_BUILD) -o make_v34_shell_map$(EXEEXT) $(top_srcdir)/src/make_v34_shell_map.c -DHAVE_CONFIG_H -I$(top_builddir)/src
> > ++make_v34_probe_signals$(BUILD_EXEEXT): $(top_srcdir)/src/make_v34_probe_signals.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -I$(top_srcdir)/src -lm
> > +
> > +-make_v34_tx_pre_emphasis_filters$(EXEEXT): $(top_srcdir)/src/make_v34_tx_pre_emphasis_filters.c $(top_srcdir)/tools/meteor-engine.c
> > +-      $(CC_FOR_BUILD) -o make_v34_tx_pre_emphasis_filters$(EXEEXT) $(top_srcdir)/src/make_v34_tx_pre_emphasis_filters.c $(top_srcdir)/tools/meteor-engine.c -DHAVE_CONFIG_H -I$(top_builddir)/src -I$(top_builddir)/tools -lm
> > ++make_v34_shell_map$(BUILD_EXEEXT): $(top_srcdir)/src/make_v34_shell_map.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^
> > ++
> > ++make_v34_tx_pre_emphasis_filters$(BUILD_EXEEXT): $(top_srcdir)/src/make_v34_tx_pre_emphasis_filters.c $(top_srcdir)/tools/meteor-engine.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -I$(top_srcdir)/tools -lm
> > +
> > + # We need to run make_at_dictionary, so it generates the
> > + # at_interpreter_dictionary.h file
> > +--
> > +2.34.1
> > +
> > diff --git a/meta-multimedia/recipes-multimedia/spandsp/spandsp_git.bb b/meta-multimedia/recipes-multimedia/spandsp/spandsp_git.bb
> > new file mode 100644
> > index 000000000..84bc4a8f1
> > --- /dev/null
> > +++ b/meta-multimedia/recipes-multimedia/spandsp/spandsp_git.bb
> > @@ -0,0 +1,47 @@
> > +SUMMARY = "A DSP library for telephony"
> > +DESCRIPTION = "\
> > +    SpanDSP is a low-level signal processing library that modulates and \
> > +    demodulates signals commonly used in telephony, such as the \"noise\" \
> > +    generated by a fax modem or DTMF touchpad. \
> > +"
> > +HOMEPAGE = "https://www.soft-switch.org/"
> > +BUGTRACKER = "https://github.com/freeswitch/spandsp/issues"
> > +SECTION = "libs"
> > +LICENSE = "LGPL-2.1-only"
> > +LIC_FILES_CHKSUM = "file://COPYING;md5=8791c23ddf418deb5be264cffb5fa6bc"
> > +
> > +DEPENDS = "\
> > +    libxml2 \
> > +    tiff \
> > +    tiff-native \
> > +"
> > +
> > +PV = "3.0.0+git"
> > +
> > +SRC_URI = "\
> > +    git://github.com/freeswitch/spandsp.git;protocol=https;branch=master \
> > +    file://configure.patch \
> > +    file://makefile.patch \
> > +"
> > +SRCREV = "7b0b8cf3d42b725405bcc63145de5e280265ce4e"
> > +
> > +S = "${WORKDIR}/git"
> > +
> > +inherit autotools
> > +
> > +PACKAGECONFIG ?= ""
> > +
> > +PACKAGECONFIG[mmx] = "--enable-mmx,--disable-mmx"
> > +PACKAGECONFIG[sse] = "--enable-sse,--disable-sse"
> > +PACKAGECONFIG[sse2] = "--enable-sse2,--disable-sse2"
> > +PACKAGECONFIG[sse3] = "--enable-sse3,--disable-sse3"
> > +PACKAGECONFIG[ssse3] = "--enable-ssse3,--disable-ssse3"
> > +PACKAGECONFIG[sse4-1] = "--enable-sse4-1,--disable-sse4-1"
> > +PACKAGECONFIG[sse4-2] = "--enable-sse4-2,--disable-sse4-2"
> > +PACKAGECONFIG[avx] = "--enable-avx,--disable-avx"
> > +PACKAGECONFIG[avx2] = "--enable-avx2,--disable-avx2"
> > +PACKAGECONFIG[neon] = "--enable-neon,--disable-neon"
> > +PACKAGECONFIG[fixed-point] = "--enable-fixed-point,--disable-fixed-point"
> > +PACKAGECONFIG[v32bis] = "--enable-v32bis,--disable-v32bis"
> > +PACKAGECONFIG[v34] = "--enable-v34,--disable-v34"
> > +PACKAGECONFIG[sslfax] = "--enable-sslfax,--disable-sslfax"
> > --
> > 2.34.1
> >
> >
> > -=-=-=-=-=-=-=-=-=-=-=-
> > Links: You receive all messages sent to this group.
> > View/Reply Online (#109321): https://lists.openembedded.org/g/openembedded-devel/message/109321
> > Mute This Topic: https://lists.openembedded.org/mt/104933829/1997914
> > Group Owner: openembedded-devel+owner@lists.openembedded.org
> > Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [raj.khem@gmail.com]
> > -=-=-=-=-=-=-=-=-=-=-=-
> >
Martin Jansa March 16, 2024, 8:02 a.m. UTC | #4
I'm seeing the same errors with gcc :)

libtool: compile:  ccache arm-oe-linux-gnueabi-gcc -mthumb -mfpu=neon
-mfloat-abi=softfp -mcpu=cortex-a9 -mtune=cortex-a9
-fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security
-Werror=format-security -Werror=return-type -funwind-tables -D_TIME_BITS=64
-D_FILE_OFFSET_BITS=64
--sysroot=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/lib32-recipe-sysroot
-DHAVE_CONFIG_H -I. -I../../git/src -I.. -DNDEBUG -Wunused-but-set-variable
-std=gnu99 -ffast-math -Wall -Wunused-variable -Wwrite-strings
-Wstrict-prototypes -Wmissing-prototypes -fvisibility=hidden
-DHAVE_VISIBILITY=1 -O2 -pipe -g -feliminate-unused-debug-types
-fcanon-prefix-map
-fmacro-prefix-map=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/git=/usr/src/debug/lib32-spandsp/3.0.0+git
-fdebug-prefix-map=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/git=/usr/src/debug/lib32-spandsp/3.0.0+git
-fmacro-prefix-map=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/build=/usr/src/debug/lib32-spandsp/3.0.0+git
-fdebug-prefix-map=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/build=/usr/src/debug/lib32-spandsp/3.0.0+git
-fdebug-prefix-map=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/lib32-recipe-sysroot=
-fmacro-prefix-map=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/lib32-recipe-sysroot=
-fdebug-prefix-map=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/recipe-sysroot-native=
-c ../../git/src/t38_terminal.c  -fPIC -DPIC -o .libs/t38_terminal.o
../../git/src/ademco_contactid.c:449:110: error: expected ')' before ';'
token
  449 | static const int detection_threshold            =
goertzel_threshold_dbm0(GOERTZEL_SAMPLES_PER_BLOCK, -42.0f);
      |
                                         ^
In file included from ../../git/src/ademco_contactid.c:66:
../../git/src/spandsp/tone_detect.h:63:55: note: to match this '('
   63 | #define goertzel_threshold_dbm0(len,thresh)     (int)
((len*len*256.0*256.0/2.0*pow(10.0, (thresh - DBM0_MAX_SINE_POWER)/10.0))
      |                                                       ^
../../git/src/ademco_contactid.c:449:51: note: in expansion of macro
'goertzel_threshold_dbm0'
  449 | static const int detection_threshold            =
goertzel_threshold_dbm0(GOERTZEL_SAMPLES_PER_BLOCK, -42.0f);
      |
^~~~~~~~~~~~~~~~~~~~~~~
../../git/src/ademco_contactid.c:449:18: warning: 'detection_threshold'
defined but not used [-Wunused-const-variable=]
  449 | static const int detection_threshold            =
goertzel_threshold_dbm0(GOERTZEL_SAMPLES_PER_BLOCK, -42.0f);
      |                  ^~~~~~~~~~~~~~~~~~~
../../git/src/ademco_contactid.c:210:35: warning: 'ademco_codes' defined
but not used [-Wunused-const-variable=]
  210 | static const struct ademco_code_s ademco_codes[] =
      |                                   ^~~~~~~~~~~~
make[2]: *** [Makefile:1091: ademco_contactid.lo] Error 1

This is with master-next meta-oe from yesterday in build with multilib
(night not be important)

On Fri, Mar 15, 2024 at 8:19 AM Jörg Sommer via lists.openembedded.org
<joerg.sommer=navimatix.de@lists.openembedded.org> wrote:

> Yes, I'm getting these errors, too, when compiling with clang; independent
> of the clang version up to 19. It seems to be a problem of `pow()`. gcc
> might have a built-in and can compute it at compile-time, while clang has
> no built-in of pow.
>
>
>
> Jörg Sommer
>
> Software Developer / Programmierer
> --
>
> Navimatix GmbH
>
> Tatzendpromenade 2
>
> 07745 Jena
>
> T: 03641 - 327 99 0
>
> F: 03641 - 526 306
>
> M: *joerg.sommer@navimatix.de <joerg.sommer@navimatix.de>*
>
> *www.navimatix.de <http://www.navimatix.de/>*
>
>
>
> Geschäftsführer: Steffen Späthe, Jan Rommeley
>
> Registergericht: Amtsgericht Jena, HRB 501480
>
> ------------------------------
> *From:* Khem Raj <raj.khem@gmail.com>
> *Sent:* Friday, 15 March 2024 06:13
> *To:* Jörg Sommer <joerg.sommer@navimatix.de>
> *Cc:* openembedded-devel@lists.openembedded.org <
> openembedded-devel@lists.openembedded.org>
> *Subject:* Re: [oe] [meta-multimedia][PATCH v2] spandsp: new telephony
> DSP library
>
> Not much to do with musl, it fails when I use clang on my desktop as
> well. you can see the same errors with clang on host
>
> CC=clang ./configure
> make
>
> On Thu, Mar 14, 2024 at 9:37 PM Khem Raj <raj.khem@gmail.com> wrote:
> >
> > fails to build with musl/clang
> >
> > https://snips.sh/f/qCR86Rwwz1
> >
> > On Thu, Mar 14, 2024 at 12:43 PM Jörg Sommer via
> > lists.openembedded.org
> > <joerg.sommer=navimatix.de@lists.openembedded.org> wrote:
> > >
> > > From: Jörg Sommer <joerg.sommer@navimatix.de>
> > >
> > > Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
> > > ---
> > >  .../spandsp/spandsp/configure.patch           |  56 ++++++
> > >  .../spandsp/spandsp/makefile.patch            | 161 ++++++++++++++++++
> > >  .../recipes-multimedia/spandsp/spandsp_git.bb |  47 +++++
> > >  3 files changed, 264 insertions(+)
> > >  create mode 100644
> meta-multimedia/recipes-multimedia/spandsp/spandsp/configure.patch
> > >  create mode 100644
> meta-multimedia/recipes-multimedia/spandsp/spandsp/makefile.patch
> > >  create mode 100644 meta-multimedia/recipes-multimedia/spandsp/
> spandsp_git.bb
> > >
> > > diff --git
> a/meta-multimedia/recipes-multimedia/spandsp/spandsp/configure.patch
> b/meta-multimedia/recipes-multimedia/spandsp/spandsp/configure.patch
> > > new file mode 100644
> > > index 000000000..af504be76
> > > --- /dev/null
> > > +++
> b/meta-multimedia/recipes-multimedia/spandsp/spandsp/configure.patch
> > > @@ -0,0 +1,56 @@
> > > +From: =?UTF-8?q?J=C3=B6rg=20Sommer?= <joerg.sommer@navimatix.de>
> > > +Date: Thu, 14 Mar 2024 09:41:57 +0100
> > > +Subject: [PATCH 2/2] configure: Replace manual search for libxml by
> > > + AC_CHECK_LIB
> > > +MIME-Version: 1.0
> > > +Content-Type: text/plain; charset=UTF-8
> > > +Content-Transfer-Encoding: 8bit
> > > +
> > > +The manual search fails if the include directories (and build
> environment)
> > > +are located somewhere else.
> > > +
> > > +Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
> > > +Upstream-Status: Submitted [
> https://github.com/freeswitch/spandsp/pull/74]
> > > +---
> > > +
> > > +ERROR: spandsp-3.0.0+git-r0 do_configure: QA Issue: This autoconf log
> indicates errors, it looked at host include and/or library paths while
> determining system capabilities.
> > > +
> > > + configure.ac | 22 +++++-----------------
> > > + 1 file changed, 5 insertions(+), 17 deletions(-)
> > > +
> > > +diff --git a/configure.ac b/configure.ac
> > > +index 2140837..b5138d6 100644
> > > +--- a/configure.ac
> > > ++++ b/configure.ac
> > > +@@ -185,23 +185,11 @@ then
> > > + fi
> > > +
> > > + # Determine XML2 include path
> > > +-AC_MSG_CHECKING(for libxml/xmlmemory.h)
> > > +-
> > > +-# Can we include headers using system include dirs?
> > > +-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include
> <libxml/xmlmemory.h>]], [[int a = 1;]])],[XML2_INCLUDE=" "],[XML2_INCLUDE=])
> > > +-
> > > +-# Hunt through several possible directories to find the includes for
> libxml2
> > > +-if test "x$XML2_INCLUDE" = "x"; then
> > > +-    old_CPPFLAGS="$CPPFLAGS"
> > > +-    for i in $xml2_include_dir /usr/include /usr/local/include
> /usr/include/libxml2 /usr/local/include/libxml2 ; do
> > > +-        CPPFLAGS="$old_CPPFLAGS -I$i"
> > > +-        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include
> <libxml/xmlmemory.h>]], [[int a =
> 1;]])],[XML2_INCLUDE="-I$i"],[XML2_INCLUDE=
> > > +-        ])
> > > +-        if test "x$XML2_INCLUDE" != "x"; then
> > > +-            break;
> > > +-        fi
> > > +-    done
> > > +-    CPPFLAGS="$old_CPPFLAGS $XML2_INCLUDE"
> > > ++AC_CHECK_LIB([xml2], [xmlParseFile], [libxml2_found=yes])
> > > ++if test "$libxml2_found" = "yes" ; then
> > > ++    AC_DEFINE(HAVE_LIBXML2,1,[defined when libxml2 is available])
> > > ++else
> > > ++    AC_MSG_WARN([libxml2 not found. Disabling cache.])
> > > + fi
> > > +
> > > + AC_CHECK_HEADERS([libxml/xmlmemory.h])
> > > +--
> > > +2.34.1
> > > +
> > > diff --git
> a/meta-multimedia/recipes-multimedia/spandsp/spandsp/makefile.patch
> b/meta-multimedia/recipes-multimedia/spandsp/spandsp/makefile.patch
> > > new file mode 100644
> > > index 000000000..d3eb047fe
> > > --- /dev/null
> > > +++ b/meta-multimedia/recipes-multimedia/spandsp/spandsp/makefile.patch
> > > @@ -0,0 +1,161 @@
> > > +From: =?UTF-8?q?J=C3=B6rg=20Sommer?= <joerg.sommer@navimatix.de>
> > > +Date: Thu, 14 Mar 2024 08:08:13 +0100
> > > +Subject: [PATCH 1/2] configure: Use AX_PROG_CC_FOR_BUILD for cross
> compiling
> > > +MIME-Version: 1.0
> > > +Content-Type: text/plain; charset=UTF-8
> > > +Content-Transfer-Encoding: 8bit
> > > +
> > > +The macro AX_PROG_CC_FOR_BUILD [1] sets the variables CC_FOR_BUILD and
> > > +..._FLAGS_FOR_BUILD they can be used [2] to build binaries used at
> compile
> > > +time.
> > > +
> > > +[1]:
> https://www.gnu.org/software/autoconf-archive/ax_prog_cc_for_build.html
> > > +[2]:
> https://stackoverflow.com/questions/24201260/autotools-cross-compilation-and-generated-sources/24208587#24208587
> > > +
> > > +Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
> > > +Upstream-Status: Submitted [
> https://github.com/freeswitch/spandsp/pull/74]
> > > +---
> > > + configure.ac    | 49 +-------------------------------------------
> > > + src/Makefile.am | 54
> +++++++++++++++++++++++++------------------------
> > > + 2 files changed, 29 insertions(+), 74 deletions(-)
> > > +
> > > +diff --git a/configure.ac b/configure.ac
> > > +index 96fd022..2140837 100644
> > > +--- a/configure.ac
> > > ++++ b/configure.ac
> > > +@@ -55,54 +55,7 @@ AC_LANG([C])
> > > +
> > > + AX_COMPILER_VENDOR
> > > +
> > > +-if test "${build}" != "${host}"
> > > +-then
> > > +-    # If we are doing a Canadian Cross, in which the host and build
> systems
> > > +-    # are not the same, we set reasonable default values for the
> tools.
> > > +-
> > > +-    CC_FOR_BUILD=${CC_FOR_BUILD-gcc}
> > > +-    CPPFLAGS_FOR_BUILD="\$(CPPFLAGS)"
> > > +-    CC=${CC-${host_alias}-gcc}
> > > +-    CFLAGS=${CFLAGS-"-g -O2"}
> > > +-    CXX=${CXX-${host_alias}-c++}
> > > +-    CXXFLAGS=${CXXFLAGS-"-g -O2"}
> > > +-else
> > > +-    # Set reasonable default values for some tools even if not
> Canadian.
> > > +-    # Of course, these are different reasonable default values,
> originally
> > > +-    # specified directly in the Makefile.
> > > +-    # We don't export, so that autoconf can do its job.
> > > +-    # Note that all these settings are above the fragment inclusion
> point
> > > +-    # in Makefile.in, so can still be overridden by fragments.
> > > +-    # This is all going to change when we autoconfiscate...
> > > +-    CC_FOR_BUILD="\$(CC)"
> > > +-    CPPFLAGS_FOR_BUILD="\$(CPPFLAGS)"
> > > +-    AC_PROG_CC
> > > +-
> > > +-    # We must set the default linker to the linker used by gcc for
> the correct
> > > +-    # operation of libtool.  If LD is not defined and we are using
> gcc, try to
> > > +-    # set the LD default to the ld used by gcc.
> > > +-    if test -z "$LD"
> > > +-    then
> > > +-        if test "$GCC" = yes
> > > +-        then
> > > +-            case $build in
> > > +-            *-*-mingw*)
> > > +-                gcc_prog_ld=`$CC -print-prog-name=ld 2>&1 | tr -d
> '\015'` ;;
> > > +-            *)
> > > +-                gcc_prog_ld=`$CC -print-prog-name=ld 2>&1` ;;
> > > +-            esac
> > > +-            case $gcc_prog_ld in
> > > +-            # Accept absolute paths.
> > > +-            [[\\/]* | [A-Za-z]:[\\/]*)]
> > > +-                LD="$gcc_prog_ld" ;;
> > > +-            esac
> > > +-        fi
> > > +-    fi
> > > +-
> > > +-    CXX=${CXX-"c++"}
> > > +-    CFLAGS=${CFLAGS-"-g -O2"}
> > > +-    CXXFLAGS=${CXXFLAGS-"-g -O2"}
> > > +-fi
> > > ++AX_PROG_CC_FOR_BUILD
> > > +
> > > + AC_DEFUN([REMOVE_FROM_VAR],[
> > > +     new_val=""
> > > +diff --git a/src/Makefile.am b/src/Makefile.am
> > > +index e05fad5..9b409a1 100644
> > > +--- a/src/Makefile.am
> > > ++++ b/src/Makefile.am
> > > +@@ -386,44 +386,46 @@ noinst_HEADERS = cielab_luts.h \
> > > +                  v34_tx_pre_emphasis_filters.h \
> > > +                  v34_tables.h
> > > +
> > > +-make_at_dictionary$(EXEEXT): $(top_srcdir)/src/make_at_dictionary.c
> > > +-      $(CC_FOR_BUILD) -o make_at_dictionary$(EXEEXT)
> $(top_srcdir)/src/make_at_dictionary.c -DHAVE_CONFIG_H -I$(top_builddir)/src
> > > ++LINK_FOR_BUILD.c = $(CC_FOR_BUILD) -DHAVE_CONFIG_H
> -I$(top_builddir)/src $(CFLAGS_FOR_BUILD) $(CPPFLAGS_FOR_BUILD)
> $(LDFLAGS_FOR_BUILD) $(TARGET_ARCH_FOR_BUILD)
> > > +
> > > +-make_cielab_luts$(EXEEXT): $(top_srcdir)/src/make_cielab_luts.c
> > > +-      $(CC_FOR_BUILD) -o make_cielab_luts$(EXEEXT)
> $(top_srcdir)/src/make_cielab_luts.c -DHAVE_CONFIG_H -I$(top_builddir)/src
> -lm
> > > ++make_at_dictionary$(BUILD_EXEEXT):
> $(top_srcdir)/src/make_at_dictionary.c
> > > ++      $(LINK_FOR_BUILD.c) -o $@ $^
> > > +
> > > +-make_math_fixed_tables$(EXEEXT):
> $(top_srcdir)/src/make_math_fixed_tables.c
> > > +-      $(CC_FOR_BUILD) -o make_math_fixed_tables$(EXEEXT)
> $(top_srcdir)/src/make_math_fixed_tables.c -DHAVE_CONFIG_H
> -I$(top_builddir)/src -lm
> > > ++make_cielab_luts$(BUILD_EXEEXT): $(top_srcdir)/src/make_cielab_luts.c
> > > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > > +
> > > +-make_modem_filter$(EXEEXT): $(top_srcdir)/src/make_modem_filter.c
> $(top_srcdir)/src/filter_tools.c
> > > +-      $(CC_FOR_BUILD) -o make_modem_filter$(EXEEXT)
> $(top_srcdir)/src/make_modem_filter.c $(top_srcdir)/src/filter_tools.c
> -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > > ++make_math_fixed_tables$(BUILD_EXEEXT):
> $(top_srcdir)/src/make_math_fixed_tables.c
> > > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > > +
> > > +-make_modem_godard_coefficients$(EXEEXT):
> $(top_srcdir)/src/make_modem_godard_coefficients.c
> $(top_srcdir)/src/filter_tools.c
> > > +-      $(CC_FOR_BUILD) -o make_modem_godard_coefficients$(EXEEXT)
> $(top_srcdir)/src/make_modem_godard_coefficients.c
> $(top_srcdir)/src/filter_tools.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > > ++make_modem_filter$(BUILD_EXEEXT):
> $(top_srcdir)/src/make_modem_filter.c $(top_srcdir)/src/filter_tools.c
> > > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > > +
> > > +-make_t43_gray_code_tables$(EXEEXT):
> $(top_srcdir)/src/make_t43_gray_code_tables.c
> > > +-      $(CC_FOR_BUILD) -o make_t43_gray_code_tables$(EXEEXT)
> $(top_srcdir)/src/make_t43_gray_code_tables.c -DHAVE_CONFIG_H
> -I$(top_builddir)/src -lm
> > > ++make_modem_godard_coefficients$(BUILD_EXEEXT):
> $(top_srcdir)/src/make_modem_godard_coefficients.c
> $(top_srcdir)/src/filter_tools.c
> > > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > > +
> > > +-make_v17_v32_constellation_map$(EXEEXT):
> $(top_srcdir)/src/make_v17_v32_constellation_map.c $(top_srcdir)/src/g711.c
> $(top_srcdir)/src/alloc.c
> > > +-      $(CC_FOR_BUILD) -o make_v17_v32_constellation_map$(EXEEXT)
> $(top_srcdir)/src/make_v17_v32_constellation_map.c $(top_srcdir)/src/g711.c
> $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > > ++make_t43_gray_code_tables$(BUILD_EXEEXT):
> $(top_srcdir)/src/make_t43_gray_code_tables.c
> > > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > > +
> > > +-make_v17_v32_convolutional_encoder$(EXEEXT):
> $(top_srcdir)/src/make_v17_v32_convolutional_encoder.c
> $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> > > +-      $(CC_FOR_BUILD) -o make_v17_v32_convolutional_encoder$(EXEEXT)
> $(top_srcdir)/src/make_v17_v32_convolutional_encoder.c
> $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H
> -I$(top_builddir)/src -lm
> > > ++make_v17_v32_constellation_map$(BUILD_EXEEXT):
> $(top_srcdir)/src/make_v17_v32_constellation_map.c $(top_srcdir)/src/g711.c
> $(top_srcdir)/src/alloc.c
> > > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > > +
> > > +-make_v29_constellation_map$(EXEEXT):
> $(top_srcdir)/src/make_v29_constellation_map.c $(top_srcdir)/src/g711.c
> $(top_srcdir)/src/alloc.c
> > > +-      $(CC_FOR_BUILD) -o make_v29_constellation_map$(EXEEXT)
> $(top_srcdir)/src/make_v29_constellation_map.c $(top_srcdir)/src/g711.c
> $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > > ++make_v17_v32_convolutional_encoder$(BUILD_EXEEXT):
> $(top_srcdir)/src/make_v17_v32_convolutional_encoder.c
> $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> > > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > > +
> > > +-make_v34_convolutional_coders$(EXEEXT):
> $(top_srcdir)/src/make_v34_convolutional_coders.c
> > > +-      $(CC_FOR_BUILD) -o make_v34_convolutional_coders$(EXEEXT)
> $(top_srcdir)/src/make_v34_convolutional_coders.c -DHAVE_CONFIG_H
> -I$(top_builddir)/src -lm
> > > ++make_v29_constellation_map$(BUILD_EXEEXT):
> $(top_srcdir)/src/make_v29_constellation_map.c $(top_srcdir)/src/g711.c
> $(top_srcdir)/src/alloc.c
> > > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > > +
> > > +-make_v34_probe_signals$(EXEEXT):
> $(top_srcdir)/src/make_v34_probe_signals.c $(top_srcdir)/src/g711.c
> $(top_srcdir)/src/alloc.c
> > > +-      $(CC_FOR_BUILD) -o make_v34_probe_signals$(EXEEXT)
> $(top_srcdir)/src/make_v34_probe_signals.c $(top_srcdir)/src/g711.c
> $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > > ++make_v34_convolutional_coders$(BUILD_EXEEXT):
> $(top_srcdir)/src/make_v34_convolutional_coders.c
> > > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > > +
> > > +-make_v34_shell_map$(EXEEXT): $(top_srcdir)/src/make_v34_shell_map.c
> > > +-      $(CC_FOR_BUILD) -o make_v34_shell_map$(EXEEXT)
> $(top_srcdir)/src/make_v34_shell_map.c -DHAVE_CONFIG_H -I$(top_builddir)/src
> > > ++make_v34_probe_signals$(BUILD_EXEEXT):
> $(top_srcdir)/src/make_v34_probe_signals.c $(top_srcdir)/src/g711.c
> $(top_srcdir)/src/alloc.c
> > > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -I$(top_srcdir)/src -lm
> > > +
> > > +-make_v34_tx_pre_emphasis_filters$(EXEEXT):
> $(top_srcdir)/src/make_v34_tx_pre_emphasis_filters.c
> $(top_srcdir)/tools/meteor-engine.c
> > > +-      $(CC_FOR_BUILD) -o make_v34_tx_pre_emphasis_filters$(EXEEXT)
> $(top_srcdir)/src/make_v34_tx_pre_emphasis_filters.c
> $(top_srcdir)/tools/meteor-engine.c -DHAVE_CONFIG_H -I$(top_builddir)/src
> -I$(top_builddir)/tools -lm
> > > ++make_v34_shell_map$(BUILD_EXEEXT):
> $(top_srcdir)/src/make_v34_shell_map.c
> > > ++      $(LINK_FOR_BUILD.c) -o $@ $^
> > > ++
> > > ++make_v34_tx_pre_emphasis_filters$(BUILD_EXEEXT):
> $(top_srcdir)/src/make_v34_tx_pre_emphasis_filters.c
> $(top_srcdir)/tools/meteor-engine.c
> > > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -I$(top_srcdir)/tools -lm
> > > +
> > > + # We need to run make_at_dictionary, so it generates the
> > > + # at_interpreter_dictionary.h file
> > > +--
> > > +2.34.1
> > > +
> > > diff --git a/meta-multimedia/recipes-multimedia/spandsp/spandsp_git.bb
> b/meta-multimedia/recipes-multimedia/spandsp/spandsp_git.bb
> > > new file mode 100644
> > > index 000000000..84bc4a8f1
> > > --- /dev/null
> > > +++ b/meta-multimedia/recipes-multimedia/spandsp/spandsp_git.bb
> > > @@ -0,0 +1,47 @@
> > > +SUMMARY = "A DSP library for telephony"
> > > +DESCRIPTION = "\
> > > +    SpanDSP is a low-level signal processing library that modulates
> and \
> > > +    demodulates signals commonly used in telephony, such as the
> \"noise\" \
> > > +    generated by a fax modem or DTMF touchpad. \
> > > +"
> > > +HOMEPAGE = "https://www.soft-switch.org/"
> > > +BUGTRACKER = "https://github.com/freeswitch/spandsp/issues"
> > > +SECTION = "libs"
> > > +LICENSE = "LGPL-2.1-only"
> > > +LIC_FILES_CHKSUM = "
> file://COPYING;md5=8791c23ddf418deb5be264cffb5fa6bc"
> > > +
> > > +DEPENDS = "\
> > > +    libxml2 \
> > > +    tiff \
> > > +    tiff-native \
> > > +"
> > > +
> > > +PV = "3.0.0+git"
> > > +
> > > +SRC_URI = "\
> > > +    git://
> github.com/freeswitch/spandsp.git;protocol=https;branch=master \
> > > +    file://configure.patch \
> > > +    file://makefile.patch \
> > > +"
> > > +SRCREV = "7b0b8cf3d42b725405bcc63145de5e280265ce4e"
> > > +
> > > +S = "${WORKDIR}/git"
> > > +
> > > +inherit autotools
> > > +
> > > +PACKAGECONFIG ?= ""
> > > +
> > > +PACKAGECONFIG[mmx] = "--enable-mmx,--disable-mmx"
> > > +PACKAGECONFIG[sse] = "--enable-sse,--disable-sse"
> > > +PACKAGECONFIG[sse2] = "--enable-sse2,--disable-sse2"
> > > +PACKAGECONFIG[sse3] = "--enable-sse3,--disable-sse3"
> > > +PACKAGECONFIG[ssse3] = "--enable-ssse3,--disable-ssse3"
> > > +PACKAGECONFIG[sse4-1] = "--enable-sse4-1,--disable-sse4-1"
> > > +PACKAGECONFIG[sse4-2] = "--enable-sse4-2,--disable-sse4-2"
> > > +PACKAGECONFIG[avx] = "--enable-avx,--disable-avx"
> > > +PACKAGECONFIG[avx2] = "--enable-avx2,--disable-avx2"
> > > +PACKAGECONFIG[neon] = "--enable-neon,--disable-neon"
> > > +PACKAGECONFIG[fixed-point] =
> "--enable-fixed-point,--disable-fixed-point"
> > > +PACKAGECONFIG[v32bis] = "--enable-v32bis,--disable-v32bis"
> > > +PACKAGECONFIG[v34] = "--enable-v34,--disable-v34"
> > > +PACKAGECONFIG[sslfax] = "--enable-sslfax,--disable-sslfax"
> > > --
> > > 2.34.1
> > >
> > >
> > >
> > >
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#109334):
> https://lists.openembedded.org/g/openembedded-devel/message/109334
> Mute This Topic: https://lists.openembedded.org/mt/104933829/3617156
> Group Owner: openembedded-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [
> martin.jansa@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>
Jörg Sommer March 16, 2024, 8:23 a.m. UTC | #5
I've found this bug report upstreamhttps://github.com/freeswitch/spandsp/issues/67. It builds fine for me with the older version df1282eb9af538ab1aadb6d66146e258451d4fe4.


Mit freundlichen Grüßen


Jörg Sommer

Software Developer / Programmierer

--


Navimatix GmbH

Tatzendpromenade 2

07745 Jena

T: 03641 - 327 99 0

F: 03641 - 526 306

M: joerg.sommer@navimatix.de

www.navimatix.de<http://www.navimatix.de/>



Geschäftsführer: Steffen Späthe, Jan Rommeley

Registergericht: Amtsgericht Jena, HRB 501480

________________________________
From: Martin Jansa <martin.jansa@gmail.com>
Sent: Saturday, 16 March 2024 09:02
To: Jörg Sommer <joerg.sommer@navimatix.de>
Cc: Khem Raj <raj.khem@gmail.com>; openembedded-devel@lists.openembedded.org <openembedded-devel@lists.openembedded.org>
Subject: Re: [oe] [meta-multimedia][PATCH v2] spandsp: new telephony DSP library

I'm seeing the same errors with gcc :)

libtool: compile:  ccache arm-oe-linux-gnueabi-gcc -mthumb -mfpu=neon -mfloat-abi=softfp -mcpu=cortex-a9 -mtune=cortex-a9 -fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security -Werror=return-type -funwind-tables -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64 --sysroot=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/lib32-recipe-sysroot -DHAVE_CONFIG_H -I. -I../../git/src -I.. -DNDEBUG -Wunused-but-set-variable -std=gnu99 -ffast-math -Wall -Wunused-variable -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -fvisibility=hidden -DHAVE_VISIBILITY=1 -O2 -pipe -g -feliminate-unused-debug-types -fcanon-prefix-map -fmacro-prefix-map=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/git=/usr/src/debug/lib32-spandsp/3.0.0+git -fdebug-prefix-map=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/git=/usr/src/debug/lib32-spandsp/3.0.0+git -fmacro-prefix-map=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/build=/usr/src/debug/lib32-spandsp/3.0.0+git -fdebug-prefix-map=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/build=/usr/src/debug/lib32-spandsp/3.0.0+git -fdebug-prefix-map=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/lib32-recipe-sysroot= -fmacro-prefix-map=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/lib32-recipe-sysroot= -fdebug-prefix-map=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/recipe-sysroot-native= -c ../../git/src/t38_terminal.c  -fPIC -DPIC -o .libs/t38_terminal.o
../../git/src/ademco_contactid.c:449:110: error: expected ')' before ';' token
  449 | static const int detection_threshold            = goertzel_threshold_dbm0(GOERTZEL_SAMPLES_PER_BLOCK, -42.0f);
      |                                                                                                              ^
In file included from ../../git/src/ademco_contactid.c:66:
../../git/src/spandsp/tone_detect.h:63:55: note: to match this '('
   63 | #define goertzel_threshold_dbm0(len,thresh)     (int) ((len*len*256.0*256.0/2.0*pow(10.0, (thresh - DBM0_MAX_SINE_POWER)/10.0))
      |                                                       ^
../../git/src/ademco_contactid.c:449:51: note: in expansion of macro 'goertzel_threshold_dbm0'
  449 | static const int detection_threshold            = goertzel_threshold_dbm0(GOERTZEL_SAMPLES_PER_BLOCK, -42.0f);
      |                                                   ^~~~~~~~~~~~~~~~~~~~~~~
../../git/src/ademco_contactid.c:449:18: warning: 'detection_threshold' defined but not used [-Wunused-const-variable=]
  449 | static const int detection_threshold            = goertzel_threshold_dbm0(GOERTZEL_SAMPLES_PER_BLOCK, -42.0f);
      |                  ^~~~~~~~~~~~~~~~~~~
../../git/src/ademco_contactid.c:210:35: warning: 'ademco_codes' defined but not used [-Wunused-const-variable=]
  210 | static const struct ademco_code_s ademco_codes[] =
      |                                   ^~~~~~~~~~~~
make[2]: *** [Makefile:1091: ademco_contactid.lo] Error 1

This is with master-next meta-oe from yesterday in build with multilib (night not be important)

On Fri, Mar 15, 2024 at 8:19 AM Jörg Sommer via lists.openembedded.org<http://lists.openembedded.org> <joerg.sommer=navimatix.de@lists.openembedded.org<mailto:navimatix.de@lists.openembedded.org>> wrote:
Yes, I'm getting these errors, too, when compiling with clang; independent of the clang version up to 19. It seems to be a problem of `pow()`. gcc might have a built-in and can compute it at compile-time, while clang has no built-in of pow.




Jörg Sommer

Software Developer / Programmierer

--


Navimatix GmbH

Tatzendpromenade 2

07745 Jena

T: 03641 - 327 99 0

F: 03641 - 526 306

M: joerg.sommer@navimatix.de<mailto:joerg.sommer@navimatix.de>

www.navimatix.de<http://www.navimatix.de/>



Geschäftsführer: Steffen Späthe, Jan Rommeley

Registergericht: Amtsgericht Jena, HRB 501480

________________________________
From: Khem Raj <raj.khem@gmail.com<mailto:raj.khem@gmail.com>>
Sent: Friday, 15 March 2024 06:13
To: Jörg Sommer <joerg.sommer@navimatix.de<mailto:joerg.sommer@navimatix.de>>
Cc: openembedded-devel@lists.openembedded.org<mailto:openembedded-devel@lists.openembedded.org> <openembedded-devel@lists.openembedded.org<mailto:openembedded-devel@lists.openembedded.org>>
Subject: Re: [oe] [meta-multimedia][PATCH v2] spandsp: new telephony DSP library

Not much to do with musl, it fails when I use clang on my desktop as
well. you can see the same errors with clang on host

CC=clang ./configure
make

On Thu, Mar 14, 2024 at 9:37 PM Khem Raj <raj.khem@gmail.com<mailto:raj.khem@gmail.com>> wrote:
>
> fails to build with musl/clang
>
> https://snips.sh/f/qCR86Rwwz1
>
> On Thu, Mar 14, 2024 at 12:43 PM Jörg Sommer via
> lists.openembedded.org<http://lists.openembedded.org>
> <joerg.sommer=navimatix.de@lists.openembedded.org<mailto:navimatix.de@lists.openembedded.org>> wrote:
> >
> > From: Jörg Sommer <joerg.sommer@navimatix.de<mailto:joerg.sommer@navimatix.de>>
> >
> > Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de<mailto:joerg.sommer@navimatix.de>>
> > ---
> >  .../spandsp/spandsp/configure.patch           |  56 ++++++
> >  .../spandsp/spandsp/makefile.patch            | 161 ++++++++++++++++++
> >  .../recipes-multimedia/spandsp/spandsp_git.bb<http://spandsp_git.bb> |  47 +++++
> >  3 files changed, 264 insertions(+)
> >  create mode 100644 meta-multimedia/recipes-multimedia/spandsp/spandsp/configure.patch
> >  create mode 100644 meta-multimedia/recipes-multimedia/spandsp/spandsp/makefile.patch
> >  create mode 100644 meta-multimedia/recipes-multimedia/spandsp/spandsp_git.bb<http://spandsp_git.bb>
> >
> > diff --git a/meta-multimedia/recipes-multimedia/spandsp/spandsp/configure.patch b/meta-multimedia/recipes-multimedia/spandsp/spandsp/configure.patch
> > new file mode 100644
> > index 000000000..af504be76
> > --- /dev/null
> > +++ b/meta-multimedia/recipes-multimedia/spandsp/spandsp/configure.patch
> > @@ -0,0 +1,56 @@
> > +From: =?UTF-8?q?J=C3=B6rg=20Sommer?= <joerg.sommer@navimatix.de<mailto:joerg.sommer@navimatix.de>>
> > +Date: Thu, 14 Mar 2024 09:41:57 +0100
> > +Subject: [PATCH 2/2] configure: Replace manual search for libxml by
> > + AC_CHECK_LIB
> > +MIME-Version: 1.0
> > +Content-Type: text/plain; charset=UTF-8
> > +Content-Transfer-Encoding: 8bit
> > +
> > +The manual search fails if the include directories (and build environment)
> > +are located somewhere else.
> > +
> > +Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de<mailto:joerg.sommer@navimatix.de>>
> > +Upstream-Status: Submitted [https://github.com/freeswitch/spandsp/pull/74]
> > +---
> > +
> > +ERROR: spandsp-3.0.0+git-r0 do_configure: QA Issue: This autoconf log indicates errors, it looked at host include and/or library paths while determining system capabilities.
> > +
> > + configure.ac<http://configure.ac> | 22 +++++-----------------
> > + 1 file changed, 5 insertions(+), 17 deletions(-)
> > +
> > +diff --git a/configure.ac<http://configure.ac> b/configure.ac<http://configure.ac>
> > +index 2140837..b5138d6 100644
> > +--- a/configure.ac<http://configure.ac>
> > ++++ b/configure.ac<http://configure.ac>
> > +@@ -185,23 +185,11 @@ then
> > + fi
> > +
> > + # Determine XML2 include path
> > +-AC_MSG_CHECKING(for libxml/xmlmemory.h)
> > +-
> > +-# Can we include headers using system include dirs?
> > +-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <libxml/xmlmemory.h>]], [[int a = 1;]])],[XML2_INCLUDE=" "],[XML2_INCLUDE=])
> > +-
> > +-# Hunt through several possible directories to find the includes for libxml2
> > +-if test "x$XML2_INCLUDE" = "x"; then
> > +-    old_CPPFLAGS="$CPPFLAGS"
> > +-    for i in $xml2_include_dir /usr/include /usr/local/include /usr/include/libxml2 /usr/local/include/libxml2 ; do
> > +-        CPPFLAGS="$old_CPPFLAGS -I$i"
> > +-        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <libxml/xmlmemory.h>]], [[int a = 1;]])],[XML2_INCLUDE="-I$i"],[XML2_INCLUDE=
> > +-        ])
> > +-        if test "x$XML2_INCLUDE" != "x"; then
> > +-            break;
> > +-        fi
> > +-    done
> > +-    CPPFLAGS="$old_CPPFLAGS $XML2_INCLUDE"
> > ++AC_CHECK_LIB([xml2], [xmlParseFile], [libxml2_found=yes])
> > ++if test "$libxml2_found" = "yes" ; then
> > ++    AC_DEFINE(HAVE_LIBXML2,1,[defined when libxml2 is available])
> > ++else
> > ++    AC_MSG_WARN([libxml2 not found. Disabling cache.])
> > + fi
> > +
> > + AC_CHECK_HEADERS([libxml/xmlmemory.h])
> > +--
> > +2.34.1
> > +
> > diff --git a/meta-multimedia/recipes-multimedia/spandsp/spandsp/makefile.patch b/meta-multimedia/recipes-multimedia/spandsp/spandsp/makefile.patch
> > new file mode 100644
> > index 000000000..d3eb047fe
> > --- /dev/null
> > +++ b/meta-multimedia/recipes-multimedia/spandsp/spandsp/makefile.patch
> > @@ -0,0 +1,161 @@
> > +From: =?UTF-8?q?J=C3=B6rg=20Sommer?= <joerg.sommer@navimatix.de<mailto:joerg.sommer@navimatix.de>>
> > +Date: Thu, 14 Mar 2024 08:08:13 +0100
> > +Subject: [PATCH 1/2] configure: Use AX_PROG_CC_FOR_BUILD for cross compiling
> > +MIME-Version: 1.0
> > +Content-Type: text/plain; charset=UTF-8
> > +Content-Transfer-Encoding: 8bit
> > +
> > +The macro AX_PROG_CC_FOR_BUILD [1] sets the variables CC_FOR_BUILD and
> > +..._FLAGS_FOR_BUILD they can be used [2] to build binaries used at compile
> > +time.
> > +
> > +[1]: https://www.gnu.org/software/autoconf-archive/ax_prog_cc_for_build.html
> > +[2]: https://stackoverflow.com/questions/24201260/autotools-cross-compilation-and-generated-sources/24208587#24208587
> > +
> > +Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de<mailto:joerg.sommer@navimatix.de>>
> > +Upstream-Status: Submitted [https://github.com/freeswitch/spandsp/pull/74]
> > +---
> > + configure.ac<http://configure.ac>    | 49 +-------------------------------------------
> > + src/Makefile.am | 54 +++++++++++++++++++++++++------------------------
> > + 2 files changed, 29 insertions(+), 74 deletions(-)
> > +
> > +diff --git a/configure.ac<http://configure.ac> b/configure.ac<http://configure.ac>
> > +index 96fd022..2140837 100644
> > +--- a/configure.ac<http://configure.ac>
> > ++++ b/configure.ac<http://configure.ac>
> > +@@ -55,54 +55,7 @@ AC_LANG([C])
> > +
> > + AX_COMPILER_VENDOR
> > +
> > +-if test "${build}" != "${host}"
> > +-then
> > +-    # If we are doing a Canadian Cross, in which the host and build systems
> > +-    # are not the same, we set reasonable default values for the tools.
> > +-
> > +-    CC_FOR_BUILD=${CC_FOR_BUILD-gcc}
> > +-    CPPFLAGS_FOR_BUILD="\$(CPPFLAGS)"
> > +-    CC=${CC-${host_alias}-gcc}
> > +-    CFLAGS=${CFLAGS-"-g -O2"}
> > +-    CXX=${CXX-${host_alias}-c++}
> > +-    CXXFLAGS=${CXXFLAGS-"-g -O2"}
> > +-else
> > +-    # Set reasonable default values for some tools even if not Canadian.
> > +-    # Of course, these are different reasonable default values, originally
> > +-    # specified directly in the Makefile.
> > +-    # We don't export, so that autoconf can do its job.
> > +-    # Note that all these settings are above the fragment inclusion point
> > +-    # in Makefile.in, so can still be overridden by fragments.
> > +-    # This is all going to change when we autoconfiscate...
> > +-    CC_FOR_BUILD="\$(CC)"
> > +-    CPPFLAGS_FOR_BUILD="\$(CPPFLAGS)"
> > +-    AC_PROG_CC
> > +-
> > +-    # We must set the default linker to the linker used by gcc for the correct
> > +-    # operation of libtool.  If LD is not defined and we are using gcc, try to
> > +-    # set the LD default to the ld used by gcc.
> > +-    if test -z "$LD"
> > +-    then
> > +-        if test "$GCC" = yes
> > +-        then
> > +-            case $build in
> > +-            *-*-mingw*)
> > +-                gcc_prog_ld=`$CC -print-prog-name=ld 2>&1 | tr -d '\015'` ;;
> > +-            *)
> > +-                gcc_prog_ld=`$CC -print-prog-name=ld 2>&1` ;;
> > +-            esac
> > +-            case $gcc_prog_ld in
> > +-            # Accept absolute paths.
> > +-            [[\\/]* | [A-Za-z]:[\\/]*)]
> > +-                LD="$gcc_prog_ld" ;;
> > +-            esac
> > +-        fi
> > +-    fi
> > +-
> > +-    CXX=${CXX-"c++"}
> > +-    CFLAGS=${CFLAGS-"-g -O2"}
> > +-    CXXFLAGS=${CXXFLAGS-"-g -O2"}
> > +-fi
> > ++AX_PROG_CC_FOR_BUILD
> > +
> > + AC_DEFUN([REMOVE_FROM_VAR],[
> > +     new_val=""
> > +diff --git a/src/Makefile.am b/src/Makefile.am
> > +index e05fad5..9b409a1 100644
> > +--- a/src/Makefile.am
> > ++++ b/src/Makefile.am
> > +@@ -386,44 +386,46 @@ noinst_HEADERS = cielab_luts.h \
> > +                  v34_tx_pre_emphasis_filters.h \
> > +                  v34_tables.h
> > +
> > +-make_at_dictionary$(EXEEXT): $(top_srcdir)/src/make_at_dictionary.c
> > +-      $(CC_FOR_BUILD) -o make_at_dictionary$(EXEEXT) $(top_srcdir)/src/make_at_dictionary.c -DHAVE_CONFIG_H -I$(top_builddir)/src
> > ++LINK_FOR_BUILD.c = $(CC_FOR_BUILD) -DHAVE_CONFIG_H -I$(top_builddir)/src $(CFLAGS_FOR_BUILD) $(CPPFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) $(TARGET_ARCH_FOR_BUILD)
> > +
> > +-make_cielab_luts$(EXEEXT): $(top_srcdir)/src/make_cielab_luts.c
> > +-      $(CC_FOR_BUILD) -o make_cielab_luts$(EXEEXT) $(top_srcdir)/src/make_cielab_luts.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > ++make_at_dictionary$(BUILD_EXEEXT): $(top_srcdir)/src/make_at_dictionary.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^
> > +
> > +-make_math_fixed_tables$(EXEEXT): $(top_srcdir)/src/make_math_fixed_tables.c
> > +-      $(CC_FOR_BUILD) -o make_math_fixed_tables$(EXEEXT) $(top_srcdir)/src/make_math_fixed_tables.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > ++make_cielab_luts$(BUILD_EXEEXT): $(top_srcdir)/src/make_cielab_luts.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > +
> > +-make_modem_filter$(EXEEXT): $(top_srcdir)/src/make_modem_filter.c $(top_srcdir)/src/filter_tools.c
> > +-      $(CC_FOR_BUILD) -o make_modem_filter$(EXEEXT) $(top_srcdir)/src/make_modem_filter.c $(top_srcdir)/src/filter_tools.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > ++make_math_fixed_tables$(BUILD_EXEEXT): $(top_srcdir)/src/make_math_fixed_tables.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > +
> > +-make_modem_godard_coefficients$(EXEEXT): $(top_srcdir)/src/make_modem_godard_coefficients.c $(top_srcdir)/src/filter_tools.c
> > +-      $(CC_FOR_BUILD) -o make_modem_godard_coefficients$(EXEEXT) $(top_srcdir)/src/make_modem_godard_coefficients.c $(top_srcdir)/src/filter_tools.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > ++make_modem_filter$(BUILD_EXEEXT): $(top_srcdir)/src/make_modem_filter.c $(top_srcdir)/src/filter_tools.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > +
> > +-make_t43_gray_code_tables$(EXEEXT): $(top_srcdir)/src/make_t43_gray_code_tables.c
> > +-      $(CC_FOR_BUILD) -o make_t43_gray_code_tables$(EXEEXT) $(top_srcdir)/src/make_t43_gray_code_tables.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > ++make_modem_godard_coefficients$(BUILD_EXEEXT): $(top_srcdir)/src/make_modem_godard_coefficients.c $(top_srcdir)/src/filter_tools.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > +
> > +-make_v17_v32_constellation_map$(EXEEXT): $(top_srcdir)/src/make_v17_v32_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> > +-      $(CC_FOR_BUILD) -o make_v17_v32_constellation_map$(EXEEXT) $(top_srcdir)/src/make_v17_v32_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > ++make_t43_gray_code_tables$(BUILD_EXEEXT): $(top_srcdir)/src/make_t43_gray_code_tables.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > +
> > +-make_v17_v32_convolutional_encoder$(EXEEXT): $(top_srcdir)/src/make_v17_v32_convolutional_encoder.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> > +-      $(CC_FOR_BUILD) -o make_v17_v32_convolutional_encoder$(EXEEXT) $(top_srcdir)/src/make_v17_v32_convolutional_encoder.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > ++make_v17_v32_constellation_map$(BUILD_EXEEXT): $(top_srcdir)/src/make_v17_v32_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > +
> > +-make_v29_constellation_map$(EXEEXT): $(top_srcdir)/src/make_v29_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> > +-      $(CC_FOR_BUILD) -o make_v29_constellation_map$(EXEEXT) $(top_srcdir)/src/make_v29_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > ++make_v17_v32_convolutional_encoder$(BUILD_EXEEXT): $(top_srcdir)/src/make_v17_v32_convolutional_encoder.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > +
> > +-make_v34_convolutional_coders$(EXEEXT): $(top_srcdir)/src/make_v34_convolutional_coders.c
> > +-      $(CC_FOR_BUILD) -o make_v34_convolutional_coders$(EXEEXT) $(top_srcdir)/src/make_v34_convolutional_coders.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > ++make_v29_constellation_map$(BUILD_EXEEXT): $(top_srcdir)/src/make_v29_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > +
> > +-make_v34_probe_signals$(EXEEXT): $(top_srcdir)/src/make_v34_probe_signals.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> > +-      $(CC_FOR_BUILD) -o make_v34_probe_signals$(EXEEXT) $(top_srcdir)/src/make_v34_probe_signals.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > ++make_v34_convolutional_coders$(BUILD_EXEEXT): $(top_srcdir)/src/make_v34_convolutional_coders.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > +
> > +-make_v34_shell_map$(EXEEXT): $(top_srcdir)/src/make_v34_shell_map.c
> > +-      $(CC_FOR_BUILD) -o make_v34_shell_map$(EXEEXT) $(top_srcdir)/src/make_v34_shell_map.c -DHAVE_CONFIG_H -I$(top_builddir)/src
> > ++make_v34_probe_signals$(BUILD_EXEEXT): $(top_srcdir)/src/make_v34_probe_signals.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -I$(top_srcdir)/src -lm
> > +
> > +-make_v34_tx_pre_emphasis_filters$(EXEEXT): $(top_srcdir)/src/make_v34_tx_pre_emphasis_filters.c $(top_srcdir)/tools/meteor-engine.c
> > +-      $(CC_FOR_BUILD) -o make_v34_tx_pre_emphasis_filters$(EXEEXT) $(top_srcdir)/src/make_v34_tx_pre_emphasis_filters.c $(top_srcdir)/tools/meteor-engine.c -DHAVE_CONFIG_H -I$(top_builddir)/src -I$(top_builddir)/tools -lm
> > ++make_v34_shell_map$(BUILD_EXEEXT): $(top_srcdir)/src/make_v34_shell_map.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^
> > ++
> > ++make_v34_tx_pre_emphasis_filters$(BUILD_EXEEXT): $(top_srcdir)/src/make_v34_tx_pre_emphasis_filters.c $(top_srcdir)/tools/meteor-engine.c
> > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -I$(top_srcdir)/tools -lm
> > +
> > + # We need to run make_at_dictionary, so it generates the
> > + # at_interpreter_dictionary.h file
> > +--
> > +2.34.1
> > +
> > diff --git a/meta-multimedia/recipes-multimedia/spandsp/spandsp_git.bb<http://spandsp_git.bb> b/meta-multimedia/recipes-multimedia/spandsp/spandsp_git.bb<http://spandsp_git.bb>
> > new file mode 100644
> > index 000000000..84bc4a8f1
> > --- /dev/null
> > +++ b/meta-multimedia/recipes-multimedia/spandsp/spandsp_git.bb<http://spandsp_git.bb>
> > @@ -0,0 +1,47 @@
> > +SUMMARY = "A DSP library for telephony"
> > +DESCRIPTION = "\
> > +    SpanDSP is a low-level signal processing library that modulates and \
> > +    demodulates signals commonly used in telephony, such as the \"noise\" \
> > +    generated by a fax modem or DTMF touchpad. \
> > +"
> > +HOMEPAGE = "https://www.soft-switch.org/"
> > +BUGTRACKER = "https://github.com/freeswitch/spandsp/issues"
> > +SECTION = "libs"
> > +LICENSE = "LGPL-2.1-only"
> > +LIC_FILES_CHKSUM = "file://COPYING;md5=8791c23ddf418deb5be264cffb5fa6bc"
> > +
> > +DEPENDS = "\
> > +    libxml2 \
> > +    tiff \
> > +    tiff-native \
> > +"
> > +
> > +PV = "3.0.0+git"
> > +
> > +SRC_URI = "\
> > +    git://github.com/freeswitch/spandsp.git;protocol=https;branch=master<http://github.com/freeswitch/spandsp.git;protocol=https;branch=master> \
> > +    file://configure.patch \
> > +    file://makefile.patch \
> > +"
> > +SRCREV = "7b0b8cf3d42b725405bcc63145de5e280265ce4e"
> > +
> > +S = "${WORKDIR}/git"
> > +
> > +inherit autotools
> > +
> > +PACKAGECONFIG ?= ""
> > +
> > +PACKAGECONFIG[mmx] = "--enable-mmx,--disable-mmx"
> > +PACKAGECONFIG[sse] = "--enable-sse,--disable-sse"
> > +PACKAGECONFIG[sse2] = "--enable-sse2,--disable-sse2"
> > +PACKAGECONFIG[sse3] = "--enable-sse3,--disable-sse3"
> > +PACKAGECONFIG[ssse3] = "--enable-ssse3,--disable-ssse3"
> > +PACKAGECONFIG[sse4-1] = "--enable-sse4-1,--disable-sse4-1"
> > +PACKAGECONFIG[sse4-2] = "--enable-sse4-2,--disable-sse4-2"
> > +PACKAGECONFIG[avx] = "--enable-avx,--disable-avx"
> > +PACKAGECONFIG[avx2] = "--enable-avx2,--disable-avx2"
> > +PACKAGECONFIG[neon] = "--enable-neon,--disable-neon"
> > +PACKAGECONFIG[fixed-point] = "--enable-fixed-point,--disable-fixed-point"
> > +PACKAGECONFIG[v32bis] = "--enable-v32bis,--disable-v32bis"
> > +PACKAGECONFIG[v34] = "--enable-v34,--disable-v34"
> > +PACKAGECONFIG[sslfax] = "--enable-sslfax,--disable-sslfax"
> > --
> > 2.34.1
> >
> >
> >
> >

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#109334): https://lists.openembedded.org/g/openembedded-devel/message/109334
Mute This Topic: https://lists.openembedded.org/mt/104933829/3617156
Group Owner: openembedded-devel+owner@lists.openembedded.org<mailto:openembedded-devel%2Bowner@lists.openembedded.org>
Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [martin.jansa@gmail.com<mailto:martin.jansa@gmail.com>]
-=-=-=-=-=-=-=-=-=-=-=-
Khem Raj March 16, 2024, 4:13 p.m. UTC | #6
On Sat, Mar 16, 2024 at 1:23 AM Jörg Sommer <joerg.sommer@navimatix.de>
wrote:

> I've found this bug report upstream
> https://github.com/freeswitch/spandsp/issues/67. It builds fine for me
> with the older version df1282eb9af538ab1aadb6d66146e258451d4fe4.
>
>
right. I have commented on the commit which is causing the issue.


>
> Mit freundlichen Grüßen
>
>
> Jörg Sommer
>
> Software Developer / Programmierer
> --
>
> Navimatix GmbH
>
> Tatzendpromenade 2
>
> 07745 Jena
>
> T: 03641 - 327 99 0
>
> F: 03641 - 526 306
>
> M: *joerg.sommer@navimatix.de <joerg.sommer@navimatix.de>*
>
> *www.navimatix.de <http://www.navimatix.de/>*
>
>
>
> Geschäftsführer: Steffen Späthe, Jan Rommeley
>
> Registergericht: Amtsgericht Jena, HRB 501480
>
> ------------------------------
> *From:* Martin Jansa <martin.jansa@gmail.com>
> *Sent:* Saturday, 16 March 2024 09:02
> *To:* Jörg Sommer <joerg.sommer@navimatix.de>
> *Cc:* Khem Raj <raj.khem@gmail.com>;
> openembedded-devel@lists.openembedded.org <
> openembedded-devel@lists.openembedded.org>
> *Subject:* Re: [oe] [meta-multimedia][PATCH v2] spandsp: new telephony
> DSP library
>
> I'm seeing the same errors with gcc :)
>
> libtool: compile:  ccache arm-oe-linux-gnueabi-gcc -mthumb -mfpu=neon
> -mfloat-abi=softfp -mcpu=cortex-a9 -mtune=cortex-a9
> -fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security
> -Werror=format-security -Werror=return-type -funwind-tables -D_TIME_BITS=64
> -D_FILE_OFFSET_BITS=64
> --sysroot=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/lib32-recipe-sysroot
> -DHAVE_CONFIG_H -I. -I../../git/src -I.. -DNDEBUG -Wunused-but-set-variable
> -std=gnu99 -ffast-math -Wall -Wunused-variable -Wwrite-strings
> -Wstrict-prototypes -Wmissing-prototypes -fvisibility=hidden
> -DHAVE_VISIBILITY=1 -O2 -pipe -g -feliminate-unused-debug-types
> -fcanon-prefix-map
> -fmacro-prefix-map=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/git=/usr/src/debug/lib32-spandsp/3.0.0+git
> -fdebug-prefix-map=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/git=/usr/src/debug/lib32-spandsp/3.0.0+git
> -fmacro-prefix-map=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/build=/usr/src/debug/lib32-spandsp/3.0.0+git
> -fdebug-prefix-map=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/build=/usr/src/debug/lib32-spandsp/3.0.0+git
> -fdebug-prefix-map=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/lib32-recipe-sysroot=
> -fmacro-prefix-map=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/lib32-recipe-sysroot=
> -fdebug-prefix-map=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/recipe-sysroot-native=
> -c ../../git/src/t38_terminal.c  -fPIC -DPIC -o .libs/t38_terminal.o
> ../../git/src/ademco_contactid.c:449:110: error: expected ')' before ';'
> token
>   449 | static const int detection_threshold            =
> goertzel_threshold_dbm0(GOERTZEL_SAMPLES_PER_BLOCK, -42.0f);
>       |
>                                            ^
> In file included from ../../git/src/ademco_contactid.c:66:
> ../../git/src/spandsp/tone_detect.h:63:55: note: to match this '('
>    63 | #define goertzel_threshold_dbm0(len,thresh)     (int)
> ((len*len*256.0*256.0/2.0*pow(10.0, (thresh - DBM0_MAX_SINE_POWER)/10.0))
>       |                                                       ^
> ../../git/src/ademco_contactid.c:449:51: note: in expansion of macro
> 'goertzel_threshold_dbm0'
>   449 | static const int detection_threshold            =
> goertzel_threshold_dbm0(GOERTZEL_SAMPLES_PER_BLOCK, -42.0f);
>       |
> ^~~~~~~~~~~~~~~~~~~~~~~
> ../../git/src/ademco_contactid.c:449:18: warning: 'detection_threshold'
> defined but not used [-Wunused-const-variable=]
>   449 | static const int detection_threshold            =
> goertzel_threshold_dbm0(GOERTZEL_SAMPLES_PER_BLOCK, -42.0f);
>       |                  ^~~~~~~~~~~~~~~~~~~
> ../../git/src/ademco_contactid.c:210:35: warning: 'ademco_codes' defined
> but not used [-Wunused-const-variable=]
>   210 | static const struct ademco_code_s ademco_codes[] =
>       |                                   ^~~~~~~~~~~~
> make[2]: *** [Makefile:1091: ademco_contactid.lo] Error 1
>
> This is with master-next meta-oe from yesterday in build with multilib
> (night not be important)
>
> On Fri, Mar 15, 2024 at 8:19 AM Jörg Sommer via lists.openembedded.org
> <joerg.sommer=navimatix.de@lists.openembedded.org> wrote:
>
> Yes, I'm getting these errors, too, when compiling with clang; independent
> of the clang version up to 19. It seems to be a problem of `pow()`. gcc
> might have a built-in and can compute it at compile-time, while clang has
> no built-in of pow.
>
>
>
> Jörg Sommer
>
> Software Developer / Programmierer
> --
>
> Navimatix GmbH
>
> Tatzendpromenade 2
>
> 07745 Jena
>
> T: 03641 - 327 99 0
>
> F: 03641 - 526 306
>
> M: *joerg.sommer@navimatix.de <joerg.sommer@navimatix.de>*
>
> *www.navimatix.de <http://www.navimatix.de/>*
>
>
>
> Geschäftsführer: Steffen Späthe, Jan Rommeley
>
> Registergericht: Amtsgericht Jena, HRB 501480
>
> ------------------------------
> *From:* Khem Raj <raj.khem@gmail.com>
> *Sent:* Friday, 15 March 2024 06:13
> *To:* Jörg Sommer <joerg.sommer@navimatix.de>
> *Cc:* openembedded-devel@lists.openembedded.org <
> openembedded-devel@lists.openembedded.org>
> *Subject:* Re: [oe] [meta-multimedia][PATCH v2] spandsp: new telephony
> DSP library
>
> Not much to do with musl, it fails when I use clang on my desktop as
> well. you can see the same errors with clang on host
>
> CC=clang ./configure
> make
>
> On Thu, Mar 14, 2024 at 9:37 PM Khem Raj <raj.khem@gmail.com> wrote:
> >
> > fails to build with musl/clang
> >
> > https://snips.sh/f/qCR86Rwwz1
> >
> > On Thu, Mar 14, 2024 at 12:43 PM Jörg Sommer via
> > lists.openembedded.org
> > <joerg.sommer=navimatix.de@lists.openembedded.org> wrote:
> > >
> > > From: Jörg Sommer <joerg.sommer@navimatix.de>
> > >
> > > Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
> > > ---
> > >  .../spandsp/spandsp/configure.patch           |  56 ++++++
> > >  .../spandsp/spandsp/makefile.patch            | 161 ++++++++++++++++++
> > >  .../recipes-multimedia/spandsp/spandsp_git.bb |  47 +++++
> > >  3 files changed, 264 insertions(+)
> > >  create mode 100644
> meta-multimedia/recipes-multimedia/spandsp/spandsp/configure.patch
> > >  create mode 100644
> meta-multimedia/recipes-multimedia/spandsp/spandsp/makefile.patch
> > >  create mode 100644 meta-multimedia/recipes-multimedia/spandsp/
> spandsp_git.bb
> > >
> > > diff --git
> a/meta-multimedia/recipes-multimedia/spandsp/spandsp/configure.patch
> b/meta-multimedia/recipes-multimedia/spandsp/spandsp/configure.patch
> > > new file mode 100644
> > > index 000000000..af504be76
> > > --- /dev/null
> > > +++
> b/meta-multimedia/recipes-multimedia/spandsp/spandsp/configure.patch
> > > @@ -0,0 +1,56 @@
> > > +From: =?UTF-8?q?J=C3=B6rg=20Sommer?= <joerg.sommer@navimatix.de>
> > > +Date: Thu, 14 Mar 2024 09:41:57 +0100
> > > +Subject: [PATCH 2/2] configure: Replace manual search for libxml by
> > > + AC_CHECK_LIB
> > > +MIME-Version: 1.0
> > > +Content-Type: text/plain; charset=UTF-8
> > > +Content-Transfer-Encoding: 8bit
> > > +
> > > +The manual search fails if the include directories (and build
> environment)
> > > +are located somewhere else.
> > > +
> > > +Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
> > > +Upstream-Status: Submitted [
> https://github.com/freeswitch/spandsp/pull/74]
> > > +---
> > > +
> > > +ERROR: spandsp-3.0.0+git-r0 do_configure: QA Issue: This autoconf log
> indicates errors, it looked at host include and/or library paths while
> determining system capabilities.
> > > +
> > > + configure.ac | 22 +++++-----------------
> > > + 1 file changed, 5 insertions(+), 17 deletions(-)
> > > +
> > > +diff --git a/configure.ac b/configure.ac
> > > +index 2140837..b5138d6 100644
> > > +--- a/configure.ac
> > > ++++ b/configure.ac
> > > +@@ -185,23 +185,11 @@ then
> > > + fi
> > > +
> > > + # Determine XML2 include path
> > > +-AC_MSG_CHECKING(for libxml/xmlmemory.h)
> > > +-
> > > +-# Can we include headers using system include dirs?
> > > +-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include
> <libxml/xmlmemory.h>]], [[int a = 1;]])],[XML2_INCLUDE=" "],[XML2_INCLUDE=])
> > > +-
> > > +-# Hunt through several possible directories to find the includes for
> libxml2
> > > +-if test "x$XML2_INCLUDE" = "x"; then
> > > +-    old_CPPFLAGS="$CPPFLAGS"
> > > +-    for i in $xml2_include_dir /usr/include /usr/local/include
> /usr/include/libxml2 /usr/local/include/libxml2 ; do
> > > +-        CPPFLAGS="$old_CPPFLAGS -I$i"
> > > +-        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include
> <libxml/xmlmemory.h>]], [[int a =
> 1;]])],[XML2_INCLUDE="-I$i"],[XML2_INCLUDE=
> > > +-        ])
> > > +-        if test "x$XML2_INCLUDE" != "x"; then
> > > +-            break;
> > > +-        fi
> > > +-    done
> > > +-    CPPFLAGS="$old_CPPFLAGS $XML2_INCLUDE"
> > > ++AC_CHECK_LIB([xml2], [xmlParseFile], [libxml2_found=yes])
> > > ++if test "$libxml2_found" = "yes" ; then
> > > ++    AC_DEFINE(HAVE_LIBXML2,1,[defined when libxml2 is available])
> > > ++else
> > > ++    AC_MSG_WARN([libxml2 not found. Disabling cache.])
> > > + fi
> > > +
> > > + AC_CHECK_HEADERS([libxml/xmlmemory.h])
> > > +--
> > > +2.34.1
> > > +
> > > diff --git
> a/meta-multimedia/recipes-multimedia/spandsp/spandsp/makefile.patch
> b/meta-multimedia/recipes-multimedia/spandsp/spandsp/makefile.patch
> > > new file mode 100644
> > > index 000000000..d3eb047fe
> > > --- /dev/null
> > > +++ b/meta-multimedia/recipes-multimedia/spandsp/spandsp/makefile.patch
> > > @@ -0,0 +1,161 @@
> > > +From: =?UTF-8?q?J=C3=B6rg=20Sommer?= <joerg.sommer@navimatix.de>
> > > +Date: Thu, 14 Mar 2024 08:08:13 +0100
> > > +Subject: [PATCH 1/2] configure: Use AX_PROG_CC_FOR_BUILD for cross
> compiling
> > > +MIME-Version: 1.0
> > > +Content-Type: text/plain; charset=UTF-8
> > > +Content-Transfer-Encoding: 8bit
> > > +
> > > +The macro AX_PROG_CC_FOR_BUILD [1] sets the variables CC_FOR_BUILD and
> > > +..._FLAGS_FOR_BUILD they can be used [2] to build binaries used at
> compile
> > > +time.
> > > +
> > > +[1]:
> https://www.gnu.org/software/autoconf-archive/ax_prog_cc_for_build.html
> > > +[2]:
> https://stackoverflow.com/questions/24201260/autotools-cross-compilation-and-generated-sources/24208587#24208587
> > > +
> > > +Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
> > > +Upstream-Status: Submitted [
> https://github.com/freeswitch/spandsp/pull/74]
> > > +---
> > > + configure.ac    | 49 +-------------------------------------------
> > > + src/Makefile.am | 54
> +++++++++++++++++++++++++------------------------
> > > + 2 files changed, 29 insertions(+), 74 deletions(-)
> > > +
> > > +diff --git a/configure.ac b/configure.ac
> > > +index 96fd022..2140837 100644
> > > +--- a/configure.ac
> > > ++++ b/configure.ac
> > > +@@ -55,54 +55,7 @@ AC_LANG([C])
> > > +
> > > + AX_COMPILER_VENDOR
> > > +
> > > +-if test "${build}" != "${host}"
> > > +-then
> > > +-    # If we are doing a Canadian Cross, in which the host and build
> systems
> > > +-    # are not the same, we set reasonable default values for the
> tools.
> > > +-
> > > +-    CC_FOR_BUILD=${CC_FOR_BUILD-gcc}
> > > +-    CPPFLAGS_FOR_BUILD="\$(CPPFLAGS)"
> > > +-    CC=${CC-${host_alias}-gcc}
> > > +-    CFLAGS=${CFLAGS-"-g -O2"}
> > > +-    CXX=${CXX-${host_alias}-c++}
> > > +-    CXXFLAGS=${CXXFLAGS-"-g -O2"}
> > > +-else
> > > +-    # Set reasonable default values for some tools even if not
> Canadian.
> > > +-    # Of course, these are different reasonable default values,
> originally
> > > +-    # specified directly in the Makefile.
> > > +-    # We don't export, so that autoconf can do its job.
> > > +-    # Note that all these settings are above the fragment inclusion
> point
> > > +-    # in Makefile.in, so can still be overridden by fragments.
> > > +-    # This is all going to change when we autoconfiscate...
> > > +-    CC_FOR_BUILD="\$(CC)"
> > > +-    CPPFLAGS_FOR_BUILD="\$(CPPFLAGS)"
> > > +-    AC_PROG_CC
> > > +-
> > > +-    # We must set the default linker to the linker used by gcc for
> the correct
> > > +-    # operation of libtool.  If LD is not defined and we are using
> gcc, try to
> > > +-    # set the LD default to the ld used by gcc.
> > > +-    if test -z "$LD"
> > > +-    then
> > > +-        if test "$GCC" = yes
> > > +-        then
> > > +-            case $build in
> > > +-            *-*-mingw*)
> > > +-                gcc_prog_ld=`$CC -print-prog-name=ld 2>&1 | tr -d
> '\015'` ;;
> > > +-            *)
> > > +-                gcc_prog_ld=`$CC -print-prog-name=ld 2>&1` ;;
> > > +-            esac
> > > +-            case $gcc_prog_ld in
> > > +-            # Accept absolute paths.
> > > +-            [[\\/]* | [A-Za-z]:[\\/]*)]
> > > +-                LD="$gcc_prog_ld" ;;
> > > +-            esac
> > > +-        fi
> > > +-    fi
> > > +-
> > > +-    CXX=${CXX-"c++"}
> > > +-    CFLAGS=${CFLAGS-"-g -O2"}
> > > +-    CXXFLAGS=${CXXFLAGS-"-g -O2"}
> > > +-fi
> > > ++AX_PROG_CC_FOR_BUILD
> > > +
> > > + AC_DEFUN([REMOVE_FROM_VAR],[
> > > +     new_val=""
> > > +diff --git a/src/Makefile.am b/src/Makefile.am
> > > +index e05fad5..9b409a1 100644
> > > +--- a/src/Makefile.am
> > > ++++ b/src/Makefile.am
> > > +@@ -386,44 +386,46 @@ noinst_HEADERS = cielab_luts.h \
> > > +                  v34_tx_pre_emphasis_filters.h \
> > > +                  v34_tables.h
> > > +
> > > +-make_at_dictionary$(EXEEXT): $(top_srcdir)/src/make_at_dictionary.c
> > > +-      $(CC_FOR_BUILD) -o make_at_dictionary$(EXEEXT)
> $(top_srcdir)/src/make_at_dictionary.c -DHAVE_CONFIG_H -I$(top_builddir)/src
> > > ++LINK_FOR_BUILD.c = $(CC_FOR_BUILD) -DHAVE_CONFIG_H
> -I$(top_builddir)/src $(CFLAGS_FOR_BUILD) $(CPPFLAGS_FOR_BUILD)
> $(LDFLAGS_FOR_BUILD) $(TARGET_ARCH_FOR_BUILD)
> > > +
> > > +-make_cielab_luts$(EXEEXT): $(top_srcdir)/src/make_cielab_luts.c
> > > +-      $(CC_FOR_BUILD) -o make_cielab_luts$(EXEEXT)
> $(top_srcdir)/src/make_cielab_luts.c -DHAVE_CONFIG_H -I$(top_builddir)/src
> -lm
> > > ++make_at_dictionary$(BUILD_EXEEXT):
> $(top_srcdir)/src/make_at_dictionary.c
> > > ++      $(LINK_FOR_BUILD.c) -o $@ $^
> > > +
> > > +-make_math_fixed_tables$(EXEEXT):
> $(top_srcdir)/src/make_math_fixed_tables.c
> > > +-      $(CC_FOR_BUILD) -o make_math_fixed_tables$(EXEEXT)
> $(top_srcdir)/src/make_math_fixed_tables.c -DHAVE_CONFIG_H
> -I$(top_builddir)/src -lm
> > > ++make_cielab_luts$(BUILD_EXEEXT): $(top_srcdir)/src/make_cielab_luts.c
> > > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > > +
> > > +-make_modem_filter$(EXEEXT): $(top_srcdir)/src/make_modem_filter.c
> $(top_srcdir)/src/filter_tools.c
> > > +-      $(CC_FOR_BUILD) -o make_modem_filter$(EXEEXT)
> $(top_srcdir)/src/make_modem_filter.c $(top_srcdir)/src/filter_tools.c
> -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > > ++make_math_fixed_tables$(BUILD_EXEEXT):
> $(top_srcdir)/src/make_math_fixed_tables.c
> > > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > > +
> > > +-make_modem_godard_coefficients$(EXEEXT):
> $(top_srcdir)/src/make_modem_godard_coefficients.c
> $(top_srcdir)/src/filter_tools.c
> > > +-      $(CC_FOR_BUILD) -o make_modem_godard_coefficients$(EXEEXT)
> $(top_srcdir)/src/make_modem_godard_coefficients.c
> $(top_srcdir)/src/filter_tools.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > > ++make_modem_filter$(BUILD_EXEEXT):
> $(top_srcdir)/src/make_modem_filter.c $(top_srcdir)/src/filter_tools.c
> > > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > > +
> > > +-make_t43_gray_code_tables$(EXEEXT):
> $(top_srcdir)/src/make_t43_gray_code_tables.c
> > > +-      $(CC_FOR_BUILD) -o make_t43_gray_code_tables$(EXEEXT)
> $(top_srcdir)/src/make_t43_gray_code_tables.c -DHAVE_CONFIG_H
> -I$(top_builddir)/src -lm
> > > ++make_modem_godard_coefficients$(BUILD_EXEEXT):
> $(top_srcdir)/src/make_modem_godard_coefficients.c
> $(top_srcdir)/src/filter_tools.c
> > > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > > +
> > > +-make_v17_v32_constellation_map$(EXEEXT):
> $(top_srcdir)/src/make_v17_v32_constellation_map.c $(top_srcdir)/src/g711.c
> $(top_srcdir)/src/alloc.c
> > > +-      $(CC_FOR_BUILD) -o make_v17_v32_constellation_map$(EXEEXT)
> $(top_srcdir)/src/make_v17_v32_constellation_map.c $(top_srcdir)/src/g711.c
> $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > > ++make_t43_gray_code_tables$(BUILD_EXEEXT):
> $(top_srcdir)/src/make_t43_gray_code_tables.c
> > > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > > +
> > > +-make_v17_v32_convolutional_encoder$(EXEEXT):
> $(top_srcdir)/src/make_v17_v32_convolutional_encoder.c
> $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> > > +-      $(CC_FOR_BUILD) -o make_v17_v32_convolutional_encoder$(EXEEXT)
> $(top_srcdir)/src/make_v17_v32_convolutional_encoder.c
> $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H
> -I$(top_builddir)/src -lm
> > > ++make_v17_v32_constellation_map$(BUILD_EXEEXT):
> $(top_srcdir)/src/make_v17_v32_constellation_map.c $(top_srcdir)/src/g711.c
> $(top_srcdir)/src/alloc.c
> > > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > > +
> > > +-make_v29_constellation_map$(EXEEXT):
> $(top_srcdir)/src/make_v29_constellation_map.c $(top_srcdir)/src/g711.c
> $(top_srcdir)/src/alloc.c
> > > +-      $(CC_FOR_BUILD) -o make_v29_constellation_map$(EXEEXT)
> $(top_srcdir)/src/make_v29_constellation_map.c $(top_srcdir)/src/g711.c
> $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > > ++make_v17_v32_convolutional_encoder$(BUILD_EXEEXT):
> $(top_srcdir)/src/make_v17_v32_convolutional_encoder.c
> $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
> > > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > > +
> > > +-make_v34_convolutional_coders$(EXEEXT):
> $(top_srcdir)/src/make_v34_convolutional_coders.c
> > > +-      $(CC_FOR_BUILD) -o make_v34_convolutional_coders$(EXEEXT)
> $(top_srcdir)/src/make_v34_convolutional_coders.c -DHAVE_CONFIG_H
> -I$(top_builddir)/src -lm
> > > ++make_v29_constellation_map$(BUILD_EXEEXT):
> $(top_srcdir)/src/make_v29_constellation_map.c $(top_srcdir)/src/g711.c
> $(top_srcdir)/src/alloc.c
> > > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > > +
> > > +-make_v34_probe_signals$(EXEEXT):
> $(top_srcdir)/src/make_v34_probe_signals.c $(top_srcdir)/src/g711.c
> $(top_srcdir)/src/alloc.c
> > > +-      $(CC_FOR_BUILD) -o make_v34_probe_signals$(EXEEXT)
> $(top_srcdir)/src/make_v34_probe_signals.c $(top_srcdir)/src/g711.c
> $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
> > > ++make_v34_convolutional_coders$(BUILD_EXEEXT):
> $(top_srcdir)/src/make_v34_convolutional_coders.c
> > > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -lm
> > > +
> > > +-make_v34_shell_map$(EXEEXT): $(top_srcdir)/src/make_v34_shell_map.c
> > > +-      $(CC_FOR_BUILD) -o make_v34_shell_map$(EXEEXT)
> $(top_srcdir)/src/make_v34_shell_map.c -DHAVE_CONFIG_H -I$(top_builddir)/src
> > > ++make_v34_probe_signals$(BUILD_EXEEXT):
> $(top_srcdir)/src/make_v34_probe_signals.c $(top_srcdir)/src/g711.c
> $(top_srcdir)/src/alloc.c
> > > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -I$(top_srcdir)/src -lm
> > > +
> > > +-make_v34_tx_pre_emphasis_filters$(EXEEXT):
> $(top_srcdir)/src/make_v34_tx_pre_emphasis_filters.c
> $(top_srcdir)/tools/meteor-engine.c
> > > +-      $(CC_FOR_BUILD) -o make_v34_tx_pre_emphasis_filters$(EXEEXT)
> $(top_srcdir)/src/make_v34_tx_pre_emphasis_filters.c
> $(top_srcdir)/tools/meteor-engine.c -DHAVE_CONFIG_H -I$(top_builddir)/src
> -I$(top_builddir)/tools -lm
> > > ++make_v34_shell_map$(BUILD_EXEEXT):
> $(top_srcdir)/src/make_v34_shell_map.c
> > > ++      $(LINK_FOR_BUILD.c) -o $@ $^
> > > ++
> > > ++make_v34_tx_pre_emphasis_filters$(BUILD_EXEEXT):
> $(top_srcdir)/src/make_v34_tx_pre_emphasis_filters.c
> $(top_srcdir)/tools/meteor-engine.c
> > > ++      $(LINK_FOR_BUILD.c) -o $@ $^ -I$(top_srcdir)/tools -lm
> > > +
> > > + # We need to run make_at_dictionary, so it generates the
> > > + # at_interpreter_dictionary.h file
> > > +--
> > > +2.34.1
> > > +
> > > diff --git a/meta-multimedia/recipes-multimedia/spandsp/spandsp_git.bb
> b/meta-multimedia/recipes-multimedia/spandsp/spandsp_git.bb
> > > new file mode 100644
> > > index 000000000..84bc4a8f1
> > > --- /dev/null
> > > +++ b/meta-multimedia/recipes-multimedia/spandsp/spandsp_git.bb
> > > @@ -0,0 +1,47 @@
> > > +SUMMARY = "A DSP library for telephony"
> > > +DESCRIPTION = "\
> > > +    SpanDSP is a low-level signal processing library that modulates
> and \
> > > +    demodulates signals commonly used in telephony, such as the
> \"noise\" \
> > > +    generated by a fax modem or DTMF touchpad. \
> > > +"
> > > +HOMEPAGE = "https://www.soft-switch.org/"
> > > +BUGTRACKER = "https://github.com/freeswitch/spandsp/issues"
> > > +SECTION = "libs"
> > > +LICENSE = "LGPL-2.1-only"
> > > +LIC_FILES_CHKSUM = "
> file://COPYING;md5=8791c23ddf418deb5be264cffb5fa6bc"
> > > +
> > > +DEPENDS = "\
> > > +    libxml2 \
> > > +    tiff \
> > > +    tiff-native \
> > > +"
> > > +
> > > +PV = "3.0.0+git"
> > > +
> > > +SRC_URI = "\
> > > +    git://
> github.com/freeswitch/spandsp.git;protocol=https;branch=master \
> > > +    file://configure.patch \
> > > +    file://makefile.patch \
> > > +"
> > > +SRCREV = "7b0b8cf3d42b725405bcc63145de5e280265ce4e"
> > > +
> > > +S = "${WORKDIR}/git"
> > > +
> > > +inherit autotools
> > > +
> > > +PACKAGECONFIG ?= ""
> > > +
> > > +PACKAGECONFIG[mmx] = "--enable-mmx,--disable-mmx"
> > > +PACKAGECONFIG[sse] = "--enable-sse,--disable-sse"
> > > +PACKAGECONFIG[sse2] = "--enable-sse2,--disable-sse2"
> > > +PACKAGECONFIG[sse3] = "--enable-sse3,--disable-sse3"
> > > +PACKAGECONFIG[ssse3] = "--enable-ssse3,--disable-ssse3"
> > > +PACKAGECONFIG[sse4-1] = "--enable-sse4-1,--disable-sse4-1"
> > > +PACKAGECONFIG[sse4-2] = "--enable-sse4-2,--disable-sse4-2"
> > > +PACKAGECONFIG[avx] = "--enable-avx,--disable-avx"
> > > +PACKAGECONFIG[avx2] = "--enable-avx2,--disable-avx2"
> > > +PACKAGECONFIG[neon] = "--enable-neon,--disable-neon"
> > > +PACKAGECONFIG[fixed-point] =
> "--enable-fixed-point,--disable-fixed-point"
> > > +PACKAGECONFIG[v32bis] = "--enable-v32bis,--disable-v32bis"
> > > +PACKAGECONFIG[v34] = "--enable-v34,--disable-v34"
> > > +PACKAGECONFIG[sslfax] = "--enable-sslfax,--disable-sslfax"
> > > --
> > > 2.34.1
> > >
> > >
> > >
> > >
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#109334):
> https://lists.openembedded.org/g/openembedded-devel/message/109334
> Mute This Topic: https://lists.openembedded.org/mt/104933829/3617156
> Group Owner: openembedded-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [
> martin.jansa@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>
Khem Raj March 17, 2024, 8:18 p.m. UTC | #7
On Thu, 14 Mar 2024 20:43:17 +0100, joerg.sommer@navimatix.de wrote:
> 


Applied, thanks!

[1/1] spandsp: new telephony DSP library
      commit: 6a2b29e98d77de46a2885eff15bc8e4bc42e9396

Best regards,
Martin Jansa March 19, 2024, 8:07 a.m. UTC | #8
On Sat, Mar 16, 2024 at 9:02 AM Martin Jansa via lists.openembedded.org
<martin.jansa=gmail.com@lists.openembedded.org> wrote:

> I'm seeing the same errors with gcc :)
>
> libtool: compile:  ccache arm-oe-linux-gnueabi-gcc -mthumb -mfpu=neon
> -mfloat-abi=softfp -mcpu=cortex-a9 -mtune=cortex-a9
> -fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security
> -Werror=format-security -Werror=return-type -funwind-tables -D_TIME_BITS=64
> -D_FILE_OFFSET_BITS=64
> --sysroot=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/lib32-recipe-sysroot
> -DHAVE_CONFIG_H -I. -I../../git/src -I.. -DNDEBUG -Wunused-but-set-variable
> -std=gnu99 -ffast-math -Wall -Wunused-variable -Wwrite-strings
> -Wstrict-prototypes -Wmissing-prototypes -fvisibility=hidden
> -DHAVE_VISIBILITY=1 -O2 -pipe -g -feliminate-unused-debug-types
> -fcanon-prefix-map
> -fmacro-prefix-map=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/git=/usr/src/debug/lib32-spandsp/3.0.0+git
> -fdebug-prefix-map=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/git=/usr/src/debug/lib32-spandsp/3.0.0+git
> -fmacro-prefix-map=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/build=/usr/src/debug/lib32-spandsp/3.0.0+git
> -fdebug-prefix-map=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/build=/usr/src/debug/lib32-spandsp/3.0.0+git
> -fdebug-prefix-map=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/lib32-recipe-sysroot=
> -fmacro-prefix-map=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/lib32-recipe-sysroot=
> -fdebug-prefix-map=TOPDIR/BUILD/work/mach-oe-linux-gnueabi/lib32-spandsp/3.0.0+git/recipe-sysroot-native=
> -c ../../git/src/t38_terminal.c  -fPIC -DPIC -o .libs/t38_terminal.o
> ../../git/src/ademco_contactid.c:449:110: error: expected ')' before ';'
> token
>   449 | static const int detection_threshold            =
> goertzel_threshold_dbm0(GOERTZEL_SAMPLES_PER_BLOCK, -42.0f);
>       |
>                                            ^
> In file included from ../../git/src/ademco_contactid.c:66:
> ../../git/src/spandsp/tone_detect.h:63:55: note: to match this '('
>    63 | #define goertzel_threshold_dbm0(len,thresh)     (int)
> ((len*len*256.0*256.0/2.0*pow(10.0, (thresh - DBM0_MAX_SINE_POWER)/10.0))
>       |                                                       ^
> ../../git/src/ademco_contactid.c:449:51: note: in expansion of macro
> 'goertzel_threshold_dbm0'
>   449 | static const int detection_threshold            =
> goertzel_threshold_dbm0(GOERTZEL_SAMPLES_PER_BLOCK, -42.0f);
>       |
> ^~~~~~~~~~~~~~~~~~~~~~~
> ../../git/src/ademco_contactid.c:449:18: warning: 'detection_threshold'
> defined but not used [-Wunused-const-variable=]
>   449 | static const int detection_threshold            =
> goertzel_threshold_dbm0(GOERTZEL_SAMPLES_PER_BLOCK, -42.0f);
>       |                  ^~~~~~~~~~~~~~~~~~~
> ../../git/src/ademco_contactid.c:210:35: warning: 'ademco_codes' defined
> but not used [-Wunused-const-variable=]
>   210 | static const struct ademco_code_s ademco_codes[] =
>       |                                   ^~~~~~~~~~~~
> make[2]: *** [Makefile:1091: ademco_contactid.lo] Error 1
>
> This is with master-next meta-oe from yesterday in build with multilib
> (night not be important)
>

The failure on gcc was caused by arm build using SPANDSP_USE_FIXED_POINT
and missing ')' in one of the macros, see comments in:
https://github.com/freeswitch/spandsp/commit/5394b2cae6c482ccb835335b769469977e6802ae#commitcomment-139934289
and the fix:
https://github.com/freeswitch/spandsp/pull/75
diff mbox series

Patch

diff --git a/meta-multimedia/recipes-multimedia/spandsp/spandsp/configure.patch b/meta-multimedia/recipes-multimedia/spandsp/spandsp/configure.patch
new file mode 100644
index 000000000..af504be76
--- /dev/null
+++ b/meta-multimedia/recipes-multimedia/spandsp/spandsp/configure.patch
@@ -0,0 +1,56 @@ 
+From: =?UTF-8?q?J=C3=B6rg=20Sommer?= <joerg.sommer@navimatix.de>
+Date: Thu, 14 Mar 2024 09:41:57 +0100
+Subject: [PATCH 2/2] configure: Replace manual search for libxml by
+ AC_CHECK_LIB
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The manual search fails if the include directories (and build environment)
+are located somewhere else.
+
+Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
+Upstream-Status: Submitted [https://github.com/freeswitch/spandsp/pull/74]
+---
+
+ERROR: spandsp-3.0.0+git-r0 do_configure: QA Issue: This autoconf log indicates errors, it looked at host include and/or library paths while determining system capabilities.
+
+ configure.ac | 22 +++++-----------------
+ 1 file changed, 5 insertions(+), 17 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 2140837..b5138d6 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -185,23 +185,11 @@ then
+ fi
+ 
+ # Determine XML2 include path
+-AC_MSG_CHECKING(for libxml/xmlmemory.h)
+-
+-# Can we include headers using system include dirs?
+-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <libxml/xmlmemory.h>]], [[int a = 1;]])],[XML2_INCLUDE=" "],[XML2_INCLUDE=])
+-
+-# Hunt through several possible directories to find the includes for libxml2
+-if test "x$XML2_INCLUDE" = "x"; then
+-    old_CPPFLAGS="$CPPFLAGS"
+-    for i in $xml2_include_dir /usr/include /usr/local/include /usr/include/libxml2 /usr/local/include/libxml2 ; do
+-        CPPFLAGS="$old_CPPFLAGS -I$i"
+-        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <libxml/xmlmemory.h>]], [[int a = 1;]])],[XML2_INCLUDE="-I$i"],[XML2_INCLUDE=
+-        ])
+-        if test "x$XML2_INCLUDE" != "x"; then
+-            break;
+-        fi
+-    done
+-    CPPFLAGS="$old_CPPFLAGS $XML2_INCLUDE"
++AC_CHECK_LIB([xml2], [xmlParseFile], [libxml2_found=yes])
++if test "$libxml2_found" = "yes" ; then
++    AC_DEFINE(HAVE_LIBXML2,1,[defined when libxml2 is available])
++else
++    AC_MSG_WARN([libxml2 not found. Disabling cache.])
+ fi
+ 
+ AC_CHECK_HEADERS([libxml/xmlmemory.h])
+-- 
+2.34.1
+
diff --git a/meta-multimedia/recipes-multimedia/spandsp/spandsp/makefile.patch b/meta-multimedia/recipes-multimedia/spandsp/spandsp/makefile.patch
new file mode 100644
index 000000000..d3eb047fe
--- /dev/null
+++ b/meta-multimedia/recipes-multimedia/spandsp/spandsp/makefile.patch
@@ -0,0 +1,161 @@ 
+From: =?UTF-8?q?J=C3=B6rg=20Sommer?= <joerg.sommer@navimatix.de>
+Date: Thu, 14 Mar 2024 08:08:13 +0100
+Subject: [PATCH 1/2] configure: Use AX_PROG_CC_FOR_BUILD for cross compiling
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The macro AX_PROG_CC_FOR_BUILD [1] sets the variables CC_FOR_BUILD and
+..._FLAGS_FOR_BUILD they can be used [2] to build binaries used at compile
+time.
+
+[1]: https://www.gnu.org/software/autoconf-archive/ax_prog_cc_for_build.html
+[2]: https://stackoverflow.com/questions/24201260/autotools-cross-compilation-and-generated-sources/24208587#24208587
+
+Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
+Upstream-Status: Submitted [https://github.com/freeswitch/spandsp/pull/74]
+---
+ configure.ac    | 49 +-------------------------------------------
+ src/Makefile.am | 54 +++++++++++++++++++++++++------------------------
+ 2 files changed, 29 insertions(+), 74 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 96fd022..2140837 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -55,54 +55,7 @@ AC_LANG([C])
+ 
+ AX_COMPILER_VENDOR
+ 
+-if test "${build}" != "${host}"
+-then
+-    # If we are doing a Canadian Cross, in which the host and build systems
+-    # are not the same, we set reasonable default values for the tools.
+-
+-    CC_FOR_BUILD=${CC_FOR_BUILD-gcc}
+-    CPPFLAGS_FOR_BUILD="\$(CPPFLAGS)"
+-    CC=${CC-${host_alias}-gcc}
+-    CFLAGS=${CFLAGS-"-g -O2"}
+-    CXX=${CXX-${host_alias}-c++}
+-    CXXFLAGS=${CXXFLAGS-"-g -O2"}
+-else
+-    # Set reasonable default values for some tools even if not Canadian.
+-    # Of course, these are different reasonable default values, originally
+-    # specified directly in the Makefile.
+-    # We don't export, so that autoconf can do its job.
+-    # Note that all these settings are above the fragment inclusion point
+-    # in Makefile.in, so can still be overridden by fragments.
+-    # This is all going to change when we autoconfiscate...
+-    CC_FOR_BUILD="\$(CC)"
+-    CPPFLAGS_FOR_BUILD="\$(CPPFLAGS)"
+-    AC_PROG_CC
+-
+-    # We must set the default linker to the linker used by gcc for the correct
+-    # operation of libtool.  If LD is not defined and we are using gcc, try to
+-    # set the LD default to the ld used by gcc.
+-    if test -z "$LD"
+-    then
+-        if test "$GCC" = yes
+-        then
+-            case $build in
+-            *-*-mingw*)
+-                gcc_prog_ld=`$CC -print-prog-name=ld 2>&1 | tr -d '\015'` ;;
+-            *)
+-                gcc_prog_ld=`$CC -print-prog-name=ld 2>&1` ;;
+-            esac
+-            case $gcc_prog_ld in
+-            # Accept absolute paths.
+-            [[\\/]* | [A-Za-z]:[\\/]*)]
+-                LD="$gcc_prog_ld" ;;
+-            esac
+-        fi
+-    fi
+-
+-    CXX=${CXX-"c++"}
+-    CFLAGS=${CFLAGS-"-g -O2"}
+-    CXXFLAGS=${CXXFLAGS-"-g -O2"}
+-fi
++AX_PROG_CC_FOR_BUILD
+ 
+ AC_DEFUN([REMOVE_FROM_VAR],[
+     new_val=""
+diff --git a/src/Makefile.am b/src/Makefile.am
+index e05fad5..9b409a1 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -386,44 +386,46 @@ noinst_HEADERS = cielab_luts.h \
+                  v34_tx_pre_emphasis_filters.h \
+                  v34_tables.h
+ 
+-make_at_dictionary$(EXEEXT): $(top_srcdir)/src/make_at_dictionary.c
+-	$(CC_FOR_BUILD) -o make_at_dictionary$(EXEEXT) $(top_srcdir)/src/make_at_dictionary.c -DHAVE_CONFIG_H -I$(top_builddir)/src
++LINK_FOR_BUILD.c = $(CC_FOR_BUILD) -DHAVE_CONFIG_H -I$(top_builddir)/src $(CFLAGS_FOR_BUILD) $(CPPFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) $(TARGET_ARCH_FOR_BUILD)
+ 
+-make_cielab_luts$(EXEEXT): $(top_srcdir)/src/make_cielab_luts.c
+-	$(CC_FOR_BUILD) -o make_cielab_luts$(EXEEXT) $(top_srcdir)/src/make_cielab_luts.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
++make_at_dictionary$(BUILD_EXEEXT): $(top_srcdir)/src/make_at_dictionary.c
++	$(LINK_FOR_BUILD.c) -o $@ $^
+ 
+-make_math_fixed_tables$(EXEEXT): $(top_srcdir)/src/make_math_fixed_tables.c
+-	$(CC_FOR_BUILD) -o make_math_fixed_tables$(EXEEXT) $(top_srcdir)/src/make_math_fixed_tables.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
++make_cielab_luts$(BUILD_EXEEXT): $(top_srcdir)/src/make_cielab_luts.c
++	$(LINK_FOR_BUILD.c) -o $@ $^ -lm
+ 
+-make_modem_filter$(EXEEXT): $(top_srcdir)/src/make_modem_filter.c $(top_srcdir)/src/filter_tools.c
+-	$(CC_FOR_BUILD) -o make_modem_filter$(EXEEXT) $(top_srcdir)/src/make_modem_filter.c $(top_srcdir)/src/filter_tools.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
++make_math_fixed_tables$(BUILD_EXEEXT): $(top_srcdir)/src/make_math_fixed_tables.c
++	$(LINK_FOR_BUILD.c) -o $@ $^ -lm
+ 
+-make_modem_godard_coefficients$(EXEEXT): $(top_srcdir)/src/make_modem_godard_coefficients.c $(top_srcdir)/src/filter_tools.c
+-	$(CC_FOR_BUILD) -o make_modem_godard_coefficients$(EXEEXT) $(top_srcdir)/src/make_modem_godard_coefficients.c $(top_srcdir)/src/filter_tools.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
++make_modem_filter$(BUILD_EXEEXT): $(top_srcdir)/src/make_modem_filter.c $(top_srcdir)/src/filter_tools.c
++	$(LINK_FOR_BUILD.c) -o $@ $^ -lm
+ 
+-make_t43_gray_code_tables$(EXEEXT): $(top_srcdir)/src/make_t43_gray_code_tables.c
+-	$(CC_FOR_BUILD) -o make_t43_gray_code_tables$(EXEEXT) $(top_srcdir)/src/make_t43_gray_code_tables.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
++make_modem_godard_coefficients$(BUILD_EXEEXT): $(top_srcdir)/src/make_modem_godard_coefficients.c $(top_srcdir)/src/filter_tools.c
++	$(LINK_FOR_BUILD.c) -o $@ $^ -lm
+ 
+-make_v17_v32_constellation_map$(EXEEXT): $(top_srcdir)/src/make_v17_v32_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
+-	$(CC_FOR_BUILD) -o make_v17_v32_constellation_map$(EXEEXT) $(top_srcdir)/src/make_v17_v32_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
++make_t43_gray_code_tables$(BUILD_EXEEXT): $(top_srcdir)/src/make_t43_gray_code_tables.c
++	$(LINK_FOR_BUILD.c) -o $@ $^ -lm
+ 
+-make_v17_v32_convolutional_encoder$(EXEEXT): $(top_srcdir)/src/make_v17_v32_convolutional_encoder.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
+-	$(CC_FOR_BUILD) -o make_v17_v32_convolutional_encoder$(EXEEXT) $(top_srcdir)/src/make_v17_v32_convolutional_encoder.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
++make_v17_v32_constellation_map$(BUILD_EXEEXT): $(top_srcdir)/src/make_v17_v32_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
++	$(LINK_FOR_BUILD.c) -o $@ $^ -lm
+ 
+-make_v29_constellation_map$(EXEEXT): $(top_srcdir)/src/make_v29_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
+-	$(CC_FOR_BUILD) -o make_v29_constellation_map$(EXEEXT) $(top_srcdir)/src/make_v29_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
++make_v17_v32_convolutional_encoder$(BUILD_EXEEXT): $(top_srcdir)/src/make_v17_v32_convolutional_encoder.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
++	$(LINK_FOR_BUILD.c) -o $@ $^ -lm
+ 
+-make_v34_convolutional_coders$(EXEEXT): $(top_srcdir)/src/make_v34_convolutional_coders.c
+-	$(CC_FOR_BUILD) -o make_v34_convolutional_coders$(EXEEXT) $(top_srcdir)/src/make_v34_convolutional_coders.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
++make_v29_constellation_map$(BUILD_EXEEXT): $(top_srcdir)/src/make_v29_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
++	$(LINK_FOR_BUILD.c) -o $@ $^ -lm
+ 
+-make_v34_probe_signals$(EXEEXT): $(top_srcdir)/src/make_v34_probe_signals.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
+-	$(CC_FOR_BUILD) -o make_v34_probe_signals$(EXEEXT) $(top_srcdir)/src/make_v34_probe_signals.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
++make_v34_convolutional_coders$(BUILD_EXEEXT): $(top_srcdir)/src/make_v34_convolutional_coders.c
++	$(LINK_FOR_BUILD.c) -o $@ $^ -lm
+ 
+-make_v34_shell_map$(EXEEXT): $(top_srcdir)/src/make_v34_shell_map.c
+-	$(CC_FOR_BUILD) -o make_v34_shell_map$(EXEEXT) $(top_srcdir)/src/make_v34_shell_map.c -DHAVE_CONFIG_H -I$(top_builddir)/src
++make_v34_probe_signals$(BUILD_EXEEXT): $(top_srcdir)/src/make_v34_probe_signals.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
++	$(LINK_FOR_BUILD.c) -o $@ $^ -I$(top_srcdir)/src -lm
+ 
+-make_v34_tx_pre_emphasis_filters$(EXEEXT): $(top_srcdir)/src/make_v34_tx_pre_emphasis_filters.c $(top_srcdir)/tools/meteor-engine.c
+-	$(CC_FOR_BUILD) -o make_v34_tx_pre_emphasis_filters$(EXEEXT) $(top_srcdir)/src/make_v34_tx_pre_emphasis_filters.c $(top_srcdir)/tools/meteor-engine.c -DHAVE_CONFIG_H -I$(top_builddir)/src -I$(top_builddir)/tools -lm
++make_v34_shell_map$(BUILD_EXEEXT): $(top_srcdir)/src/make_v34_shell_map.c
++	$(LINK_FOR_BUILD.c) -o $@ $^
++
++make_v34_tx_pre_emphasis_filters$(BUILD_EXEEXT): $(top_srcdir)/src/make_v34_tx_pre_emphasis_filters.c $(top_srcdir)/tools/meteor-engine.c
++	$(LINK_FOR_BUILD.c) -o $@ $^ -I$(top_srcdir)/tools -lm
+ 
+ # We need to run make_at_dictionary, so it generates the
+ # at_interpreter_dictionary.h file
+-- 
+2.34.1
+
diff --git a/meta-multimedia/recipes-multimedia/spandsp/spandsp_git.bb b/meta-multimedia/recipes-multimedia/spandsp/spandsp_git.bb
new file mode 100644
index 000000000..84bc4a8f1
--- /dev/null
+++ b/meta-multimedia/recipes-multimedia/spandsp/spandsp_git.bb
@@ -0,0 +1,47 @@ 
+SUMMARY = "A DSP library for telephony"
+DESCRIPTION = "\
+    SpanDSP is a low-level signal processing library that modulates and \
+    demodulates signals commonly used in telephony, such as the \"noise\" \
+    generated by a fax modem or DTMF touchpad. \
+"
+HOMEPAGE = "https://www.soft-switch.org/"
+BUGTRACKER = "https://github.com/freeswitch/spandsp/issues"
+SECTION = "libs"
+LICENSE = "LGPL-2.1-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8791c23ddf418deb5be264cffb5fa6bc"
+
+DEPENDS = "\
+    libxml2 \
+    tiff \
+    tiff-native \
+"
+
+PV = "3.0.0+git"
+
+SRC_URI = "\
+    git://github.com/freeswitch/spandsp.git;protocol=https;branch=master \
+    file://configure.patch \
+    file://makefile.patch \
+"
+SRCREV = "7b0b8cf3d42b725405bcc63145de5e280265ce4e"
+
+S = "${WORKDIR}/git"
+
+inherit autotools
+
+PACKAGECONFIG ?= ""
+
+PACKAGECONFIG[mmx] = "--enable-mmx,--disable-mmx"
+PACKAGECONFIG[sse] = "--enable-sse,--disable-sse"
+PACKAGECONFIG[sse2] = "--enable-sse2,--disable-sse2"
+PACKAGECONFIG[sse3] = "--enable-sse3,--disable-sse3"
+PACKAGECONFIG[ssse3] = "--enable-ssse3,--disable-ssse3"
+PACKAGECONFIG[sse4-1] = "--enable-sse4-1,--disable-sse4-1"
+PACKAGECONFIG[sse4-2] = "--enable-sse4-2,--disable-sse4-2"
+PACKAGECONFIG[avx] = "--enable-avx,--disable-avx"
+PACKAGECONFIG[avx2] = "--enable-avx2,--disable-avx2"
+PACKAGECONFIG[neon] = "--enable-neon,--disable-neon"
+PACKAGECONFIG[fixed-point] = "--enable-fixed-point,--disable-fixed-point"
+PACKAGECONFIG[v32bis] = "--enable-v32bis,--disable-v32bis"
+PACKAGECONFIG[v34] = "--enable-v34,--disable-v34"
+PACKAGECONFIG[sslfax] = "--enable-sslfax,--disable-sslfax"