chiark / gitweb /
configure.ac, server/Makefile.am: Refactor GStreamer autoconfery.
authorMark Wooding <mdw@distorted.org.uk>
Sun, 26 Nov 2017 20:25:59 +0000 (20:25 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Wed, 29 Nov 2017 11:47:21 +0000 (11:47 +0000)
  * Introduce `--with-gstreamer=VERSIONS' configure option, which
    searches for the (space-separated) VERSIONS in order.

  * Pick up the `gstapp' and `gstaudio' libraries from `pkg-config'
    rather than probing randomly at `gstreamer-plugins-base-0.10' and
    hoping for the best.

  * Define a preprocessor symbol explaining which version we found.

configure.ac
server/Makefile.am

index 0778fc9..6653f4e 100644 (file)
@@ -41,6 +41,7 @@ want_alsa=yes
 want_oss=yes
 want_coreaudio=yes
 want_pulseaudio=yes
+want_gstreamer=yes
 
 # By default we don't want gtk-osx.  But if you ask for --with-gtk-osx...
 #
@@ -101,6 +102,9 @@ AC_ARG_WITH([gtk-osx],
            [AS_HELP_STRING([--with-gtk-osx],
                            [use native GTK+ (OS X only)])],
            [want_gtkosx=$withval])
+AC_ARG_WITH([gstreamer],
+            [AS_HELP_STRING([--with-gstreamer], [select GStreamer version])],
+            [want_gstreamer=$withval])
 
 AC_MSG_CHECKING([for a known target platform])
 case "$host" in
@@ -439,33 +443,48 @@ AC_SUBST([finkdir])
 AC_SUBST([finkbindir])
 
 # Checks for packages.
-case $want_gstdecode in
-  yes | whatever)
-    PKG_CHECK_MODULES([GSTREAMER], [gstreamer-0.10],
-        [have_gstreamer=yes], [have_gstreamer=no])
-    PKG_CHECK_MODULES([GSTREAMER_PLUGINS_BASE],
-        [gstreamer-plugins-base-0.10],
-        [have_gst_plugins_base=yes], [have_gst_plugins_base=no])
-    ;;
+case $want_gstdecode,$want_gstreamer in
+  yes,no) AC_MSG_ERROR([gstdecode requires GStreamer]) ;;
+  whatever,no) want_gstdecode=no ;;
+  no,*) want_gstreamer=no ;;
+  *,yes) want_gstreamer="0.10" ;;
 esac
+
+AH_TEMPLATE([HAVE_GSTREAMER_0_10],
+    [Define if building against GStreamer 0.10])
+
+for i in $want_gstreamer; do
+  case $i in
+    0.10) v=0.10 V=0_10 ;;
+    1.0) v=1.0 V=1_0 ;;
+    *) AC_MSG_ERROR([unrecognized GStreamer version]) ;;
+  esac
+  PKG_CHECK_MODULES([GSTREAMER],
+      [gstreamer-$v gstreamer-app-$v gstreamer-audio-$v],
+      [have_gstreamer=$v], [have_gstreamer=no])
+  case $have_gstreamer in no) continue ;; esac
+  AC_DEFINE_UNQUOTED([HAVE_GSTREAMER_$V], [1])
+  break
+done
+
 case $want_gstdecode,$have_gstreamer,$have_gst_plugins_base in
-  whatever,yes,yes | yes,yes,yes) want_gstdecode=yes ;;
-  whatever,*) want_gstdecode=no ;;
-  yes,*)
+  whatever,no,* | whatever,*,no)
+    want_gstdecode=no
+    ;;
+  yes,no,* | yes,*,no)
     case $have_gstreamer in
-      no) missing_libraries="$missing_libraries gstreamer-0.10" ;;
-    esac
-    case $have_gst_plugins_base in
-      no) missing_libraries="$missing_libraries gstreamer-plugins-base-0.10" ;;
+      no) missing_libraries="$missing_libraries gstreamer" ;;
     esac
+    ;;
+  *)
+    want_gstdecode=yes
+    ;;
 esac
 
 mdw_SAVE_CFLAGS=$CFLAGS
 mdw_SAVE_LIBS=$LIBS
-CFLAGS="$CFLAGS $GSTREAMER_CFLAGS $GSTREAMER_PLUGINS_BASE_CFLAGS"
-LIBS="$LIBS \
-        $GSTREAMER_LIBS $GSTREAMER_PLUGINS_BASE_LIBS
-        -lgstaudio-0.10 -lgstapp-0.10"
+CFLAGS="$CFLAGS $GSTREAMER_CFLAGS"
+LIBS="$LIBS $GSTREAMER_LIBS"
 AC_CHECK_FUNCS([gst_audio_info_from_caps])
 CFLAGS=$mdw_SAVE_CFLAGS
 LIBS=$mdw_SAVE_LIBS
index d274e7d..c1cd6c4 100644 (file)
@@ -62,7 +62,7 @@ AM_CFLAGS+=$(GSTREAMER_CFLAGS)
 sbin_PROGRAMS+=disorder-gstdecode
 disorder_gstdecode_SOURCES=gstdecode.c disorder-server.h
 disorder_gstdecode_LDADD=$(LIBOBJS) ../lib/libdisorder.a \
-       $(GSTREAMER_PLUGINS_BASE_LIBS) -lgstaudio-0.10 -lgstapp-0.10 \
+       $(GSTREAMER_PLUGINS_BASE_LIBS) \
        $(GSTREAMER_LIBS) $(LIBGCRYPT) $(LIBPCRE)
 disorder_gstdecode_DEPENDENCIES=../lib/libdisorder.a
 endif