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

From ccdadf251a2b4bd4be008dd8c8f21ed7ed95dc9d Mon Sep 17 00:00:00 2001
From: Cameron Cawley <[EMAIL REDACTED]>
Date: Tue, 11 Jan 2022 22:10:02 +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 215574b5..96a3b196 100644
--- a/configure.ac
+++ b/configure.ac
@@ -466,8 +466,13 @@ if test x$enable_music_midi = xyes; then
 [AS_HELP_STRING([--enable-music-midi-fluidsynth-shared], [dynamically load FluidSynth library [default=yes]])],
                   [], [enable_music_midi_fluidsynth_shared=yes])
     if test x$enable_music_midi_fluidsynth = 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
             have_fluidsynth=yes
             case "$host" in
@@ -487,12 +492,12 @@ if test x$enable_music_midi = xyes; then
                     fi
                     ;;
             esac
-            EXTRA_CFLAGS="$EXTRA_CFLAGS -DMUSIC_MID_FLUIDSYNTH"
+            EXTRA_CFLAGS="$EXTRA_CFLAGS -DMUSIC_MID_FLUIDSYNTH $FLUIDSYNTH_CFLAGS"
             if test x$enable_music_midi_fluidsynth_shared = xyes && test x$fluidsynth_lib != x; then
                 echo "-- dynamic libfluidsynth -> $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/)])
@@ -519,8 +524,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*)
@@ -539,20 +549,25 @@ if test x$enable_music_ogg = xyes; then
                     fi
                     ;;
             esac
-            EXTRA_CFLAGS="$EXTRA_CFLAGS -DMUSIC_OGG -DOGG_USE_TREMOR"
+            EXTRA_CFLAGS="$EXTRA_CFLAGS -DMUSIC_OGG -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*)
@@ -568,12 +583,12 @@ if test x$enable_music_ogg = xyes; then
                     fi
                     ;;
             esac
-            EXTRA_CFLAGS="$EXTRA_CFLAGS -DMUSIC_OGG"
+            EXTRA_CFLAGS="$EXTRA_CFLAGS -DMUSIC_OGG $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"
+                EXTRA_LDFLAGS="$EXTRA_LDFLAGS $VORBIS_LIBS"
             fi
         else
             AC_MSG_WARN([*** Unable to find Ogg Vorbis library (http://www.xiph.org/)])
@@ -611,8 +626,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*)
@@ -628,12 +648,12 @@ if test x$enable_music_flac = xyes; then
                     fi
                     ;;
             esac
-            EXTRA_CFLAGS="$EXTRA_CFLAGS -DMUSIC_FLAC"
+            EXTRA_CFLAGS="$EXTRA_CFLAGS -DMUSIC_FLAC $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
@@ -678,8 +698,13 @@ AC_ARG_ENABLE([music-mp3-mpg123-shared],
 [AS_HELP_STRING([--enable-music-mp3-mpg123-shared], [dynamically load libmpg123 library [default=yes]])],
               [], [enable_music_mp3_mpg123_shared=yes])
 if test x$enable_music_mp3_mpg123 = 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_libmpg123=yes
         case "$host" in
@@ -693,12 +718,12 @@ if test x$enable_music_mp3_mpg123 = xyes; then
                 mpg123_lib=[`find_lib "libmpg123.so.*"`]
                 ;;
         esac
-        EXTRA_CFLAGS="$EXTRA_CFLAGS -DMUSIC_MP3_MPG123"
+        EXTRA_CFLAGS="$EXTRA_CFLAGS -DMUSIC_MP3_MPG123 $MPG123_CFLAGS"
         if test x$enable_music_mp3_mpg123_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)])