chiark / gitweb /
Check whether libao has a working plugin interface and don't build the
authorRichard Kettlewell <richard@deodand>
Sun, 11 Apr 2010 10:10:19 +0000 (11:10 +0100)
committerRichard Kettlewell <richard@deodand>
Sun, 11 Apr 2010 10:10:19 +0000 (11:10 +0100)
ao plugin if it does not.

CHANGES.html
README
configure.ac
driver/disorder.c

index 51cf92b59fdda7e9cc34dec0c1684a25dfe0e7ae..aa04fd9a6db573b19e1d1e484d50f61fc46caf4f 100644 (file)
@@ -96,6 +96,9 @@ span.command {
       <a href="http://sox.sourceforge.net/">SoX</a>.  SoX support will be
       removed in a future version.</p>
 
+      <p>The libao plugin is not built if you have libao 1.0.0 (because the
+      plugin API is broken in that version).</p>
+
       <p>Playlists are now supported.  These allow a collection of tracks to be
       prepared offline and played as a unit.</p>
 
diff --git a/README b/README
index 4c567ba1ab16a765f57f0a2c60bcb8d088413809..900cf8257265a5770872a1476ffdb0da628fd0fc 100644 (file)
--- a/README
+++ b/README
@@ -31,7 +31,7 @@ Build dependencies:
   libpcre          6.7         need UTF-8 support
   libmad           0.15.1b
   libgcrypt        1.2.3
-  libao            0.8.6
+  libao            0.8.6       1.0.0 is broken
   libasound        1.0.13
   libFLAC          1.1.2
   libsamplerate    0.1.4       currently optional
index c72e59d26f279b1885399880ef8ffa6b6179a7a0..344b050af743c60b03f6202aba9709a160a94dd2 100644 (file)
@@ -338,7 +338,10 @@ fi
 subdirs="${subdirs} clients doc examples debian"
 
 if test $want_server = yes; then
-  subdirs="${subdirs} server plugins driver sounds"
+  subdirs="${subdirs} server plugins sounds"
+  if test "$rjk_cv_libao_plugin_api_works" = yes; then
+    subdirs="${subdirs} driver"
+  fi
 fi
 if test $want_cgi = yes; then
   subdirs="${subdirs} cgi templates images"
@@ -465,6 +468,19 @@ if test $want_server = yes; then
   AC_CHECK_LIB([FLAC], [FLAC__stream_decoder_new],
               [AC_SUBST(LIBFLAC,[-lFLAC])],
               [missing_libraries="$missing_libraries libFLAC"])
+  if test $ac_cv_lib_ao_ao_initialize = yes; then
+    # libao 1.0.0 breaks the plugin interface
+    AC_CACHE_CHECK([whether libao has a working plugin interface],
+                   [rjk_cv_libao_plugin_api_works],[
+      AC_COMPILE_IFELSE([#include <ao/ao.h>
+#include <ao/plugin.h>
+
+void ao_plugin_device_init(ao_device *d) {
+  d->internal = 0;
+}],[rjk_cv_libao_plugin_api_works=yes],[rjk_cv_libao_plugin_api_works=no])])
+  else
+    rjk_cv_libao_plugin_api_works=no
+  fi
 fi
 AC_CHECK_LIB([pthread], [pthread_create],
              [AC_SUBST(LIBPTHREAD,[-lpthread])],
index e6b65752f3fb7eef2189b98abad25d4843990e66..143b043aa401b9d71f31af96fd31a0676f10eab6 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * This file is part of DisOrder.
- * Copyright (C) 2005, 2007 Richard Kettlewell
+ * Copyright (C) 2005, 2007, 2010 Richard Kettlewell
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -20,6 +20,9 @@
  *
  * The output from this driver is expected to be fed to @c
  * disorder-normalize to convert to the confnigured target format.
+ *
+ * @attention This driver will not build with libao 1.0.0.  libao has
+ * taken away half the plugin API and not provided any replacement.
  */
 
 #include "common.h"