Blame utils/alsa.m4

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