From 75d393a563efb578c79364a277087c6326267f52 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 12 Nov 2019 19:30:36 +0100 Subject: [PATCH] create separated libatopology library with the topology routines Signed-off-by: Jaroslav Kysela --- Makefile.am | 3 ++ configure.ac | 14 ++++++-- src/Makefile.am | 4 --- src/topology/Makefile.am | 23 +++++++++--- utils/Makefile.am | 2 +- utils/alsa-topology.pc.in | 5 +++ utils/alsa.m4 | 75 ++++++++++++++++++++++++++++++++------- 7 files changed, 102 insertions(+), 24 deletions(-) create mode 100644 utils/alsa-topology.pc.in diff --git a/Makefile.am b/Makefile.am index 52f7654a..c484d4da 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,6 +1,9 @@ ACLOCAL_AMFLAGS = -I m4 SUBDIRS=doc include src +if BUILD_TOPOLOGY +SUBDIRS += src/topology +endif if BUILD_MODULES SUBDIRS += modules endif diff --git a/configure.ac b/configure.ac index 711a622b..f15e646a 100644 --- a/configure.ac +++ b/configure.ac @@ -718,12 +718,12 @@ AC_OUTPUT(Makefile doc/Makefile doc/pictures/Makefile doc/doxygen.cfg \ src/conf/pcm/Makefile \ src/conf/topology/Makefile \ src/conf/topology/broadwell/Makefile \ - modules/Makefile modules/mixer/Makefile modules/mixer/simple/Makefile \ src/conf/topology/sklrt286/Makefile \ src/conf/topology/bxtrt298/Makefile \ + modules/Makefile modules/mixer/Makefile modules/mixer/simple/Makefile \ alsalisp/Makefile aserver/Makefile \ test/Makefile test/lsb/Makefile \ - utils/Makefile utils/alsa-lib.spec utils/alsa.pc) + utils/Makefile utils/alsa-lib.spec utils/alsa.pc utils/alsa-topology.pc) dnl Create asoundlib.h dynamically according to configure options echo "Creating asoundlib.h..." @@ -769,3 +769,13 @@ test "$build_seq" = "yes" && echo "#include " >> include/asoundli test "$build_seq" = "yes" && echo "#include " >> include/asoundlib.h cat "$srcdir"/include/asoundlib-tail.h >> include/asoundlib.h +dnl Taken from https://wiki.debian.org/RpathIssue +case $host in + *-*-linux-gnu) + AC_MSG_RESULT([Fixing libtool for -rpath problems.]) + sed < libtool > libtool-2 \ + 's/^hardcode_libdir_flag_spec.*$'/'hardcode_libdir_flag_spec=" -D__LIBTOOL_IS_A_FOOL__ "/' + mv libtool-2 libtool + chmod 755 libtool + ;; +esac diff --git a/src/Makefile.am b/src/Makefile.am index 57686a61..43fd3330 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -42,10 +42,6 @@ if BUILD_UCM SUBDIRS += ucm libasound_la_LIBADD += ucm/libucm.la endif -if BUILD_TOPOLOGY -SUBDIRS += topology -libasound_la_LIBADD += topology/libtopology.la -endif if BUILD_ALISP SUBDIRS += alisp libasound_la_LIBADD += alisp/libalisp.la diff --git a/src/topology/Makefile.am b/src/topology/Makefile.am index 3fb8bf7a..9dc472d6 100644 --- a/src/topology/Makefile.am +++ b/src/topology/Makefile.am @@ -1,6 +1,23 @@ -EXTRA_LTLIBRARIES = libtopology.la +COMPATNUM=@LIBTOOL_VERSION_INFO@ -libtopology_la_SOURCES =\ +if VERSIONED_SYMBOLS +VSYMS = -Wl,--version-script=../Versions +else +VSYMS = +endif + +if SYMBOLIC_FUNCTIONS +SYMFUNCS = -Wl,-Bsymbolic-functions +else +SYMFUNCS = +endif + +lib_LTLIBRARIES = libatopology.la + +libatopology_la_LIBADD = ../libasound.la +libatopology_la_LDFLAGS = -version-info $(COMPATNUM) $(VSYMS) $(SYMFUNCS) $(LDFLAGS_NOUNDEFINED) + +libatopology_la_SOURCES =\ parser.c \ builder.c \ ctl.c \ @@ -14,6 +31,4 @@ libtopology_la_SOURCES =\ noinst_HEADERS = tplg_local.h -all: libtopology.la - AM_CPPFLAGS=-I$(top_srcdir)/include diff --git a/utils/Makefile.am b/utils/Makefile.am index 7220c020..94a71053 100644 --- a/utils/Makefile.am +++ b/utils/Makefile.am @@ -6,7 +6,7 @@ EXTRA_DIST=alsa.m4 buildrpm alsa.pc.in alsapkgconfdir = @ALSA_PKGCONF_DIR@ pkgconfigdir = $(alsapkgconfdir) -pkgconfig_DATA = alsa.pc +pkgconfig_DATA = alsa.pc alsa-topology.pc rpm: buildrpm alsa-lib.spec VERSION=$(VERSION) $(srcdir)/buildrpm diff --git a/utils/alsa-topology.pc.in b/utils/alsa-topology.pc.in new file mode 100644 index 00000000..f5a3b81d --- /dev/null +++ b/utils/alsa-topology.pc.in @@ -0,0 +1,5 @@ +Name: alsa-topology +Description: Advanced Linux Sound Architecture (ALSA) - Topology Library +Version: @VERSION@ +Requires: alsa >= @VERSION@ +Libs: -latopology diff --git a/utils/alsa.m4 b/utils/alsa.m4 index a5c5a292..90e3ee56 100644 --- a/utils/alsa.m4 +++ b/utils/alsa.m4 @@ -3,15 +3,19 @@ dnl Some modifications by Richard Boulton dnl Christopher Lansdown dnl Jaroslav Kysela dnl Last modification: $Id: alsa.m4,v 1.24 2004/09/15 18:48:07 tiwai Exp $ +dnl dnl AM_PATH_ALSA([MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) -dnl Test for libasound, and define ALSA_CFLAGS and ALSA_LIBS as appropriate. +dnl Test for libasound, and define ALSA_CFLAGS, ALSA_LIBS and +dnl ALSA_TOPOLOGY_LIBS as appropriate. +dnl dnl enables arguments --with-alsa-prefix= -dnl --with-alsa-enc-prefix= +dnl --with-alsa-inc-prefix= dnl --disable-alsatest dnl dnl For backwards compatibility, if ACTION_IF_NOT_FOUND is not specified, dnl and the alsa libraries are not found, a fatal AC_MSG_ERROR() will result. dnl + AC_DEFUN([AM_PATH_ALSA], [dnl Save the original CFLAGS, LDFLAGS, and LIBS alsa_save_CFLAGS="$CFLAGS" @@ -23,18 +27,22 @@ dnl dnl Get the cflags and libraries for alsa dnl AC_ARG_WITH(alsa-prefix, -[ --with-alsa-prefix=PFX Prefix where Alsa library is installed(optional)], -[alsa_prefix="$withval"], [alsa_prefix=""]) + AS_HELP_STRING([--with-alsa-prefix=PFX], [Prefix where Alsa library is installed(optional)]), + [alsa_prefix="$withval"], [alsa_prefix=""]) AC_ARG_WITH(alsa-inc-prefix, -[ --with-alsa-inc-prefix=PFX Prefix where include libraries are (optional)], -[alsa_inc_prefix="$withval"], [alsa_inc_prefix=""]) + AS_HELP_STRING([--with-alsa-inc-prefix=PFX], [Prefix where include libraries are (optional)]), + [alsa_inc_prefix="$withval"], [alsa_inc_prefix=""]) + +AC_ARG_ENABLE(alsa-topology, + AS_HELP_STRING([--enable-alsatopology], [Force to use the Alsa topology library]), + [enable_atopology="$enableval"], + [enable_atopology=no]) -dnl FIXME: this is not yet implemented AC_ARG_ENABLE(alsatest, -[ --disable-alsatest Do not try to compile and run a test Alsa program], -[enable_alsatest="$enableval"], -[enable_alsatest=yes]) + AS_HELP_STRING([--disable-alsatest], [Do not try to compile and run a test Alsa program]), + [enable_alsatest="$enableval"], + [enable_alsatest=yes]) dnl Add any special include directories AC_MSG_CHECKING(for ALSA CFLAGS) @@ -60,8 +68,9 @@ AC_MSG_RESULT($ALSA_LIBS) dnl Check for a working version of libasound that is of the right version. if test "x$enable_alsatest" = "xyes"; then -min_alsa_version=ifelse([$1], ,0.1.1,$1) -AC_MSG_CHECKING(for libasound headers version >= $min_alsa_version) + +AC_MSG_CHECKING([required libasound headers version]) +min_alsa_version=ifelse([$1], , 0.1.1, $1) no_alsa="" alsa_min_major_version=`echo $min_alsa_version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` @@ -69,9 +78,11 @@ no_alsa="" sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` alsa_min_micro_version=`echo $min_alsa_version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` +AC_MSG_RESULT($alsa_min_major_version.$alsa_min_minor_version.$alsa_min_micro_version) AC_LANG_SAVE AC_LANG_C +AC_MSG_CHECKING([for libasound headers version >= $alsa_min_major_version.$alsa_min_minor_version.$alsa_min_micro_version ($min_alsa_version)]) AC_TRY_COMPILE([ #include ], [ @@ -113,6 +124,30 @@ exit(0); alsa_found=no] ) AC_LANG_RESTORE + +AC_LANG_SAVE +AC_LANG_C +AC_MSG_CHECKING([for libatopology (sound headers version > 1.1.9)]) +AC_TRY_COMPILE([ +#include +], [ +/* ensure backward compatibility */ +#if !defined(SND_LIB_VERSION) +#define SND_LIB_VERSION 0 +#endif +#if SND_LIB_VERSION > 0x00010109 + exit(0); +#else +# error not present +#endif +exit(0); +], + [AC_MSG_RESULT(yes) + enable_atopology="yes"], + [AC_MSG_RESULT(no)] +) +AC_LANG_RESTORE + fi dnl Now that we know that we have the right version, let's see if we have the library and not just the headers. @@ -121,6 +156,12 @@ AC_CHECK_LIB([asound], [snd_ctl_open],, [ifelse([$3], , [AC_MSG_ERROR(No linkable libasound was found.)]) alsa_found=no] ) +if test "x$enable_atopology" = "xyes"; then +AC_CHECK_LIB([atopology], [snd_tplg_new],, + [ifelse([$3], , [AC_MSG_ERROR(No linkable libatopology was found.)]) + alsa_found=no] +) +fi fi if test "x$alsa_found" = "xyes" ; then @@ -136,10 +177,18 @@ if test "x$alsa_found" = "xno" ; then LIBS="$alsa_save_LIBS" ALSA_CFLAGS="" ALSA_LIBS="" + ALSA_TOPOLOGY_LIBS="" fi +dnl add the alsa topology library; must be at the end +AC_MSG_CHECKING(for ALSA topology LDFLAGS) +if test "x$enable_atopology" = "xyes"; then + ALSA_TOPOLOGY_LIBS="$ALSA_TOPOLOGY_LIBS -latopology" +fi +AC_MSG_RESULT($ALSA_TOPOLOGY_LIBS) + dnl That should be it. Now just export out symbols: AC_SUBST(ALSA_CFLAGS) AC_SUBST(ALSA_LIBS) +AC_SUBST(ALSA_TOPOLOGY_LIBS) ]) - -- 2.47.1