X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/f243316a251fbd59a1f4e93c71d290e11faad3fb..8d2f469d99914d5ff20d815a2e6e1ab9523ea135:/configure.ac
diff --git a/configure.ac b/configure.ac
index eb49d6a..1491c67 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,7 +1,7 @@
# Process this file with autoconf to produce a configure script.
#
# This file is part of DisOrder.
-# Copyright (C) 2004-2009 Richard Kettlewell
+# Copyright (C) 2004-2014 Richard Kettlewell
# Portions copyright (C) 2007 Ross Younger
#
# This program is free software: you can redistribute it and/or modify
@@ -18,11 +18,12 @@
# along with this program. If not, see .
#
-AC_INIT([disorder], [4.3+], [richard+disorder@sfere.greenend.org.uk])
+AC_INIT([disorder], [5.1.1], [richard+disorder@sfere.greenend.org.uk])
AC_CONFIG_AUX_DIR([config.aux])
-AM_INIT_AUTOMAKE(disorder, [4.3+])
+AM_INIT_AUTOMAKE([foreign])
AC_CONFIG_SRCDIR([server/disorderd.c])
AM_CONFIG_HEADER([config.h])
+AC_CONFIG_MACRO_DIR([m4])
# Find host type
AC_CANONICAL_HOST
@@ -38,6 +39,7 @@ want_cgi=yes
want_alsa=yes
want_oss=yes
want_coreaudio=yes
+want_pulseaudio=yes
# By default we don't want gtk-osx. But if you ask for --with-gtk-osx...
#
@@ -46,6 +48,7 @@ want_coreaudio=yes
# - you will still need Fink (or something) for other libraries
# - if you wanted an application bundle you are out of luck
# - the menu bar is still in the main window (not at the top of the screen)
+# - drag and drop doesn't work
#
# So it's still rather rough and ready. But it does work...
#
@@ -77,6 +80,10 @@ AC_ARG_WITH([alsa],
[AS_HELP_STRING([--without-alsa],
[do not build with ALSA support])],
[want_alsa=$withval])
+AC_ARG_WITH([pulseaudio],
+ [AS_HELP_STRING([--without-pulseaudio],
+ [do not build with PulseAudio support])],
+ [want_pulseaudio=$withval])
AC_ARG_WITH([oss],
[AS_HELP_STRING([--without-oss],
[do not build with OSS support])],
@@ -91,7 +98,7 @@ AC_ARG_WITH([tests],
[want_tests=$withval])
AC_ARG_WITH([gtk-osx],
[AS_HELP_STRING([--with-gtk-osx],
- [use native GTK+])],
+ [use native GTK+ (OS X only)])],
[want_gtkosx=$withval])
AC_MSG_CHECKING([for a known target platform])
@@ -107,9 +114,13 @@ case "$host" in
;;
*linux* | *Linux* )
AC_MSG_RESULT([Linux])
+ AC_DEFINE_UNQUOTED([PATH_PROC_MOUNTS],["/proc/mounts"],[path to kernel mount list])
;;
*-apple-darwin* )
AC_MSG_RESULT([Mac OS X])
+ # AudioHardwareGetProperty is deprecated in 10.6, but it's still _there_,
+ # so we'll just turn off the warning.
+ CC="$CC -Wno-deprecated-declarations"
if test $want_coreaudio = yes; then
COREAUDIO="-framework CoreFoundation -framework CoreServices -framework CoreAudio"
fi
@@ -153,7 +164,7 @@ case "$host" in
# Look for a suitable version of libdb among the versions found in FreeBSD 7.0
AC_CACHE_CHECK([looking for a libdb install],[rjk_cv_libdb],[
rjk_cv_libdb="none"
- for db in db43 db44 db45 db46; do
+ for db in db43 db44 db45 db47 db48; do
if test -e /usr/local/lib/$db; then
rjk_cv_libdb=$db
break
@@ -164,6 +175,8 @@ case "$host" in
LDFLAGS="${LDFLAGS} -L/usr/local/lib/$rjk_cv_libdb"
CPPFLAGS="${CPPFLAGS} -isystem /usr/local/include/$rjk_cv_libdb"
fi
+ # iconv needs bodging
+ AC_SUBST(LIBICONV,[-liconv])
;;
* )
AC_MSG_RESULT([unknown, winging it])
@@ -267,7 +280,7 @@ fi
if test $want_cgi = yes; then
if test -z "$httpdir"; then
AC_CACHE_CHECK([for httpd document root],[rjk_cv_httpdir],[
- rjk_cv_httpdir="not found"
+ rjk_cv_httpdir="/usr/local/apache/htdocs"
for dir in /var/www/html \
/var/www/htdocs \
/var/www/localhost/htdocs \
@@ -283,9 +296,6 @@ if test $want_cgi = yes; then
fi
done
])
- if test "$rjk_cv_cgiexecdir" = "not found"; then
- AC_MSG_ERROR([cannot identify httpd documentroot. Set httpdir on configure command line])
- fi
httpdir="$rjk_cv_httpdir"
fi
if test ! -z "$cgidir"; then
@@ -294,7 +304,7 @@ if test $want_cgi = yes; then
fi
if test -z "$cgiexecdir"; then
AC_CACHE_CHECK([for CGI directory],[rjk_cv_cgiexecdir],[
- rjk_cv_cgiexecdir="not found"
+ rjk_cv_cgiexecdir="/usr/lib/cgi-bin"
for dir in /usr/lib/cgi-bin \
/Library/WebServer/CGI-Executables \
/srv/www/cgi-bin \
@@ -310,9 +320,6 @@ if test $want_cgi = yes; then
fi
done
])
- if test "$rjk_cv_cgiexecdir" = "not found"; then
- AC_MSG_ERROR([cannot identify CGI install directory. Set cgiexecdir on configure command line])
- fi
cgiexecdir="$rjk_cv_cgiexecdir"
fi
fi
@@ -323,6 +330,11 @@ if test -z "$pkghttpdir"; then
fi
AC_SUBST([pkghttpdir])
+if test -z "$dochtmldir"; then
+ dochtmldir='$(docdir)/html'
+fi
+AC_SUBST([dochtmldir])
+
subdirs="scripts lib"
if test $want_tests = yes; then
subdirs="${subdirs} libtests"
@@ -330,7 +342,7 @@ fi
subdirs="${subdirs} clients doc examples debian"
if test $want_server = yes; then
- subdirs="${subdirs} server plugins driver sounds"
+ subdirs="${subdirs} server plugins sounds"
fi
if test $want_cgi = yes; then
subdirs="${subdirs} cgi templates images"
@@ -342,7 +354,7 @@ if test $want_gtk = yes; then
fi
fi
if test $want_tests = yes && test $want_python = yes; then
- AM_PATH_PYTHON([2.4])
+ AM_PATH_PYTHON([2.5])
subdirs="${subdirs} python tests"
fi
AC_SUBST([subdirs])
@@ -381,16 +393,39 @@ AC_PATH_PROG([SENDMAIL],[sendmail],[none],[$PATH:/usr/sbin:/usr/lib])
# Macs might have libraries under fink's root
AC_PATH_PROG([FINK],[fink],[none],[$PATH:/sw/bin])
if test "x$FINK" != xnone; then
+ # Find Fink prefix
AC_CACHE_CHECK([fink install directory],[rjk_cv_finkprefix],[
rjk_cv_finkprefix="`echo "$FINK" | sed 's,/bin/fink$,,'`"
])
+ # Add include and link paths
finkdir="${rjk_cv_finkprefix}"
finkbindir="${rjk_cv_finkprefix}/bin"
- CPPFLAGS="${CPPFLAGS} -I${rjk_cv_finkprefix}/include/gc -I${rjk_cv_finkprefix}/include"
+ CPPFLAGS="${CPPFLAGS} -isystem ${rjk_cv_finkprefix}/include/gc -isystem ${rjk_cv_finkprefix}/include"
if test $want_server = yes; then
- CPPFLAGS="${CPPFLAGS} -I${rjk_cv_finkprefix}/include/db4"
+ CPPFLAGS="${CPPFLAGS} -isystem ${rjk_cv_finkprefix}/include/db4"
fi
LDFLAGS="${LDFLAGS} -L${rjk_cv_finkprefix}/lib"
+ # Distinguish 32- and 64-bit fink
+ AC_CACHE_CHECK([whether Fink is 32-bit or 64-bit],[rjk_cv_finkbits],[
+ odata=`otool -v -h $finkbindir/dpkg`
+ case "$odata" in
+ *X86_64* )
+ rjk_cv_finkbits=64
+ ;;
+ *I386* )
+ rjk_cv_finkbits=32
+ ;;
+ * )
+ rjk_cv_finkbits=unknown
+ ;;
+ esac
+ ])
+ # Match Fink so we can use its libraries
+ case $rjk_cv_finkbits in
+ 32 | 64 )
+ CC="$CC -m$rjk_cv_finkbits"
+ ;;
+ esac
else
finkbindir=""
fi
@@ -412,6 +447,15 @@ if test $want_alsa = yes; then
AC_CHECK_LIB([asound], [snd_pcm_open],
[AC_SUBST(LIBASOUND,[-lasound])])
fi
+if test $want_pulseaudio = yes; then
+ PKG_CHECK_MODULES([PULSEAUDIO],[libpulse],
+ [AC_DEFINE([HAVE_PULSEAUDIO],[1],[define to 1 for PulseAudio support])],
+ [missing_libraries="$missing_libraries libpulse"])
+ PKG_CHECK_MODULES([PULSEAUDIO_SIMPLE],[libpulse-simple],,
+ [missing_libraries="$missing_libraries libpulse-simple"])
+fi
+AC_CHECK_LIB([samplerate],[src_new],
+ [AC_SUBST([LIBSAMPLERATE],[-lsamplerate])])
if test $want_server = yes; then
RJK_CHECK_LIB(db, db_create, [#include ],
[AC_SUBST(LIBDB,[-ldb])],
@@ -426,9 +470,6 @@ if test $want_server = yes; then
AC_CHECK_LIB(mad, mad_stream_init,
[AC_SUBST(LIBMAD,[-lmad])],
[missing_libraries="$missing_libraries libmad"])
- AC_CHECK_LIB([ao], [ao_initialize],
- [AC_SUBST(LIBAO,[-lao])],
- [missing_libraries="$missing_libraries libao"])
AC_CHECK_LIB([FLAC], [FLAC__stream_decoder_new],
[AC_SUBST(LIBFLAC,[-lFLAC])],
[missing_libraries="$missing_libraries libFLAC"])
@@ -481,7 +522,8 @@ fi
if test $want_coreaudio = yes; then
AC_CHECK_HEADERS([CoreAudio/AudioHardware.h])
fi
-AC_CHECK_HEADERS([inttypes.h])
+AC_CHECK_HEADERS([inttypes.h sys/time.h sys/socket.h netinet/in.h \
+ arpa/inet.h sys/un.h netdb.h pcre.h pwd.h langinfo.h])
# We don't bother checking very standard stuff
# Compilation will fail if any of these headers are missing, so we
# check for them here and fail early.
@@ -489,7 +531,6 @@ if test $want_server = yes; then
AC_CHECK_HEADERS([db.h],[:],[
missing_headers="$missing_headers $ac_header"
])
- AC_CHECK_HEADERS([FLAC/file_decoder.h])
fi
AC_CHECK_HEADERS([dlfcn.h gcrypt.h \
getopt.h iconv.h langinfo.h \
@@ -497,6 +538,7 @@ AC_CHECK_HEADERS([dlfcn.h gcrypt.h \
syslog.h unistd.h],[:],[
missing_headers="$missing_headers $ac_header"
])
+AC_CHECK_HEADERS([samplerate.h])
if test ! -z "$missing_headers"; then
AC_MSG_ERROR([missing headers:$missing_headers])
@@ -513,29 +555,23 @@ AC_C_BIGENDIAN
AC_CHECK_TYPES([struct sockaddr_in6],,,[AC_INCLUDES_DEFAULT
#include ])
+# Figure out how we'll check for devices being mounted and unmounted
+AC_CACHE_CHECK([for list of mounted filesystems],[rjk_cv_mtab],[
+ if test -e /etc/mtab; then
+ rjk_cv_mtab=/etc/mtab
+ else
+ rjk_cv_mtab=none
+ fi
+])
+if test $rjk_cv_mtab != none; then
+ AC_DEFINE_UNQUOTED([PATH_MTAB],["$rjk_cv_mtab"],[path to file containing mount list])
+fi
+
# enable -Werror when we check for certain characteristics:
old_CFLAGS="${CFLAGS}"
CFLAGS="${CFLAGS} $gcc_werror"
-AC_CHECK_TYPES([long long,uint32_t,uint8_t,intmax_t,uintmax_t])
-
-# Some GCC invocations warn for converting function pointers to void *.
-# This is fair enough, as it's technically forbidden, but we use dlsym()
-# which can pretty much only exist if object and function pointers are
-# interconvertable. So we disable -Werror if need be.
-if test ! -z "$gcc_werror"; then
- AC_CACHE_CHECK([whether function pointers can be converted to void * without a warning],
- [rjk_cv_function_pointer_cast],[
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT
- void somefunction(void);],
- [(void *)somefunction])],
- [rjk_cv_function_pointer_cast=yes],
- [rjk_cv_function_pointer_cast=no])])
- if test $rjk_cv_function_pointer_cast = no; then
- gcc_werror=""
- fi
-fi
-
+AC_CHECK_TYPES([long long,uint32_t,uint16_t,uint8_t,intmax_t,uintmax_t])
CFLAGS="${old_CFLAGS}"
# gcrypt maintainers keep changing everything. Design your interface
@@ -603,14 +639,21 @@ AC_CHECK_FUNCS([fdatasync],[:],[
if test ! -z "$missing_functions"; then
AC_MSG_ERROR([missing functions:$missing_functions])
fi
+# dlsym will do if dlfunc not available
+AC_CHECK_FUNCS([dlfunc],[:],[
+ AC_DEFINE([dlfunc],[dlsym],[define dlfunc to dlsym if not available])
+])
+if test ! -z "$missing_functions"; then
+ AC_MSG_ERROR([missing functions:$missing_functions])
+fi
# Functions we can take or leave
-AC_CHECK_FUNCS([fls])
+AC_CHECK_FUNCS([fls getfsstat closesocket])
if test $want_server = yes; then
# had better be version 3 or later
AC_CACHE_CHECK([db.h version],[rjk_cv_db_version],[
- AC_PREPROC_IFELSE([
+ AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
#include
#ifndef DB_VERSION_MAJOR
# error cannot determine db version
@@ -621,16 +664,16 @@ if test $want_server = yes; then
#if DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR <= 2
# error inadequate db version
#endif
- ],
+ ],[])],
[rjk_cv_db_version=ok],
[rjk_cv_db_version=inadequate])
if test $rjk_cv_db_version = ok; then
- AC_PREPROC_IFELSE([
+ AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
#include
#if DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 6
# error http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=510270
#endif
- ],
+ ],[])],
[rjk_cv_db_version=ok],
[rjk_cv_db_version=toxic])
fi
@@ -651,6 +694,26 @@ AM_CONDITIONAL([SERVER], [test x$want_server = xyes])
if test $want_gtk = yes; then
AC_DEFINE([WITH_GTK], [1], [define if using GTK+])
fi
+AM_CONDITIONAL([GTK], [test x$want_gtk = xyes])
+
+# Some GCC invocations warn for converting function pointers to void *.
+# This is fair enough, as it's technically forbidden, but we use dlsym()
+# which can pretty much only exist if object and function pointers are
+# interconvertable. So we disable -Werror if need be.
+if test ! -z "$gcc_werror" && test "$ac_cv_func_dlfunc" != yes; then
+ CFLAGS="${CFLAGS} $gcc_werror"
+ AC_CACHE_CHECK([whether function pointers can be converted to void * without a warning],
+ [rjk_cv_function_pointer_cast],[
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT
+ void somefunction(void);],
+ [(void *)somefunction])],
+ [rjk_cv_function_pointer_cast=yes],
+ [rjk_cv_function_pointer_cast=no])])
+ if test $rjk_cv_function_pointer_cast = no; then
+ gcc_werror=""
+ fi
+ CFLAGS="${old_CFLAGS}"
+fi
if test "x$GCC" = xyes; then
# We need LLONG_MAX and annoyingly GCC doesn't always give it to us
@@ -681,13 +744,13 @@ if test "x$GCC" = xyes; then
if test $GCC = yes; then
CC="$CC -Wall -Werror"
fi
- AC_COMPILE_IFELSE([
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
static int x(char *f) {
return *f;
}
int z(const char *g) {
return x((char *)g);
- }],
+ }],[])],
[rjk_cv_pr29478=no],
[rjk_cv_pr29478=yes]
)
@@ -697,8 +760,27 @@ if test "x$GCC" = xyes; then
gcc_werror=''
fi
+ AC_CACHE_CHECK([checking for excessively strict -Wreturn-type],
+ [rjk_cv_gcc44_stupidity],[
+ old_CC="$CC"
+ if test $GCC = yes; then
+ CC="$CC -Wreturn-type -Werror"
+ fi
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[
+ static void *threadfn(void) {
+ for(;;)
+ ;
+ }],[])],
+ [rjk_cv_gcc44_stupidity=no],
+ [rjk_cv_gcc44_stupidity=yes])
+ CC="$old_CC"
+ ])
+ if test $rjk_cv_gcc44_stupidity = yes; then
+ AC_DEFINE([HAVE_STUPID_GCC44],[1],[Define if your compiler has excessively strict -Wreturn-type])
+ fi
+
# a reasonable default set of warnings
- CC="${CC} -Wall -W -Wpointer-arith -Wbad-function-cast \
+ CC="${CC} -Wall -W -Wpointer-arith \
-Wwrite-strings -Wmissing-prototypes \
-Wmissing-declarations -Wnested-externs"
@@ -775,10 +857,10 @@ AC_CONFIG_FILES([Makefile
cgi/Makefile
clients/Makefile
disobedience/Makefile
+ disobedience/manual/Makefile
doc/Makefile
templates/Makefile
plugins/Makefile
- driver/Makefile
debian/Makefile
sounds/Makefile
python/Makefile
@@ -793,6 +875,9 @@ fi
if test $want_python = no; then
AC_MSG_WARN([cannot run the test suit without Python])
fi
+if test $want_server = yes && test "$ac_cv_lib_samplerate_src_new" != yes; then
+ AC_MSG_WARN([libsamplerate will be required in a future version])
+fi
# Local Variables:
# indent-tabs-mode:nil