diff options
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 352 |
1 files changed, 306 insertions, 46 deletions
diff --git a/configure.ac b/configure.ac index 3a075e6c..296dc17e 100644 --- a/configure.ac +++ b/configure.ac @@ -1,11 +1,9 @@ # -*- Autoconf -*- # Process this file with autoconf to produce a configure script. -# $Id$ - # This file is part of PulseAudio. # -# Copyright 2004-2006 Lennart Poettering +# Copyright 2004-2008 Lennart Poettering # Copyright 2006-2007 Pierre Ossman <ossman@cendio.se> for Cendio AB # # PulseAudio is free software; you can redistribute it and/or modify it @@ -22,13 +20,13 @@ # along with PulseAudio; if not, write to the Free Software Foundation, # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. -AC_PREREQ(2.57) +AC_PREREQ(2.60) m4_define(PA_MAJOR, [0]) m4_define(PA_MINOR, [9]) -m4_define(PA_MICRO, [7]) +m4_define(PA_MICRO, [11]) -AC_INIT([pulseaudio], PA_MAJOR.PA_MINOR.PA_MICRO,[mzcbylcnhqvb (at) 0pointer (dot) de]) +AC_INIT([pulseaudio], PA_MAJOR.PA_MINOR.PA_MICRO,[mzchyfrnhqvb (at) 0pointer (dot) net]) AC_CONFIG_SRCDIR([src/daemon/main.c]) AC_CONFIG_HEADERS([config.h]) AM_INIT_AUTOMAKE([foreign -Wall]) @@ -36,14 +34,29 @@ AM_INIT_AUTOMAKE([foreign -Wall]) AC_SUBST(PA_MAJORMINOR, "PA_MAJOR.PA_MINOR") AC_SUBST(PACKAGE_URL, [http://pulseaudio.org/]) -AC_SUBST(PA_API_VERSION, 10) -AC_SUBST(PA_PROTOCOL_VERSION, 11) +AC_SUBST(PA_API_VERSION, 11) +AC_SUBST(PA_PROTOCOL_VERSION, 13) + +# The stable ABI for client applications, for the version info x:y:z +# always will hold y=z +AC_SUBST(LIBPULSE_VERSION_INFO, [5:0:5]) + +# A simplified, synchronous, ABI-stable interface for client +# applications, for the version info x:y:z always will hold y=z +AC_SUBST(LIBPULSE_SIMPLE_VERSION_INFO, [0:1:0]) + +# The ABI-stable network browsing interface for client applications, +# for the version info x:y:z always will hold y=z +AC_SUBST(LIBPULSE_BROWSE_VERSION_INFO, [1:1:1]) + +# The ABI-stable GLib adapter for client applications, for the version +# info x:y:z always will hold y=z +AC_SUBST(LIBPULSE_MAINLOOP_GLIB_VERSION_INFO, [0:3:0]) -AC_SUBST(LIBPULSE_VERSION_INFO, [3:0:3]) -AC_SUBST(LIBPULSECORE_VERSION_INFO, [4:0:0]) -AC_SUBST(LIBPULSE_SIMPLE_VERSION_INFO, [0:0:0]) -AC_SUBST(LIBPULSE_BROWSE_VERSION_INFO, [1:0:1]) -AC_SUBST(LIBPULSE_MAINLOOP_GLIB_VERSION_INFO, [0:2:0]) +# An internally used, ABI-unstable library that contains the +# PulseAudio core, SONAMEs are bumped on every release, version info +# suffix will always be 0:0 +AC_SUBST(LIBPULSECORE_VERSION_INFO, [6:0:0]) AC_CANONICAL_HOST @@ -64,6 +77,10 @@ esac #### Checks for programs. #### +# mkdir -p + +AC_PROG_MKDIR_P + # CC AC_PROG_CC @@ -106,6 +123,43 @@ if test "x$GCC" = "xyes" ; then done fi +# Native atomic operation support +AC_ARG_ENABLE([atomic-arm-linux-helpers], + AC_HELP_STRING([--disable-atomic-arm-linux-helpers], [use inline asm or libatomic_ops instead]), + [ + case "${enableval}" in + yes) atomic_arm_linux_helpers=yes ;; + no) atomic_arm_linux_helpers=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for --disable-atomic-arm-linux-helpers) ;; + esac + ], + [atomic_arm_linux_helpers=auto]) + +AC_ARG_ENABLE([atomic-arm-memory-barrier], + AC_HELP_STRING([--enable-atomic-arm-memory-barrier], [only really needed in SMP arm systems]), + [ + case "${enableval}" in + yes) AC_DEFINE_UNQUOTED(ATOMIC_ARM_MEMORY_BARRIER_ENABLED, 1, [Enable memory barriers]) ;; + no) ;; + *) AC_MSG_ERROR(bad value ${enableval} for --disable-atomic-arm-linux-helpers) ;; + esac + ],) + +AC_MSG_CHECKING([target operating system]) +case $host in + *-*-linux*) + AC_MSG_RESULT([linux]) + pulse_target_os=linux + ;; + *) + AC_MSG_RESULT([unknown]) + pulse_target_os=unknown + ;; +esac + +# If everything else fails use libatomic_ops +need_libatomic_ops=yes + AC_MSG_CHECKING([whether $CC knows __sync_bool_compare_and_swap()]) AC_LANG_CONFTEST([int main() { int a = 4; __sync_bool_compare_and_swap(&a, 4, 5); }]) $CC conftest.c $CFLAGS -o conftest > /dev/null 2> /dev/null @@ -114,8 +168,53 @@ rm -f conftest.o conftest if test $ret -eq 0 ; then AC_DEFINE([HAVE_ATOMIC_BUILTINS], 1, [Have __sync_bool_compare_and_swap() and friends.]) AC_MSG_RESULT([yes]) + need_libatomic_ops=no else AC_MSG_RESULT([no]) + # HW specific atomic ops stuff + AC_MSG_CHECKING([architecture for native atomic operations]) + case $host_cpu in + arm*) + AC_MSG_RESULT([arm]) + AC_MSG_CHECKING([whether we can use Linux kernel helpers]) + # The Linux kernel helper functions have been there since 2.6.16. However + # compile time checking for kernel version in cross compile environment + # (which is usually the case for arm cpu) is tricky (or impossible). + if test "x$pulse_target_os" = "xlinux" && test "x$atomic_arm_linux_helpers" != "xno"; then + AC_MSG_RESULT([yes]) + AC_DEFINE_UNQUOTED(ATOMIC_ARM_LINUX_HELPERS, 1, [special arm linux implementation]) + need_libatomic_ops=no + else + AC_MSG_RESULT([no]) + AC_MSG_CHECKING([compiler support for arm inline asm atomic operations]) + AC_LANG_CONFTEST([[int main() + { + volatile int a=0; + int o=0, n=1, r; + asm volatile ("ldrex %0, [%1]\n" + "subs %0, %0, %2\n" + "strexeq %0, %3, [%1]\n" + : "=&r" (r) + : "r" (&a), "Ir" (o), "r" (n) + : "cc"); + return (a==1 ? 0 : -1); + }]]) + $CC conftest.c $CFLAGS -o conftest > /dev/null 2>&1 + ret=$? + rm -f conftest.o conftest + if test $ret -eq 0 ; then + AC_DEFINE([ATOMIC_ARM_INLINE_ASM], 1, [Have ARMv6 instructions.]) + AC_MSG_RESULT([yes]) + need_libatomic_ops=no + else + AC_MSG_RESULT([no]) + fi + fi + ;; + *) + AC_MSG_RESULT([unknown]) + ;; + esac fi AC_MSG_CHECKING([whether $CC knows __thread]) @@ -153,6 +252,12 @@ AC_SUBST(LTDLINCL) AC_SUBST(LIBLTDL) AC_CONFIG_SUBDIRS(libltdl) +old_LIBS=$LIBS +LIBS="$LIBS $LIBLTDL" +AC_CHECK_FUNCS([lt_dlmutex_register]) +LIBS=$old_LIBS +AC_CHECK_TYPES([struct lt_user_dlloader, lt_dladvise], , , [#include <ltdl.h>]) + if test "x$enable_ltdl_install" = "xno" && test "x$ac_cv_lib_ltdl_lt_dlinit" = "xno" ; then AC_MSG_ERROR([[ @@ -232,6 +337,7 @@ AC_CHECK_TYPES(ssize_t, , [AC_DEFINE([ssize_t], [signed long], AC_TYPE_OFF_T AC_TYPE_SIGNAL AC_TYPE_UID_T +AC_CHECK_DECLS(environ) AC_CHECK_DEFINE([SIGXCPU], [signal.h], [ HAVE_SIGXCPU=1 @@ -258,6 +364,7 @@ AC_SEARCH_LIBS([sched_setscheduler], [rt]) AC_SEARCH_LIBS([dlopen], [dl]) AC_SEARCH_LIBS([shm_open], [rt]) AC_SEARCH_LIBS([inet_ntop], [nsl]) +AC_SEARCH_LIBS([timer_create], [rt]) # BSD AC_SEARCH_LIBS([connect], [socket]) @@ -268,6 +375,9 @@ AC_SEARCH_LIBS([connect], [socket]) # build, disabling its ability to make dlls. AC_CHECK_FUNCS([getopt_long], [], [AC_CHECK_LIB([iberty], [getopt_long])]) +AC_CHECK_LIB(gdbm, gdbm_open) +AC_CHECK_HEADERS(gdbm.h) + #### Check for functions #### # ISO @@ -316,7 +426,6 @@ else AC_MSG_RESULT([no]) fi - #### Large File-Support (LFS) #### AC_SYS_LARGEFILE @@ -387,13 +496,19 @@ AC_SUBST(LIBSNDFILE_LIBS) #### atomic-ops ### -AC_CHECK_HEADERS([atomic_ops.h], [], [ -AC_MSG_ERROR([*** libatomic-ops headers not found]) -]) - -# Win32 does not need the lib and breaks horribly if we try to include it -if test "x$os_is_win32" != "x1" ; then - LIBS="$LIBS -latomic_ops" +AC_MSG_CHECKING([whether we need libatomic_ops]) +if test "x$need_libatomic_ops" = "xyes"; then + AC_MSG_RESULT([yes]) + AC_CHECK_HEADERS([atomic_ops.h], [], [ + AC_MSG_ERROR([*** libatomic-ops headers not found]) + ]) + + # Win32 does not need the lib and breaks horribly if we try to include it + if test "x$os_is_win32" != "x1" ; then + LIBS="$LIBS -latomic_ops" + fi +else + AC_MSG_RESULT([no]) fi #### Libsamplerate support (optional) #### @@ -478,7 +593,7 @@ AC_ARG_ENABLE([alsa], [alsa=auto]) if test "x${alsa}" != xno ; then - PKG_CHECK_MODULES(ASOUNDLIB, [ alsa >= 1.0.0 ], + PKG_CHECK_MODULES(ASOUNDLIB, [ alsa >= 1.0.16 ], [ HAVE_ALSA=1 AC_DEFINE([HAVE_ALSA], 1, [Have ALSA?]) @@ -775,6 +890,36 @@ AC_SUBST(HAL_LIBS) AC_SUBST(HAVE_HAL) AM_CONDITIONAL([HAVE_HAL], [test "x$HAVE_HAL" = x1]) +#### BlueZ support (optional) #### + +AC_ARG_ENABLE([bluez], + AC_HELP_STRING([--disable-bluez], [Disable optional BlueZ support]), + [ + case "${enableval}" in + yes) bluez=yes ;; + no) bluez=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for --disable-bluez) ;; + esac + ], + [bluez=auto]) +if test "x${bluez}" != xno ; then + PKG_CHECK_MODULES(BLUEZ, [ bluez >= 3.0 ], + HAVE_BLUEZ=1, + [ + HAVE_BLUEZ=0 + if test "x$bluez" = xyes ; then + AC_MSG_ERROR([*** BLUEZ support not found]) + fi + ]) +else + HAVE_BLUEZ=0 +fi + +AC_SUBST(BLUEZ_CFLAGS) +AC_SUBST(BLUEZ_LIBS) +AC_SUBST(HAVE_BLUEZ) +AM_CONDITIONAL([HAVE_BLUEZ], [test "x$HAVE_BLUEZ" = x1]) + #### D-Bus support (optional) #### AC_ARG_ENABLE([dbus], @@ -792,7 +937,7 @@ if test "x$HAVE_HAL" = x1 ; then dbus=yes fi -if test "x${dbus}" != xno ; then +if test "x${dbus}" != xno || test "x${bluez}" != xno || "x${hal}" != xno ; then PKG_CHECK_MODULES(DBUS, [ dbus-1 >= 1.0.0 ], [ @@ -818,6 +963,80 @@ AC_SUBST(DBUS_LIBS) AC_SUBST(HAVE_DBUS) AM_CONDITIONAL([HAVE_DBUS], [test "x$HAVE_DBUS" = x1]) +#### PolicyKit support (optional) #### + +AC_ARG_ENABLE([polkit], + AC_HELP_STRING([--disable-polkit], [Disable optional PolicyKit support]), + [ + case "${enableval}" in + yes) polkit=yes ;; + no) polkit=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for --disable-polkit) ;; + esac + ], + [polkit=auto]) + +if test "x${polkit}" != xno ; then + + PKG_CHECK_MODULES(POLKIT, [ polkit-dbus >= 0.7 ], + [ + HAVE_POLKIT=1 + AC_DEFINE([HAVE_POLKIT], 1, [Have PolicyKit]) + policydir=`pkg-config polkit-dbus --variable prefix`/share/PolicyKit/policy/ + AC_SUBST(policydir) + ], + [ + HAVE_POLKIT=0 + if test "x$polkit" = xyes ; then + AC_MSG_ERROR([*** PolicyKit support not found]) + fi + ]) +else + HAVE_POLKIT=0 +fi + +AC_SUBST(POLKIT_CFLAGS) +AC_SUBST(POLKIT_LIBS) +AC_SUBST(HAVE_POLKIT) +AM_CONDITIONAL([HAVE_POLKIT], [test "x$HAVE_POLKIT" = x1]) + +### Build and Install man pages ### +AC_ARG_ENABLE(manpages, + AS_HELP_STRING([--disable-manpages],[Disable building and installation of man pages]), +[case "${enableval}" in + yes) manpages=yes ;; + no) manpages=no ;; + *) AC_MSG_ERROR([bad value ${enableval} for --disable-manpages]) ;; +esac],[manpages=yes]) + +if test x$manpages = xyes ; then + # + # XMLTOMAN manpage generation + # + AC_ARG_ENABLE(xmltoman, + AS_HELP_STRING([--disable-xmltoman],[Enable rebuilding of man pages with xmltoman]), + [case "${enableval}" in + yes) xmltoman=yes ;; + no) xmltoman=no ;; + *) AC_MSG_ERROR([bad value ${enableval} for --disable-xmltoman]) ;; + esac],[xmltoman=yes]) + + if test x$xmltoman = xyes ; then + AC_CHECK_PROG(have_xmltoman, xmltoman, yes, no) + fi + + if test x$have_xmltoman = xno -o x$xmltoman = xno; then + if ! test -e man/pulseaudio.1 ; then + AC_MSG_ERROR([*** xmltoman was not found or was disabled, it is required to build the manpages as they have not been pre-built, install xmltoman, pass --disable-manpages or dont pass --disable-xmltoman]) + exit 1 + fi + AC_MSG_WARN([*** Not rebuilding man pages as xmltoman is not found ***]) + xmltoman=no + fi +fi +AM_CONDITIONAL([USE_XMLTOMAN], [test "x$xmltoman" = xyes]) +AM_CONDITIONAL([BUILD_MANPAGES], [test "x$manpages" = xyes]) + #### PulseAudio system group & user ##### AC_ARG_WITH(system_user, AS_HELP_STRING([--with-system-user=<user>],[User for running the PulseAudio daemon as a system-wide instance (pulse)])) @@ -856,9 +1075,29 @@ fi AC_SUBST(PA_ACCESS_GROUP) AC_DEFINE_UNQUOTED(PA_ACCESS_GROUP,"$PA_ACCESS_GROUP", [Access group]) +AC_ARG_ENABLE( + per_user_esound_socket, + AS_HELP_STRING([--disable-per-user-esound-socket], [Use global esound socket directory /tmp/.esd/socket.]), + [ + case "${enableval}" in + yes) per_user_esound_socket=1 ;; + no) per_user_esound_socket=0 ;; + *) AC_MSG_ERROR(bad value ${enableval} for --disable-per-user-esound-socket) ;; + esac + ], + [per_user_esound_socket=1]) + +if test "x$per_user_esound_socket" = "x1"; then + AC_DEFINE([USE_PER_USER_ESOUND_SOCKET], [1], [Define this if you want per-user esound socket directories]) +fi + #### PulseAudio system runtime dir #### PA_SYSTEM_RUNTIME_PATH="${localstatedir}/run/pulse" AC_SUBST(PA_SYSTEM_RUNTIME_PATH) +PA_SYSTEM_CONFIG_PATH="${localstatedir}/lib/pulse" +AC_SUBST(PA_SYSTEM_CONFIG_PATH) +PA_SYSTEM_STATE_PATH="${localstatedir}/lib/pulse" +AC_SUBST(PA_SYSTEM_STATE_PATH) ################################### # Output # @@ -900,6 +1139,7 @@ AM_CONDITIONAL([FORCE_PREOPEN], [test "x$FORCE_PREOPEN" = "x1"]) AC_CONFIG_FILES([ Makefile src/Makefile +man/Makefile libpulse.pc libpulse-simple.pc libpulse-browse.pc @@ -976,30 +1216,50 @@ if test "x${HAVE_LIBSAMPLERATE}" = "x1" ; then ENABLE_LIBSAMPLERATE=yes fi +ENABLE_BLUEZ=no +if test "x${HAVE_BLUEZ}" = "x1" ; then + ENABLE_BLUEZ=yes +fi + +ENABLE_POLKIT=no +if test "x${HAVE_POLKIT}" = "x1" ; then + ENABLE_POLKIT=yes +fi + +ENABLE_PER_USER_ESOUND_SOCKET=no +if test "x$per_user_esound_socket" = "x1" ; then + ENABLE_PER_USER_ESOUND_SOCKET=yes +fi + echo " ---{ $PACKAGE_NAME $VERSION }--- - prefix: ${prefix} - sysconfdir: ${sysconfdir} - localstatedir: ${localstatedir} - System Runtime Path: ${PA_SYSTEM_RUNTIME_PATH} - Compiler: ${CC} - CFLAGS: ${CFLAGS} - Have X11: ${ENABLE_X11} - Enable OSS: ${ENABLE_OSS} - Enable Alsa: ${ENABLE_ALSA} - Enable Solaris: ${ENABLE_SOLARIS} - Enable GLib 2.0: ${ENABLE_GLIB20} - Enable GConf: ${ENABLE_GCONF} - Enable Avahi: ${ENABLE_AVAHI} - Enable Jack: ${ENABLE_JACK} - Enable Async DNS: ${ENABLE_LIBASYNCNS} - Enable LIRC: ${ENABLE_LIRC} - Enable HAL: ${ENABLE_HAL} - Enable TCP Wrappers: ${ENABLE_TCPWRAP} - Enable libsamplerate: ${ENABLE_LIBSAMPLERATE} - System User: ${PA_SYSTEM_USER} - System Group: ${PA_SYSTEM_GROUP} - Realtime Group: ${PA_REALTIME_GROUP} - Access Group: ${PA_ACCESS_GROUP} + prefix: ${prefix} + sysconfdir: ${sysconfdir} + localstatedir: ${localstatedir} + System Runtime Path: ${PA_SYSTEM_RUNTIME_PATH} + System State Path: ${PA_SYSTEM_STATE_PATH} + System Config Path: ${PA_SYSTEM_CONFIG_PATH} + Compiler: ${CC} + CFLAGS: ${CFLAGS} + Have X11: ${ENABLE_X11} + Enable OSS: ${ENABLE_OSS} + Enable Alsa: ${ENABLE_ALSA} + Enable Solaris: ${ENABLE_SOLARIS} + Enable GLib 2.0: ${ENABLE_GLIB20} + Enable GConf: ${ENABLE_GCONF} + Enable Avahi: ${ENABLE_AVAHI} + Enable Jack: ${ENABLE_JACK} + Enable Async DNS: ${ENABLE_LIBASYNCNS} + Enable LIRC: ${ENABLE_LIRC} + Enable HAL: ${ENABLE_HAL} + Enable BlueZ: ${ENABLE_BLUEZ} + Enable TCP Wrappers: ${ENABLE_TCPWRAP} + Enable libsamplerate: ${ENABLE_LIBSAMPLERATE} + Enable PolicyKit: ${ENABLE_POLKIT} + System User: ${PA_SYSTEM_USER} + System Group: ${PA_SYSTEM_GROUP} + Realtime Group: ${PA_REALTIME_GROUP} + Access Group: ${PA_ACCESS_GROUP} + Enable per-user EsounD socket: ${ENABLE_PER_USER_ESOUND_SOCKET} " |