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