Selaa lähdekoodia

sunaudio: don't compile in the sun audio backend if sys/audioio.h is missing.

Newer Solaris-based releases, like OpenIndiana, don't include this, using
Open Sound System, or something layered over OSS like PulseAudio, instead.

Fixes #13405.
(cherry picked from commit cf1eb95fb1b761cd0c5b544fc9ae7472542b559d)
Ryan C. Gordon 1 kuukausi sitten
vanhempi
commit
c438953aa2
3 muutettua tiedostoa jossa 29 lisäystä ja 11 poistoa
  1. 8 4
      CMakeLists.txt
  2. 13 3
      configure
  3. 8 4
      configure.ac

+ 8 - 4
CMakeLists.txt

@@ -1470,10 +1470,14 @@ elseif(EMSCRIPTEN)
 elseif(UNIX AND NOT APPLE AND NOT RISCOS AND NOT HAIKU)
   if(SDL_AUDIO)
     if(SYSV5 OR SOLARIS OR HPUX)
-        set(SDL_AUDIO_DRIVER_SUNAUDIO 1)
-        file(GLOB SUN_AUDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/sun/*.c)
-        list(APPEND SOURCE_FILES ${SUN_AUDIO_SOURCES})
-        set(HAVE_SDL_AUDIO TRUE)
+        # Newer Solaris-based systems, like OpenIndiana, don't have this interface anymore. Check for the header first.
+        check_include_file(sys/audioio HAVE_SYS_AUDIOIO_H)
+        if(HAVE_SYS_AUDIOIO_H)
+            set(SDL_AUDIO_DRIVER_SUNAUDIO 1)
+            file(GLOB SUN_AUDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/sun/*.c)
+            list(APPEND SOURCE_FILES ${SUN_AUDIO_SOURCES})
+            set(HAVE_SDL_AUDIO TRUE)
+        endif()
     elseif(NETBSD)
         set(SDL_AUDIO_DRIVER_NETBSD 1)
         file(GLOB NETBSD_AUDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/netbsd/*.c)

+ 13 - 3
configure

@@ -28741,12 +28741,22 @@ printf "%s\n" "#define SDL_VIDEO_DRIVER_ANDROID 1" >>confdefs.h
         if test x$enable_audio = xyes; then
           case $ARCH in
             sysv5|solaris|hpux)
+                                ac_fn_c_check_header_compile "$LINENO" "audio/audiolib.h" "ac_cv_header_audio_audiolib_h" "$ac_includes_default"
+if test "x$ac_cv_header_audio_audiolib_h" = xyes
+then :
+  have_sys_audiolib=yes
+else $as_nop
+  have_sys_audiolib=no
+fi
+
+                if test x$have_sys_audiolib = xyes; then
 
 printf "%s\n" "#define SDL_AUDIO_DRIVER_SUNAUDIO 1" >>confdefs.h
 
-                SOURCES="$SOURCES $srcdir/src/audio/sun/*.c"
-                SUMMARY_audio="${SUMMARY_audio} sun"
-                have_audio=yes
+                    SOURCES="$SOURCES $srcdir/src/audio/sun/*.c"
+                    SUMMARY_audio="${SUMMARY_audio} sun"
+                    have_audio=yes
+                fi
             ;;
             netbsd)  # Don't use this on OpenBSD, it's busted.
 

+ 8 - 4
configure.ac

@@ -3869,10 +3869,14 @@ case "$host" in
         if test x$enable_audio = xyes; then
           case $ARCH in
             sysv5|solaris|hpux)
-                AC_DEFINE(SDL_AUDIO_DRIVER_SUNAUDIO, 1, [ ])
-                SOURCES="$SOURCES $srcdir/src/audio/sun/*.c"
-                SUMMARY_audio="${SUMMARY_audio} sun"
-                have_audio=yes
+                dnl Newer Solaris-based systems, like OpenIndiana, don't have this interface anymore. Check for the header first.
+                AC_CHECK_HEADER(audio/audiolib.h,have_sys_audiolib=yes,have_sys_audiolib=no)
+                if test x$have_sys_audiolib = xyes; then
+                    AC_DEFINE(SDL_AUDIO_DRIVER_SUNAUDIO, 1, [ ])
+                    SOURCES="$SOURCES $srcdir/src/audio/sun/*.c"
+                    SUMMARY_audio="${SUMMARY_audio} sun"
+                    have_audio=yes
+                fi
             ;;
             netbsd)  # Don't use this on OpenBSD, it's busted.
                 AC_DEFINE(SDL_AUDIO_DRIVER_NETBSD, 1, [ ])