Blame utils/alsa.m4.alsa-git

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