SDL_mixer: Use pkg-config to detect fluidsynth, tremor, libvorbis, FLAC and libmpg123 (dbdde)

From dbddebd27972aba744db26d09ba313ac25d7048a Mon Sep 17 00:00:00 2001
From: Cameron Cawley <[EMAIL REDACTED]>
Date: Tue, 11 Jan 2022 23:18:12 +0000
Subject: [PATCH] Use pkg-config to detect fluidsynth, tremor, libvorbis, FLAC
 and libmpg123

---
 configure.ac | 65 ++++++++++++++++++++++++++++++++++++----------------
 1 file changed, 45 insertions(+), 20 deletions(-)

diff --git a/configure.ac b/configure.ac
index 93d5db05..5583acc5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -380,8 +380,13 @@ if test x$enable_music_midi = xyes; then
 [AS_HELP_STRING([--enable-music-fluidsynth-shared], [dynamically load FluidSynth support [default=yes]])],
                   [], [enable_music_fluidsynth_shared=yes])
     if test x$enable_music_fluidsynth_midi = xyes; then
-        AC_CHECK_HEADER([fluidsynth.h], [have_fluidsynth_hdr=yes])
-        AC_CHECK_LIB([fluidsynth], [fluid_player_add_mem], [have_fluidsynth_lib=yes])
+        PKG_CHECK_MODULES([FLUIDSYNTH], [fluidsynth], [dnl
+                have_fluidsynth_hdr=yes
+                have_fluidsynth_lib=yes
+            ], [dnl
+                AC_CHECK_HEADER([fluidsynth.h], [have_fluidsynth_hdr=yes])
+                AC_CHECK_LIB([fluidsynth], [fluid_player_add_mem], [have_fluidsynth_lib=yes;FLUIDSYNTH_LIBS="-lfluidsynth"])
+            ])
         if test x$have_fluidsynth_hdr = xyes -a x$have_fluidsynth_lib = xyes; then
             case "$host" in
                 *-*-darwin*)
@@ -401,12 +406,12 @@ if test x$enable_music_midi = xyes; then
                     ;;
             esac
             SOURCES="$SOURCES $srcdir/dynamic_fluidsynth.c $srcdir/music_fluidsynth.c"
-            EXTRA_CFLAGS="$EXTRA_CFLAGS -DUSE_FLUIDSYNTH_MIDI"
+            EXTRA_CFLAGS="$EXTRA_CFLAGS -DUSE_FLUIDSYNTH_MIDI $FLUIDSYNTH_CFLAGS"
             if test x$enable_music_fluidsynth_shared = xyes && test x$fluidsynth_lib != x; then
                 echo "-- dynamic libfluidsyth -> $fluidsynth_lib"
                 EXTRA_CFLAGS="$EXTRA_CFLAGS -DFLUIDSYNTH_DYNAMIC=\\\"$fluidsynth_lib\\\""
             else
