create separated libatopology library with the topology routines

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
Jaroslav Kysela 2019-11-12 19:30:36 +01:00
parent 1f37ba2a2b
commit 75d393a563
7 changed files with 102 additions and 24 deletions

View file

@ -1,6 +1,9 @@
ACLOCAL_AMFLAGS = -I m4 ACLOCAL_AMFLAGS = -I m4
SUBDIRS=doc include src SUBDIRS=doc include src
if BUILD_TOPOLOGY
SUBDIRS += src/topology
endif
if BUILD_MODULES if BUILD_MODULES
SUBDIRS += modules SUBDIRS += modules
endif endif

View file

@ -718,12 +718,12 @@ AC_OUTPUT(Makefile doc/Makefile doc/pictures/Makefile doc/doxygen.cfg \
src/conf/pcm/Makefile \ src/conf/pcm/Makefile \
src/conf/topology/Makefile \ src/conf/topology/Makefile \
src/conf/topology/broadwell/Makefile \ src/conf/topology/broadwell/Makefile \
modules/Makefile modules/mixer/Makefile modules/mixer/simple/Makefile \
src/conf/topology/sklrt286/Makefile \ src/conf/topology/sklrt286/Makefile \
src/conf/topology/bxtrt298/Makefile \ src/conf/topology/bxtrt298/Makefile \
modules/Makefile modules/mixer/Makefile modules/mixer/simple/Makefile \
alsalisp/Makefile aserver/Makefile \ alsalisp/Makefile aserver/Makefile \
test/Makefile test/lsb/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 dnl Create asoundlib.h dynamically according to configure options
echo "Creating asoundlib.h..." echo "Creating asoundlib.h..."
@ -769,3 +769,13 @@ test "$build_seq" = "yes" && echo "#include <alsa/seqmid.h>" >> include/asoundli
test "$build_seq" = "yes" && echo "#include <alsa/seq_midi_event.h>" >> include/asoundlib.h test "$build_seq" = "yes" && echo "#include <alsa/seq_midi_event.h>" >> include/asoundlib.h
cat "$srcdir"/include/asoundlib-tail.h >> 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

View file

@ -42,10 +42,6 @@ if BUILD_UCM
SUBDIRS += ucm SUBDIRS += ucm
libasound_la_LIBADD += ucm/libucm.la libasound_la_LIBADD += ucm/libucm.la
endif endif
if BUILD_TOPOLOGY
SUBDIRS += topology
libasound_la_LIBADD += topology/libtopology.la
endif
if BUILD_ALISP if BUILD_ALISP
SUBDIRS += alisp SUBDIRS += alisp
libasound_la_LIBADD += alisp/libalisp.la libasound_la_LIBADD += alisp/libalisp.la

View file

@ -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 \ parser.c \
builder.c \ builder.c \
ctl.c \ ctl.c \
@ -14,6 +31,4 @@ libtopology_la_SOURCES =\
noinst_HEADERS = tplg_local.h noinst_HEADERS = tplg_local.h
all: libtopology.la
AM_CPPFLAGS=-I$(top_srcdir)/include AM_CPPFLAGS=-I$(top_srcdir)/include

View file

@ -6,7 +6,7 @@ EXTRA_DIST=alsa.m4 buildrpm alsa.pc.in
alsapkgconfdir = @ALSA_PKGCONF_DIR@ alsapkgconfdir = @ALSA_PKGCONF_DIR@
pkgconfigdir = $(alsapkgconfdir) pkgconfigdir = $(alsapkgconfdir)
pkgconfig_DATA = alsa.pc pkgconfig_DATA = alsa.pc alsa-topology.pc
rpm: buildrpm alsa-lib.spec rpm: buildrpm alsa-lib.spec
VERSION=$(VERSION) $(srcdir)/buildrpm VERSION=$(VERSION) $(srcdir)/buildrpm

View file

@ -0,0 +1,5 @@
Name: alsa-topology
Description: Advanced Linux Sound Architecture (ALSA) - Topology Library
Version: @VERSION@
Requires: alsa >= @VERSION@
Libs: -latopology

View file

@ -3,15 +3,19 @@ dnl Some modifications by Richard Boulton <richard-alsa@tartarus.org>
dnl Christopher Lansdown <lansdoct@cs.alfred.edu> dnl Christopher Lansdown <lansdoct@cs.alfred.edu>
dnl Jaroslav Kysela <perex@perex.cz> dnl Jaroslav Kysela <perex@perex.cz>
dnl Last modification: $Id: alsa.m4,v 1.24 2004/09/15 18:48:07 tiwai Exp $ 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 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 enables arguments --with-alsa-prefix=
dnl --with-alsa-enc-prefix= dnl --with-alsa-inc-prefix=
dnl --disable-alsatest dnl --disable-alsatest
dnl dnl
dnl For backwards compatibility, if ACTION_IF_NOT_FOUND is not specified, 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 and the alsa libraries are not found, a fatal AC_MSG_ERROR() will result.
dnl dnl
AC_DEFUN([AM_PATH_ALSA], AC_DEFUN([AM_PATH_ALSA],
[dnl Save the original CFLAGS, LDFLAGS, and LIBS [dnl Save the original CFLAGS, LDFLAGS, and LIBS
alsa_save_CFLAGS="$CFLAGS" alsa_save_CFLAGS="$CFLAGS"
@ -23,18 +27,22 @@ dnl
dnl Get the cflags and libraries for alsa dnl Get the cflags and libraries for alsa
dnl dnl
AC_ARG_WITH(alsa-prefix, AC_ARG_WITH(alsa-prefix,
[ --with-alsa-prefix=PFX Prefix where Alsa library is installed(optional)], AS_HELP_STRING([--with-alsa-prefix=PFX], [Prefix where Alsa library is installed(optional)]),
[alsa_prefix="$withval"], [alsa_prefix=""]) [alsa_prefix="$withval"], [alsa_prefix=""])
AC_ARG_WITH(alsa-inc-prefix, AC_ARG_WITH(alsa-inc-prefix,
[ --with-alsa-inc-prefix=PFX Prefix where include libraries are (optional)], AS_HELP_STRING([--with-alsa-inc-prefix=PFX], [Prefix where include libraries are (optional)]),
[alsa_inc_prefix="$withval"], [alsa_inc_prefix=""]) [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, AC_ARG_ENABLE(alsatest,
[ --disable-alsatest Do not try to compile and run a test Alsa program], AS_HELP_STRING([--disable-alsatest], [Do not try to compile and run a test Alsa program]),
[enable_alsatest="$enableval"], [enable_alsatest="$enableval"],
[enable_alsatest=yes]) [enable_alsatest=yes])
dnl Add any special include directories dnl Add any special include directories
AC_MSG_CHECKING(for ALSA CFLAGS) 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. dnl Check for a working version of libasound that is of the right version.
if test "x$enable_alsatest" = "xyes"; then 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="" no_alsa=""
alsa_min_major_version=`echo $min_alsa_version | \ alsa_min_major_version=`echo $min_alsa_version | \
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
@ -69,9 +78,11 @@ no_alsa=""
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
alsa_min_micro_version=`echo $min_alsa_version | \ alsa_min_micro_version=`echo $min_alsa_version | \
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` 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_SAVE
AC_LANG_C 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([ AC_TRY_COMPILE([
#include <alsa/asoundlib.h> #include <alsa/asoundlib.h>
], [ ], [
@ -113,6 +124,30 @@ exit(0);
alsa_found=no] alsa_found=no]
) )
AC_LANG_RESTORE AC_LANG_RESTORE
AC_LANG_SAVE
AC_LANG_C
AC_MSG_CHECKING([for libatopology (sound headers version > 1.1.9)])
AC_TRY_COMPILE([
#include <alsa/asoundlib.h>
], [
/* 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 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. 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.)]) [ifelse([$3], , [AC_MSG_ERROR(No linkable libasound was found.)])
alsa_found=no] 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 fi
if test "x$alsa_found" = "xyes" ; then if test "x$alsa_found" = "xyes" ; then
@ -136,10 +177,18 @@ if test "x$alsa_found" = "xno" ; then
LIBS="$alsa_save_LIBS" LIBS="$alsa_save_LIBS"
ALSA_CFLAGS="" ALSA_CFLAGS=""
ALSA_LIBS="" ALSA_LIBS=""
ALSA_TOPOLOGY_LIBS=""
fi 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: dnl That should be it. Now just export out symbols:
AC_SUBST(ALSA_CFLAGS) AC_SUBST(ALSA_CFLAGS)
AC_SUBST(ALSA_LIBS) AC_SUBST(ALSA_LIBS)
AC_SUBST(ALSA_TOPOLOGY_LIBS)
]) ])