Blame utils/alsa.m4

Packit Service db8eaa
dnl Configure Paths for Alsa
Packit Service db8eaa
dnl Some modifications by Richard Boulton <richard-alsa@tartarus.org>
Packit Service db8eaa
dnl Christopher Lansdown <lansdoct@cs.alfred.edu>
Packit Service db8eaa
dnl Jaroslav Kysela <perex@perex.cz>
Packit Service db8eaa
dnl Last modification: $Id: alsa.m4,v 1.24 2004/09/15 18:48:07 tiwai Exp $
Packit Service db8eaa
dnl
Packit Service db8eaa
dnl AM_PATH_ALSA([MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Packit Service db8eaa
dnl Test for libasound, and define ALSA_CFLAGS, ALSA_LIBS and
Packit Service db8eaa
dnl ALSA_TOPOLOGY_LIBS as appropriate.
Packit Service db8eaa
dnl
Packit Service db8eaa
dnl enables arguments --with-alsa-prefix=
Packit Service db8eaa
dnl                   --with-alsa-inc-prefix=
Packit Service db8eaa
dnl                   --disable-alsatest
Packit Service db8eaa
dnl
Packit Service db8eaa
dnl For backwards compatibility, if ACTION_IF_NOT_FOUND is not specified,
Packit Service db8eaa
dnl and the alsa libraries are not found, a fatal AC_MSG_ERROR() will result.
Packit Service db8eaa
dnl
Packit Service db8eaa
Packit Service db8eaa
AC_DEFUN([AM_PATH_ALSA],
Packit Service db8eaa
[dnl Save the original CFLAGS, LDFLAGS, and LIBS
Packit Service db8eaa
alsa_save_CFLAGS="$CFLAGS"
Packit Service db8eaa
alsa_save_LDFLAGS="$LDFLAGS"
Packit Service db8eaa
alsa_save_LIBS="$LIBS"
Packit Service db8eaa
alsa_found=yes
Packit Service db8eaa
alsa_topology_found=no
Packit Service db8eaa
Packit Service db8eaa
dnl
Packit Service db8eaa
dnl Get the cflags and libraries for alsa
Packit Service db8eaa
dnl
Packit Service db8eaa
AC_ARG_WITH(alsa-prefix,
Packit Service db8eaa
  AS_HELP_STRING([--with-alsa-prefix=PFX], [Prefix where Alsa library is installed(optional)]),
Packit Service db8eaa
  [alsa_prefix="$withval"], [alsa_prefix=""])
Packit Service db8eaa
Packit Service db8eaa
AC_ARG_WITH(alsa-inc-prefix,
Packit Service db8eaa
  AS_HELP_STRING([--with-alsa-inc-prefix=PFX], [Prefix where include libraries are (optional)]),
Packit Service db8eaa
  [alsa_inc_prefix="$withval"], [alsa_inc_prefix=""])
Packit Service db8eaa
Packit Service db8eaa
AC_ARG_ENABLE(alsa-topology,
Packit Service db8eaa
  AS_HELP_STRING([--enable-alsatopology], [Force to use the Alsa topology library]),
Packit Service db8eaa
  [enable_atopology="$enableval"],
Packit Service db8eaa
  [enable_atopology=no])
Packit Service db8eaa
Packit Service db8eaa
AC_ARG_ENABLE(alsatest,
Packit Service db8eaa
  AS_HELP_STRING([--disable-alsatest], [Do not try to compile and run a test Alsa program]),
Packit Service db8eaa
  [enable_alsatest="$enableval"],
Packit Service db8eaa
  [enable_alsatest=yes])
Packit Service db8eaa
Packit Service db8eaa
dnl Add any special include directories
Packit Service db8eaa
AC_MSG_CHECKING(for ALSA CFLAGS)
Packit Service db8eaa
if test "$alsa_inc_prefix" != "" ; then
Packit Service db8eaa
	ALSA_CFLAGS="$ALSA_CFLAGS -I$alsa_inc_prefix"
Packit Service db8eaa
	CFLAGS="$CFLAGS -I$alsa_inc_prefix"
Packit Service db8eaa
fi
Packit Service db8eaa
AC_MSG_RESULT($ALSA_CFLAGS)
Packit Service db8eaa
Packit Service db8eaa
AC_CHECK_LIB(c, dlopen, LIBDL="", [AC_CHECK_LIB(dl, dlopen, LIBDL="-ldl")])
Packit Service db8eaa
Packit Service db8eaa
dnl add any special lib dirs
Packit Service db8eaa
AC_MSG_CHECKING(for ALSA LDFLAGS)
Packit Service db8eaa
if test "$alsa_prefix" != "" ; then
Packit Service db8eaa
	ALSA_LIBS="$ALSA_LIBS -L$alsa_prefix"
Packit Service db8eaa
	LDFLAGS="$LDFLAGS $ALSA_LIBS"
Packit Service db8eaa
fi
Packit Service db8eaa
Packit Service db8eaa
dnl add the alsa library
Packit Service db8eaa
ALSA_LIBS="$ALSA_LIBS -lasound -lm $LIBDL -lpthread"
Packit Service db8eaa
LIBS="$ALSA_LIBS $LIBS"
Packit Service db8eaa
AC_MSG_RESULT($ALSA_LIBS)
Packit Service db8eaa
Packit Service db8eaa
dnl Check for a working version of libasound that is of the right version.
Packit Service db8eaa
if test "x$enable_alsatest" = "xyes"; then
Packit Service db8eaa
Packit Service db8eaa
AC_MSG_CHECKING([required libasound headers version])
Packit Service db8eaa
min_alsa_version=ifelse([$1], , 0.1.1, $1)
Packit Service db8eaa
no_alsa=""
Packit Service db8eaa
    alsa_min_major_version=`echo $min_alsa_version | \
Packit Service db8eaa
           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
Packit Service db8eaa
    alsa_min_minor_version=`echo $min_alsa_version | \
Packit Service db8eaa
           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
Packit Service db8eaa
    alsa_min_micro_version=`echo $min_alsa_version | \
Packit Service db8eaa
           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
Packit Service db8eaa
AC_MSG_RESULT($alsa_min_major_version.$alsa_min_minor_version.$alsa_min_micro_version)
Packit Service db8eaa
Packit Service db8eaa
AC_LANG_SAVE
Packit Service db8eaa
AC_LANG_C
Packit Service db8eaa
AC_MSG_CHECKING([for libasound headers version >= $alsa_min_major_version.$alsa_min_minor_version.$alsa_min_micro_version ($min_alsa_version)])
Packit Service db8eaa
AC_TRY_COMPILE([
Packit Service db8eaa
#include <alsa/asoundlib.h>
Packit Service db8eaa
], [
Packit Service db8eaa
/* ensure backward compatibility */
Packit Service db8eaa
#if !defined(SND_LIB_MAJOR) && defined(SOUNDLIB_VERSION_MAJOR)
Packit Service db8eaa
#define SND_LIB_MAJOR SOUNDLIB_VERSION_MAJOR
Packit Service db8eaa
#endif
Packit Service db8eaa
#if !defined(SND_LIB_MINOR) && defined(SOUNDLIB_VERSION_MINOR)
Packit Service db8eaa
#define SND_LIB_MINOR SOUNDLIB_VERSION_MINOR
Packit Service db8eaa
#endif
Packit Service db8eaa
#if !defined(SND_LIB_SUBMINOR) && defined(SOUNDLIB_VERSION_SUBMINOR)
Packit Service db8eaa
#define SND_LIB_SUBMINOR SOUNDLIB_VERSION_SUBMINOR
Packit Service db8eaa
#endif
Packit Service db8eaa
Packit Service db8eaa
#  if(SND_LIB_MAJOR > $alsa_min_major_version)
Packit Service db8eaa
  exit(0);
Packit Service db8eaa
#  else
Packit Service db8eaa
#    if(SND_LIB_MAJOR < $alsa_min_major_version)
Packit Service db8eaa
#       error not present
Packit Service db8eaa
#    endif
Packit Service db8eaa
Packit Service db8eaa
#   if(SND_LIB_MINOR > $alsa_min_minor_version)
Packit Service db8eaa
  exit(0);
Packit Service db8eaa
#   else
Packit Service db8eaa
#     if(SND_LIB_MINOR < $alsa_min_minor_version)
Packit Service db8eaa
#          error not present
Packit Service db8eaa
#      endif
Packit Service db8eaa
Packit Service db8eaa
#      if(SND_LIB_SUBMINOR < $alsa_min_micro_version)
Packit Service db8eaa
#        error not present
Packit Service db8eaa
#      endif
Packit Service db8eaa
#    endif
Packit Service db8eaa
#  endif
Packit Service db8eaa
exit(0);
Packit Service db8eaa
],
Packit Service db8eaa
  [AC_MSG_RESULT(found.)],
Packit Service db8eaa
  [AC_MSG_RESULT(not present.)
Packit Service db8eaa
   ifelse([$3], , [AC_MSG_ERROR(Sufficiently new version of libasound not found.)])
Packit Service db8eaa
   alsa_found=no]
Packit Service db8eaa
)
Packit Service db8eaa
AC_LANG_RESTORE
Packit Service db8eaa
Packit Service db8eaa
AC_LANG_SAVE
Packit Service db8eaa
AC_LANG_C
Packit Service db8eaa
AC_MSG_CHECKING([for libatopology (sound headers version > 1.1.9)])
Packit Service db8eaa
AC_TRY_COMPILE([
Packit Service db8eaa
#include <alsa/asoundlib.h>
Packit Service db8eaa
#include <alsa/topology.h>
Packit Service db8eaa
], [
Packit Service db8eaa
/* ensure backward compatibility */
Packit Service db8eaa
#if !defined(SND_LIB_VERSION)
Packit Service db8eaa
#define SND_LIB_VERSION 0
Packit Service db8eaa
#endif
Packit Service db8eaa
#if SND_LIB_VERSION > 0x00010109
Packit Service db8eaa
  exit(0);
Packit Service db8eaa
#else
Packit Service db8eaa
# error not present
Packit Service db8eaa
#endif
Packit Service db8eaa
exit(0);
Packit Service db8eaa
],
Packit Service db8eaa
  [AC_MSG_RESULT(yes)
Packit Service db8eaa
   enable_atopology="yes"],
Packit Service db8eaa
  [AC_MSG_RESULT(no)]
Packit Service db8eaa
)
Packit Service db8eaa
AC_LANG_RESTORE
Packit Service db8eaa
Packit Service db8eaa
fi
Packit Service db8eaa
Packit Service db8eaa
dnl Now that we know that we have the right version, let's see if we have the library and not just the headers.
Packit Service db8eaa
if test "x$enable_alsatest" = "xyes"; then
Packit Service db8eaa
AC_CHECK_LIB([asound], [snd_ctl_open],,
Packit Service db8eaa
	[ifelse([$3], , [AC_MSG_ERROR(No linkable libasound was found.)])
Packit Service db8eaa
	 alsa_found=no]
Packit Service db8eaa
)
Packit Service db8eaa
if test "x$enable_atopology" = "xyes"; then
Packit Service db8eaa
alsa_topology_found=yes
Packit Service db8eaa
alsa_save_LIBS2="$LIBS"
Packit Service db8eaa
AC_CHECK_LIB([atopology], [snd_tplg_new],,
Packit Service db8eaa
	[ifelse([$3], , [AC_MSG_ERROR(No linkable libatopology was found.)])
Packit Service db8eaa
	 alsa_topology_found=no,
Packit Service db8eaa
]
Packit Service db8eaa
)
Packit Service db8eaa
LIBS="$alsa_save_LIBS2"
Packit Service db8eaa
fi
Packit Service db8eaa
else
Packit Service db8eaa
if test "x$enable_atopology" = "xyes"; then
Packit Service db8eaa
  alsa_topology_found=yes
Packit Service db8eaa
fi
Packit Service db8eaa
fi
Packit Service db8eaa
Packit Service db8eaa
if test "x$alsa_found" = "xyes" ; then
Packit Service db8eaa
   ifelse([$2], , :, [$2])
Packit Service db8eaa
   LIBS=`echo $LIBS | sed 's/-lasound//g'`
Packit Service db8eaa
   LIBS=`echo $LIBS | sed 's/  //'`
Packit Service db8eaa
   LIBS="-lasound $LIBS"
Packit Service db8eaa
fi
Packit Service db8eaa
if test "x$alsa_found" = "xno" ; then
Packit Service db8eaa
   ifelse([$3], , :, [$3])
Packit Service db8eaa
   CFLAGS="$alsa_save_CFLAGS"
Packit Service db8eaa
   LDFLAGS="$alsa_save_LDFLAGS"
Packit Service db8eaa
   LIBS="$alsa_save_LIBS"
Packit Service db8eaa
   ALSA_CFLAGS=""
Packit Service db8eaa
   ALSA_LIBS=""
Packit Service db8eaa
   ALSA_TOPOLOGY_LIBS=""
Packit Service db8eaa
fi
Packit Service db8eaa
Packit Service db8eaa
dnl add the alsa topology library; must be at the end
Packit Service db8eaa
AC_MSG_CHECKING(for ALSA topology LDFLAGS)
Packit Service db8eaa
if test "x$alsa_topology_found" = "xyes"; then
Packit Service db8eaa
  ALSA_TOPOLOGY_LIBS="$ALSA_TOPOLOGY_LIBS -latopology"
Packit Service db8eaa
fi
Packit Service db8eaa
AC_MSG_RESULT($ALSA_TOPOLOGY_LIBS)
Packit Service db8eaa
Packit Service db8eaa
dnl That should be it.  Now just export out symbols:
Packit Service db8eaa
AC_SUBST(ALSA_CFLAGS)
Packit Service db8eaa
AC_SUBST(ALSA_LIBS)
Packit Service db8eaa
AC_SUBST(ALSA_TOPOLOGY_LIBS)
Packit Service db8eaa
])