-                EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lfluidsynth"
+                EXTRA_LDFLAGS="$EXTRA_LDFLAGS $FLUIDSYNTH_LIBS"
             fi
         else
             AC_MSG_WARN([*** Unable to find FluidSynth library (http://www.fluidsynth.org/)])
@@ -427,8 +432,13 @@ AC_ARG_ENABLE([music-ogg-shared],
 if test x$enable_music_ogg = xyes; then
     LIBS_SAVED="$LIBS"
     if test x$enable_music_ogg_tremor = xyes; then
-        AC_CHECK_HEADER([tremor/ivorbisfile.h], [have_tremor_hdr=yes])
-        AC_CHECK_LIB([vorbisidec], [ov_open_callbacks], [have_tremor_lib=yes], [], [-logg])
+        PKG_CHECK_MODULES([TREMOR], [vorbisidec], [dnl
+                have_tremor_hdr=yes
+                have_tremor_lib=yes
+            ], [dnl
+                AC_CHECK_HEADER([tremor/ivorbisfile.h], [have_tremor_hdr=yes])
+                AC_CHECK_LIB([vorbisidec], [ov_open_callbacks], [have_tremor_lib=yes;TREMOR_LIBS="-lvorbisidec -logg"], [], [-logg])
+            ])
         if test x$have_tremor_hdr = xyes -a x$have_tremor_lib = xyes; then
             case "$host" in
                 *-*-darwin*)
@@ -448,20 +458,25 @@ if test x$enable_music_ogg = xyes; then
                     ;;
             esac
             SOURCES="$SOURCES $srcdir/*_ogg.c"
-            EXTRA_CFLAGS="$EXTRA_CFLAGS -DOGG_MUSIC -DOGG_USE_TREMOR"
+            EXTRA_CFLAGS="$EXTRA_CFLAGS -DOGG_MUSIC -DOGG_USE_TREMOR $TREMOR_CFLAGS"
             if test x$enable_music_ogg_shared = xyes && test x$ogg_lib != x; then
                 echo "-- dynamic libvorbisidec -> $ogg_lib"
                 EXTRA_CFLAGS="$EXTRA_CFLAGS -DOGG_DYNAMIC=\\\"$ogg_lib\\\""
             else
-                EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lvorbisidec"
+                EXTRA_LDFLAGS="$EXTRA_LDFLAGS $TREMOR_LIBS"
             fi
         else
             AC_MSG_WARN([*** Unable to find Ogg Vorbis Tremor library (http://www.xiph.org/)])
             AC_MSG_WARN([Ogg Vorbis support disabled])
         fi
     else
-        AC_CHECK_HEADER([vorbis/vorbisfile.h], [have_ogg_hdr=yes])
-        AC_CHECK_LIB([vorbisfile], [ov_open_callbacks], [have_ogg_lib=yes], [], [-lvorbis -logg -lm])
+        PKG_CHECK_MODULES([VORBIS], [vorbisfile], [dnl
+                have_ogg_hdr=yes
+                have_ogg_lib=yes
+            ], [dnl
+                AC_CHECK_HEADER([vorbis/vorbisfile.h], [have_ogg_hdr=yes])
+                AC_CHECK_LIB([vorbisfile], [ov_open_callbacks], [have_ogg_lib=yes;VORBIS_LIBS="-lvorbisfile -lvorbis -logg -lm"], [], [-lvorbis -logg -lm])
+            ])
         if test x$have_ogg_hdr = xyes -a x$have_ogg_lib = xyes; then
             case "$host" in
                 *-*-darwin*)
@@ -478,12 +493,12 @@ if test x$enable_music_ogg = xyes; then
                     ;;
             esac
             SOURCES="$SOURCES $srcdir/*_ogg.c"
-            EXTRA_CFLAGS="$EXTRA_CFLAGS -DOGG_MUSIC"
+            EXTRA_CFLAGS="$EXTRA_CFLAGS -DOGG_MUSIC $VORBIS_CFLAGS"
             if test x$enable_music_ogg_shared = xyes && test x$ogg_lib != x; then
                 echo "-- dynamic libvorbisfile -> $ogg_lib"
                 EXTRA_CFLAGS="$EXTRA_CFLAGS -DOGG_DYNAMIC=\\\"$ogg_lib\\\""
             else
-                EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lvorbisfile -lvorbis -logg -lm"
+                EXTRA_LDFLAGS="$EXTRA_LDFLAGS $VORBIS_LIBS"
             fi
         else
             AC_MSG_WARN([*** Unable to find Ogg Vorbis library (http://www.xiph.org/)])
@@ -521,8 +536,13 @@ if test x$enable_music_flac = xyes; then
     fi
 
     if test x$have_flac_ver = xyes; then
-        AC_CHECK_HEADER([FLAC/stream_decoder.h], [have_flac_hdr=yes])
-        AC_CHECK_LIB([FLAC], [FLAC__stream_decoder_new], [have_flac_lib=yes])
+        PKG_CHECK_MODULES([FLAC], [flac], [dnl
+                have_flac_hdr=yes
+                have_flac_lib=yes
+            ], [dnl
+                AC_CHECK_HEADER([FLAC/stream_decoder.h], [have_flac_hdr=yes])
+                AC_CHECK_LIB([FLAC], [FLAC__stream_decoder_new], [have_flac_lib=yes;FLAC_LIBS="-lFLAC"])
+            ])
         if test x$have_flac_hdr = xyes -a x$have_flac_lib = xyes; then    
             case "$host" in
                 *-*-darwin*)
@@ -539,12 +559,12 @@ if test x$enable_music_flac = xyes; then
                     ;;
             esac
             SOURCES="$SOURCES $srcdir/*_flac.c"
-            EXTRA_CFLAGS="$EXTRA_CFLAGS -DFLAC_MUSIC"
+            EXTRA_CFLAGS="$EXTRA_CFLAGS -DFLAC_MUSIC $FLAC_CFLAGS"
             if test x$enable_music_flac_shared = xyes && test x$flac_lib != x; then
                 echo "-- dynamic libFLAC -> $flac_lib"
                 EXTRA_CFLAGS="$EXTRA_CFLAGS -DFLAC_DYNAMIC=\\\"$flac_lib\\\""
             else
-                EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lFLAC"
+                EXTRA_LDFLAGS="$EXTRA_LDFLAGS $FLAC_LIBS"
             fi
         fi
     else
@@ -564,8 +584,13 @@ AC_ARG_ENABLE([music-mp3-shared],
               [], [enable_music_mp3_shared=yes])
 have_mpg123=no
 if test x$enable_music_mp3 = xyes; then
-    AC_CHECK_HEADER([mpg123.h], [have_mpg123_hdr=yes])
-    AC_CHECK_LIB([mpg123], [mpg123_replace_reader_handle], [have_mpg123_lib=yes])
+    PKG_CHECK_MODULES([MPG123], [libmpg123], [dnl
+            have_mpg123_hdr=yes
+            have_mpg123_lib=yes
+        ], [dnl
+            AC_CHECK_HEADER([mpg123.h], [have_mpg123_hdr=yes])
+            AC_CHECK_LIB([mpg123], [mpg123_replace_reader_handle], [have_mpg123_lib=yes;MPG123_LIBS="-lmpg123"])
+        ])
     if test x$have_mpg123_hdr = xyes -a x$have_mpg123_lib = xyes; then
         have_mpg123=yes
         case "$host" in
@@ -580,12 +605,12 @@ if test x$enable_music_mp3 = xyes; then
                 ;;
         esac
         SOURCES="$SOURCES $srcdir/*_mp3.c $srcdir/*_mpg.c"
-        EXTRA_CFLAGS="$EXTRA_CFLAGS -DMP3_MUSIC"
+        EXTRA_CFLAGS="$EXTRA_CFLAGS -DMP3_MUSIC $MPG123_CFLAGS"
         if test x$enable_music_mp3_shared = xyes && test x$mpg123_lib != x; then
             echo "-- dynamic libmpg123 -> $mpg123_lib"
             EXTRA_CFLAGS="$EXTRA_CFLAGS -DMPG123_DYNAMIC=\\\"$mpg123_lib\\\""
         else
-            EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lmpg123"
+            EXTRA_LDFLAGS="$EXTRA_LDFLAGS $MPG123_LIBS"
         fi
     else
         AC_MSG_WARN([*** Unable to find mpg123 library (https://www.mpg123.de)])