diff configure.in @ 939:c7c04f811994

Date: Tue, 01 Jun 2004 15:27:44 +0300 From: Martin_Storsj Subject: Update for dynamic loading of ALSA I sent you a patch a few months ago which enables SDL to load ALSA dynamically. Now I've finally got time to tweak this yet some more. I've added code from alsa.m4 (from alsa's dev package) to acinclude.m4, and made the detection of the alsa library name a bit better. I've also fixed up the loading versioned symbols with dlvsym, so that it falls back to dlsym. I wouldn't say the configure script is complete yet, but this is how far I've come this time, and I'm no expert at those things.
author Sam Lantinga <slouken@libsdl.org>
date Sat, 21 Aug 2004 04:20:00 +0000
parents 84f930aebaeb
children ac488ad4ef1d
line wrap: on
line diff
--- a/configure.in	Sat Aug 21 03:55:12 2004 +0000
+++ b/configure.in	Sat Aug 21 04:20:00 2004 +0000
@@ -282,39 +282,53 @@
 [  --enable-alsa           support the ALSA audio API [default=yes]],
                   , enable_alsa=yes)
     if test x$enable_audio = xyes -a x$enable_alsa = xyes; then
-        AC_MSG_CHECKING(for ALSA audio support)
         have_alsa=no
-        AC_TRY_COMPILE([
-          #include <alsa/asoundlib.h>
-        ],[
-          #if SND_LIB_VERSION < ((0<<16)|(9<<8)|0)
-          #error Your version of ALSA is too old
-          #endif
-          snd_pcm_t *pcm_handle;
-        ],[
-        AC_CHECK_LIB(asound, snd_pcm_open, have_alsa=yes)
-        ])
+        AM_PATH_ALSA(0.9.0, have_alsa=yes)
         if test x$have_alsa = xyes; then
             AC_ARG_ENABLE(alsa-shared,
 [  --enable-alsa-shared     dynamically load ALSA audio support [default=yes]],
                           , enable_alsa_shared=yes)
-            alsa_lib=`ls /usr/lib/libasound.so.* | sed 's/.*\/\(.*\)/\1/; q'`
+            if test "x`echo $ALSA_LIBS | grep -- -L`" = "x"; then
+                if test "x`ls /usr/lib/libasound.so.* 2> /dev/null`" != "x"; then
+                    ALSA_LIBS="-L/usr/lib $ALSA_LIBS"
+                else if test "x`ls /usr/local/lib/libasound.so.* 2> /dev/null`" != "x"; then
+                    ALSA_LIBS="-L/usr/local/lib $ALSA_LIBS"
+                fi; fi
+            fi
+            alsa_lib_spec=`echo $ALSA_LIBS | sed 's/.*-L\([[^ ]]*\).*/\1\/libasound.so.*/'`
+            alsa_lib=`ls $alsa_lib_spec | sed 's/.*\/\(.*\)/\1/; q'`
+            echo "-- $alsa_lib_spec -> $alsa_lib"
+
             if test x$use_dlopen != xyes && \
                test x$enable_alsa_shared = xyes; then
                 AC_MSG_ERROR([You must have dlopen() support and use the --enable-dlopen option])
             fi
             if test x$use_dlopen = xyes && \
                test x$enable_alsa_shared = xyes && test x$alsa_lib != x; then
-                CFLAGS="$CFLAGS -DALSA_SUPPORT -DALSA_DYNAMIC=\$(alsa_lib)"
+                CFLAGS="$CFLAGS -DALSA_SUPPORT -DALSA_DYNAMIC=\$(alsa_lib) $ALSA_CFLAGS"
                 AC_SUBST(alsa_lib)
+
+                AC_MSG_CHECKING(for dlvsym)
+                use_dlvsym=no
+                AC_TRY_COMPILE([
+                  #include <stdio.h>
+                  #define __USE_GNU
+                  #include <dlfcn.h>
+                ],[
+                  dlvsym(NULL,"","");
+                ],[
+                use_dlvsym=yes
+                ])
+                AC_MSG_RESULT($use_dlvsym);
+                if test x$use_dlvsym = xyes; then
+                    CFLAGS="$CFLAGS -DUSE_DLVSYM"
+                fi
             else
-                CFLAGS="$CFLAGS -DALSA_SUPPORT"
-                SYSTEM_LIBS="$SYSTEM_LIBS -lasound"
+                CFLAGS="$CFLAGS -DALSA_SUPPORT $ALSA_CFLAGS"
+                SYSTEM_LIBS="$SYSTEM_LIBS $ALSA_LIBS"
             fi
             AUDIO_SUBDIRS="$AUDIO_SUBDIRS alsa"
             AUDIO_DRIVERS="$AUDIO_DRIVERS alsa/libaudio_alsa.la"
-        else
-            AC_MSG_RESULT($have_alsa)
         fi
     fi
 }