Make pulse compile with clang
[pulseaudio-mirror.git] / configure.ac
blob5a78ffb9b644ee6423b2e5752d1d99b7fa0e6ff2
1 # -*- Autoconf -*-
2 # Process this file with autoconf to produce a configure script.
4 # This file is part of PulseAudio.
6 # Copyright 2004-2008 Lennart Poettering
7 # Copyright 2006-2007 Pierre Ossman <ossman@cendio.se> for Cendio AB
9 # PulseAudio is free software; you can redistribute it and/or modify it
10 # under the terms of the GNU Lesser General Public License as published by
11 # the Free Software Foundation; either version 2 of the License, or
12 # (at your option) any later version.
14 # PulseAudio is distributed in the hope that it will be useful, but
15 # WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 # General Public License for more details.
19 # You should have received a copy of the GNU Lesser General Public License
20 # along with PulseAudio; if not, write to the Free Software Foundation,
21 # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
23 AC_PREREQ(2.63)
25 AC_INIT([pulseaudio],[m4_esyscmd(./git-version-gen .tarball-version)],[mzchyfrnhqvb (at) 0pointer (dot) net])
26 AC_CONFIG_SRCDIR([src/daemon/main.c])
27 AC_CONFIG_MACRO_DIR([m4])
28 AC_CONFIG_HEADERS([config.h])
29 AM_INIT_AUTOMAKE([foreign 1.11 -Wall -Wno-portability silent-rules tar-pax])
31 m4_define(pa_major, `echo $VERSION | cut -d. -f1 | cut -d- -f1`)
32 m4_define(pa_minor, `echo $VERSION | cut -d. -f2 | cut -d- -f1`)
34 AC_SUBST(PA_MAJOR, pa_major)
35 AC_SUBST(PA_MINOR, pa_minor)
36 AC_SUBST(PA_MAJORMINOR, pa_major.pa_minor)
37 AC_SUBST(PACKAGE_URL, [http://pulseaudio.org/])
39 AC_SUBST(PA_API_VERSION, 12)
40 AC_SUBST(PA_PROTOCOL_VERSION, 20)
42 # The stable ABI for client applications, for the version info x:y:z
43 # always will hold y=z
44 AC_SUBST(LIBPULSE_VERSION_INFO, [12:3:12])
46 # A simplified, synchronous, ABI-stable interface for client
47 # applications, for the version info x:y:z always will hold y=z
48 AC_SUBST(LIBPULSE_SIMPLE_VERSION_INFO, [0:3:0])
50 # The ABI-stable network browsing interface for client applications,
51 # for the version info x:y:z always will hold y=z
52 AC_SUBST(LIBPULSE_BROWSE_VERSION_INFO, [1:1:1])
54 # The ABI-stable GLib adapter for client applications, for the version
55 # info x:y:z always will hold y=z
56 AC_SUBST(LIBPULSE_MAINLOOP_GLIB_VERSION_INFO, [0:4:0])
58 AC_CANONICAL_HOST
59 AC_DEFINE_UNQUOTED([CANONICAL_HOST], "$host", [Canonical host string.])
61 AC_CHECK_PROG([STOW], [stow], [yes], [no])
63 AS_IF([test "x$STOW" = "xyes" && test -d /usr/local/stow], [
64    AC_MSG_NOTICE([*** Found /usr/local/stow: default install prefix set to /usr/local/stow/${PACKAGE_NAME}-${PACKAGE_VERSION} ***])
65    ac_default_prefix="/usr/local/stow/${PACKAGE_NAME}-${PACKAGE_VERSION}"
68 AM_SILENT_RULES([yes])
70 #### Checks for programs. ####
72 # mkdir -p
74 AC_PROG_MKDIR_P
76 # CC
78 AC_PROG_CC
79 AC_PROG_CC_C99
80 AM_PROG_CC_C_O
81 AC_PROG_GCC_TRADITIONAL
82 AC_USE_SYSTEM_EXTENSIONS
84 #### Platform hacks ####
86 case $host in
87    *-*-solaris* )
88       AC_DEFINE(_XOPEN_SOURCE,        600, Needed to get declarations for msg_control and msg_controllen on Solaris)
89       AC_DEFINE(__EXTENSIONS__,         1, Needed to get declarations for msg_control and msg_controllen on Solaris)
90       ;;
91    *-*-darwin* )
92       AC_DEFINE([_POSIX_C_SOURCE], [200112L], [Needed to get clock_gettime on Mac OS X])
93       AC_DEFINE([_DARWIN_C_SOURCE], [200112L], [Needed to get NSIG on Mac OS X])
94       ;;
95 esac
97 # M4
99 AC_CHECK_PROGS([M4], gm4 m4, no)
100 if test "x$M4" = xno ; then
101    AC_MSG_ERROR([m4 missing])
104 dnl Compiler flags
106 # Some compilers (e.g. clang) default to a warning on an unkown command line option.
107 # Change that temporarily to an error, for the CC_CHECK_CFLAGS_APPEND macro to work.
108 save_CC="$CC"
109 CC="$CC -Werror"
110 CC_CHECK_CFLAGS_APPEND([-Wall -W -Wextra -pipe -Wno-long-long -Wvla -Wno-overlength-strings -Wunsafe-loop-optimizations -Wundef -Wformat=2 -Wlogical-op -Wsign-compare -Wformat-security -Wmissing-include-dirs -Wformat-nonliteral -Wold-style-definition -Wpointer-arith -Winit-self -Wdeclaration-after-statement -Wfloat-equal -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls -Wmissing-declarations -Wmissing-noreturn -Wshadow -Wendif-labels -Wcast-align -Wstrict-aliasing -Wwrite-strings -Wno-unused-parameter -ffast-math -Wp,-D_FORTIFY_SOURCE=2 -fno-common -fdiagnostics-show-option])
111 CC="$save_CC"
113 dnl Linker flags.
114 dnl Check whether the linker supports the -version-script option.
116 dnl This variable is used to make sure ${srcdir} is expanded and not
117 dnl passed to the CC_CHECK_LDFLAGS macro as a name.
118 tmp_ldflag="-Wl,-version-script=${srcdir}/src/map-file"
120 CC_CHECK_LDFLAGS([${tmp_ldflag}],
121     [VERSIONING_LDFLAGS='-Wl,-version-script=$(srcdir)/map-file'])
122 AC_SUBST([VERSIONING_LDFLAGS])
124 dnl Use immediate (now) bindings; avoids the funky re-call in itself
125 dnl  the -z now syntax is lifted from Sun's linker and works with GNU's too
126 dnl  other linkes might be added later
127 CC_CHECK_LDFLAGS([-Wl,-z,now], [IMMEDIATE_LDFLAGS="-Wl,-z,now"])
128 AC_SUBST([IMMEDIATE_LDFLAGS])
130 dnl On ELF systems we don't want the libraries to be unloaded since we
131 dnl don't clean them up properly, so we request the nodelete flag to be
132 dnl enabled.
134 dnl On other systems, we don't really know how to do that, but it's
135 dnl welcome if somebody can tell.
136 CC_CHECK_LDFLAGS([-Wl,-z,nodelete], [NODELETE_LDFLAGS="-Wl,-z,nodelete"])
137 AC_SUBST([NODELETE_LDFLAGS])
139 dnl Check for the proper way to build libraries that have no undefined
140 dnl symbols; on some hosts this needs to be avoided but the macro
141 dnl takes care of it.
142 CC_NOUNDEFINED
144 dnl Check whether to build tests by default (as compile-test) or not
145 AC_ARG_ENABLE([default-build-tests],
146     AS_HELP_STRING([--disable-default-build-tests], [Build test programs only during make check]))
148 AM_CONDITIONAL([BUILD_TESTS_DEFAULT], [test "x$enable_default_build_tests" != "xno"])
150 # Native atomic operation support
151 AC_ARG_ENABLE([atomic-arm-linux-helpers],
152     AS_HELP_STRING([--disable-atomic-arm-linux-helpers],[use inline asm or libatomic_ops instead]),
153         [
154             case "${enableval}" in
155                 yes) atomic_arm_linux_helpers=yes ;;
156                 no) atomic_arm_linux_helpers=no ;;
157                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-atomic-arm-linux-helpers) ;;
158             esac
159         ],
160         [atomic_arm_linux_helpers=auto])
162 AC_ARG_ENABLE([atomic-arm-memory-barrier],
163     AS_HELP_STRING([--enable-atomic-arm-memory-barrier],[only really needed in SMP arm systems]),
164         [
165             case "${enableval}" in
166                 yes) AC_DEFINE_UNQUOTED(ATOMIC_ARM_MEMORY_BARRIER_ENABLED, 1, [Enable memory barriers]) ;;
167                 no) ;;
168                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-atomic-arm-linux-helpers) ;;
169             esac
170         ],)
172 AC_MSG_CHECKING([target operating system])
173 case $host in
174         *-*-linux*)
175             AC_MSG_RESULT([linux])
176             pulse_target_os=linux
177         ;;
178         *-*-darwin*)
179             AC_MSG_RESULT([darwin])
180             pulse_target_os=darwin
181         ;;
182         *)
183             AC_MSG_RESULT([unknown])
184             pulse_target_os=unknown
185         ;;
186 esac
188 # If everything else fails use libatomic_ops
189 need_libatomic_ops=yes
191 AC_CACHE_CHECK([whether $CC knows __sync_bool_compare_and_swap()],
192   pulseaudio_cv_sync_bool_compare_and_swap,
193   [AC_LINK_IFELSE(
194      AC_LANG_PROGRAM([], [[int a = 4; __sync_bool_compare_and_swap(&a, 4, 5);]]),
195      [pulseaudio_cv_sync_bool_compare_and_swap=yes],
196      [pulseaudio_cv_sync_bool_compare_and_swap=no])
197   ])
199 if test "$pulseaudio_cv_sync_bool_compare_and_swap" = "yes" ; then
200     AC_DEFINE([HAVE_ATOMIC_BUILTINS], 1, [Have __sync_bool_compare_and_swap() and friends.])
201     need_libatomic_ops=no
202 else
203     # HW specific atomic ops stuff
204     AC_MSG_CHECKING([architecture for native atomic operations])
205     case $host in
206         arm*)
207             AC_MSG_RESULT([arm])
208             AC_MSG_CHECKING([whether we can use Linux kernel helpers])
209             # The Linux kernel helper functions have been there since 2.6.16. However
210             # compile time checking for kernel version in cross compile environment
211             # (which is usually the case for arm cpu) is tricky (or impossible).
212             if test "x$pulse_target_os" = "xlinux" && test "x$atomic_arm_linux_helpers" != "xno"; then
213                 AC_MSG_RESULT([yes])
214                 AC_DEFINE_UNQUOTED(ATOMIC_ARM_LINUX_HELPERS, 1, [special arm linux implementation])
215                 need_libatomic_ops=no
216             else
217                AC_MSG_RESULT([no])
218                AC_CACHE_CHECK([compiler support for arm inline asm atomic operations],
219                  pulseaudio_cv_support_arm_atomic_ops,
220                  [AC_COMPILE_IFELSE(
221                     AC_LANG_PROGRAM([],
222                       [[volatile int a=0;
223                         int o=0, n=1, r;
224                         asm volatile ("ldrex    %0, [%1]\n"
225                                          "subs  %0, %0, %2\n"
226                                          "strexeq %0, %3, [%1]\n"
227                                          : "=&r" (r)
228                                          : "r" (&a), "Ir" (o), "r" (n)
229                                          : "cc");
230                         return (a==1 ? 0 : -1);
231                       ]]),
232                     [pulseaudio_cv_support_arm_atomic_ops=yes],
233                     [pulseaudio_cv_support_arm_atomic_ops=no])
234                  ])
235                AS_IF([test "$pulseaudio_cv_support_arm_atomic_ops" = "yes"], [
236                    AC_DEFINE([ATOMIC_ARM_INLINE_ASM], 1, [Have ARM atomic instructions.])
237                    need_libatomic_ops=no
238                  ])
239            fi
240         ;;
241         *-netbsdelf5*)
242             AC_MSG_RESULT([yes])
243             need_libatomic_ops=no
244         ;;
245         *-freebsd*)
246             AC_MSG_RESULT([yes])
247             need_libatomic_ops=no
248         ;;
249         *)
250             AC_MSG_RESULT([unknown])
251         ;;
252     esac
255 # If we're on ARM, check for the ARMV6 instructions we need */
256 case $host in
257   arm*)
258     AC_CACHE_CHECK([support for required armv6 instructions],
259       pulseaudio_cv_support_armv6,
260       [AC_COMPILE_IFELSE(
261          AC_LANG_PROGRAM([],
262            [[volatile int a = -60000, b = 0xaaaabbbb, c = 0xccccdddd;
263              asm volatile ("ldr r0, %2 \n"
264                            "ldr r2, %3 \n"
265                            "ldr r3, %4 \n"
266                            "ssat r1, #8, r0 \n"
267                            "str r1, %0 \n"
268                            "pkhbt r1, r3, r2, LSL #8 \n"
269                            "str r1, %1 \n"
270                            : "=m" (a), "=m" (b)
271                            : "m" (a), "m" (b), "m" (c)
272                            : "r0", "r1", "r2", "r3", "cc");
273              return (a == -128 && b == 0xaabbdddd) ? 0 : -1;
274            ]]),
275          [pulseaudio_cv_support_armv6=yes],
276          [pulseaudio_cv_support_armv6=no])
277       ])
278     AS_IF([test "$pulseaudio_cv_support_armv6" = "yes"], [
279         AC_DEFINE([HAVE_ARMV6], 1, [Have ARMv6 instructions.])
280       ])
281   ;;
282   *)
283   ;;
284 esac
286 CC_CHECK_TLS
288 AC_CACHE_CHECK([whether $CC knows _Bool],
289   pulseaudio_cv__Bool,
290   [AC_COMPILE_IFELSE(
291      AC_LANG_PROGRAM([], [[_Bool b;]]),
292      [pulseaudio_cv__Bool=yes],
293      [pulseaudio_cv__Bool=no])
294   ])
296 AS_IF([test "$pulseaudio_cv__Bool" = "yes"], [
297     AC_DEFINE([HAVE_STD_BOOL], 1, [Have _Bool.])
298   ])
300 #### libtool stuff ####
301 LT_PREREQ(2.2)
302 LT_INIT([dlopen win32-dll disable-static])
304 dnl Unfortunately, even up to libtool 2.2.6a there is no way to know
305 dnl exactly which version of libltdl is present in the system, so we
306 dnl just assume that it's a working version as long as we have the
307 dnl library and the header files.
309 dnl As an extra safety device, check for lt_dladvise_init() which is
310 dnl only implemented in libtool 2.x, and refine as we go if we have
311 dnl refined requirements.
313 dnl Check the header files first since the system may have a
314 dnl libltdl.so for runtime, but no headers, and we want to bail out as
315 dnl soon as possible.
317 dnl We don't need any special variable for this though, since the user
318 dnl can give the proper place to find libltdl through the standard
319 dnl variables like LDFLAGS and CPPFLAGS.
321 AC_CHECK_HEADER([ltdl.h],
322     [AC_CHECK_LIB([ltdl], [lt_dladvise_init], [LIBLTDL=-lltdl], [LIBLTDL=])],
323     [LIBLTDL=])
325 AS_IF([test "x$LIBLTDL" = "x"],
326     [AC_MSG_ERROR([Unable to find libltdl version 2. Makes sure you have libtool 2.2 or later installed.])])
327 AC_SUBST([LIBLTDL])
329 #### Determine build environment ####
331 os_is_win32=0
332 os_is_darwin=0
334 case "$host_os" in
335         mingw*)
336         AC_DEFINE([OS_IS_WIN32], 1, [Build target is Windows.])
337         os_is_win32=1
338                 ;;
339         darwin*)
340         AC_DEFINE([OS_IS_DARWIN], 1, [Build target is Darwin.])
341         os_is_darwin=1
342                 ;;
343         esac
345 AM_CONDITIONAL(OS_IS_WIN32, test "x$os_is_win32" = "x1")
346 AM_CONDITIONAL(OS_IS_DARWIN, test "x$os_is_darwin" = "x1")
348 ###################################
349 #   Basic environment checks      #
350 ###################################
352 #### Checks for header files. ####
354 # ISO
355 AC_HEADER_STDC
357 # POSIX
358 AC_CHECK_HEADERS_ONCE([arpa/inet.h glob.h grp.h netdb.h netinet/in.h \
359     netinet/in_systm.h netinet/tcp.h poll.h pwd.h sched.h \
360     sys/mman.h sys/resource.h sys/select.h sys/socket.h sys/wait.h \
361     sys/uio.h syslog.h sys/dl.h dlfcn.h linux/sockios.h])
362 AC_CHECK_HEADERS([netinet/ip.h], [], [],
363                  [#include <sys/types.h>
364                   #if HAVE_NETINET_IN_H
365                   # include <netinet/in.h>
366                   #endif
367                   #if HAVE_NETINET_IN_SYSTM_H
368                   # include <netinet/in_systm.h>
369                   #endif
370                  ])
371 AC_CHECK_HEADERS([sys/un.h], [HAVE_AF_UNIX=1], [HAVE_AF_UNIX=0])
372 AM_CONDITIONAL(HAVE_AF_UNIX, test "x$HAVE_AF_UNIX" = "x1")
374 # Linux
375 AC_CHECK_HEADERS([linux/input.h], [HAVE_EVDEV=1], [HAVE_EVDEV=0])
377 AM_CONDITIONAL([HAVE_EVDEV], [test "x$HAVE_EVDEV" = "x1"])
379 AC_CHECK_HEADERS_ONCE([sys/prctl.h])
381 # Solaris
382 AC_CHECK_HEADERS_ONCE([sys/filio.h])
384 # Windows
385 AC_CHECK_HEADERS_ONCE([windows.h winsock2.h ws2tcpip.h])
387 # NetBSD
388 AC_CHECK_HEADERS_ONCE([sys/atomic.h])
390 # Other
391 AC_CHECK_HEADERS_ONCE([sys/ioctl.h])
392 AC_CHECK_HEADERS_ONCE([byteswap.h])
393 AC_CHECK_HEADERS_ONCE([sys/syscall.h])
394 AC_CHECK_HEADERS_ONCE([sys/eventfd.h])
395 AC_CHECK_HEADERS_ONCE([execinfo.h])
396 AC_CHECK_HEADERS_ONCE([langinfo.h])
397 AC_CHECK_HEADERS_ONCE([regex.h pcreposix.h])
399 #### Typdefs, structures, etc. ####
401 AC_C_CONST
402 AC_C_BIGENDIAN
403 AC_TYPE_PID_T
404 AC_TYPE_SIZE_T
405 AC_CHECK_TYPES(ssize_t, , [AC_DEFINE([ssize_t], [signed long],
406     [Define ssize_t if it is not done by the standard libs.])])
407 AC_TYPE_OFF_T
409 AC_TYPE_UID_T
410 AC_CHECK_DECLS(environ)
412 AC_CHECK_DEFINE([SIGXCPU], [signal.h], [
413 HAVE_SIGXCPU=1
414 AC_DEFINE([HAVE_SIGXCPU], 1, [Have SIGXCPU?])
415 ], [HAVE_SIGXCPU=0])
416 AM_CONDITIONAL(HAVE_SIGXCPU, test "x$HAVE_SIGXCPU" = "x1")
418 # Solaris lacks this
419 AC_CHECK_DEFINE([INADDR_NONE], [netinet/in.h], [],
420     [AC_CHECK_DEFINE([INADDR_NONE], [winsock2.h], [],
421         [AC_DEFINE([INADDR_NONE],  [0xffffffff], [Define INADDR_NONE if not found in <netinet/in.h>])])])
423 #### POSIX threads ####
425 ACX_PTHREAD
427 #### Check for libs ####
429 # ISO
430 AC_SEARCH_LIBS([pow], [m])
432 # POSIX
433 AC_SEARCH_LIBS([sched_setscheduler], [rt])
434 AC_SEARCH_LIBS([dlopen], [dl])
435 AC_SEARCH_LIBS([shm_open], [rt])
436 AC_SEARCH_LIBS([inet_ntop], [nsl])
437 AC_SEARCH_LIBS([timer_create], [rt])
438 AC_SEARCH_LIBS([pthread_setaffinity_np], [pthread])
440 # BSD
441 AC_SEARCH_LIBS([connect], [socket])
442 AC_SEARCH_LIBS([backtrace], [execinfo])
444 # Non-standard
446 # This magic is needed so we do not needlessly add static libs to the win32
447 # build, disabling its ability to make dlls.
448 AC_CHECK_FUNCS([getopt_long], [], [AC_CHECK_LIB([iberty], [getopt_long])])
450 # Darwin/OS X
451 if test "x$os_is_darwin" = "x1" ; then
452     AC_MSG_CHECKING([looking for Apple CoreService Framework])
453     # How do I check a framework "library" - AC_CHECK_LIB prob. won't work??, just assign LIBS & hope
454     AC_CHECK_HEADER([/Developer/Headers/FlatCarbon/CoreServices.h],
455     [LIBS="$LIBS -framework CoreServices"],
456     [AC_MSG_ERROR([CoreServices.h header file not found]) ])
458     AC_MSG_RESULT([ok])
459     AC_DEFINE([HAVE_CLOCK_GETTIME], 1, [Using clock_gettime() replacement])
460     HAVE_BONJOUR=1
463 AC_SUBST(HAVE_BONJOUR)
464 AM_CONDITIONAL([HAVE_BONJOUR], [test "x$HAVE_BONJOUR" = x1])
466 AC_SEARCH_LIBS([regexec], [pcreposix])
468 #### Check for functions ####
470 # ISO
471 AC_CHECK_FUNCS_ONCE([lrintf strtof])
473 # POSIX
474 AC_FUNC_FORK
475 AC_FUNC_GETGROUPS
476 AC_FUNC_SELECT_ARGTYPES
477 AC_CHECK_FUNCS_ONCE([chmod chown fstat fchown fchmod clock_gettime getaddrinfo getgrgid_r getgrnam_r \
478     getpwnam_r getpwuid_r gettimeofday getuid inet_ntop inet_pton mlock nanosleep \
479     pipe posix_fadvise posix_madvise posix_memalign setpgid setsid shm_open \
480     sigaction sleep symlink sysconf uname pthread_setaffinity_np])
481 AC_CHECK_FUNCS([mkfifo], [HAVE_MKFIFO=1], [HAVE_MKFIFO=0])
483 AM_CONDITIONAL(HAVE_MKFIFO, test "x$HAVE_MKFIFO" = "x1")
485 # X/OPEN
486 AC_CHECK_FUNCS_ONCE([readlink])
488 # SUSv2
489 AC_CHECK_FUNCS_ONCE([ctime_r usleep])
491 # SUSv3
492 AC_CHECK_FUNCS_ONCE([strerror_r])
494 # BSD
495 AC_CHECK_FUNCS_ONCE([lstat])
497 # Non-standard
499 AC_CHECK_FUNCS_ONCE([setresuid setresgid setreuid setregid seteuid setegid ppoll strsignal sig2str strtof_l pipe2 accept4])
501 AC_FUNC_ALLOCA
503 AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
504   pulseaudio_cv_PTHREAD_PRIO_INHERIT,
505   [save_CC=$CC; CC=$PTHREAD_CC
506    save_CFLAGS=$CFLAGS; CFLAGS=$PTHREAD_CFLAGS
507    save_LIBS=$LIBS; LIBS=$PTHREAD_LIBS
508    AC_LINK_IFELSE(
509      AC_LANG_PROGRAM(
510        [[
511          #include <pthread.h>
512        ]],
513        [[int i = PTHREAD_PRIO_INHERIT;]]),
514      [pulseaudio_cv_PTHREAD_PRIO_INHERIT=yes],
515      [pulseaudio_cv_PTHREAD_PRIO_INHERIT=no])
516    CC=$save_CC
517    CFLAGS=$save_CFLAGS
518    LIBS=$save_LIBS
519   ])
521 AS_IF([test "$pulseaudio_cv_PTHREAD_PRIO_INHERIT" = "yes"], [
522     AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], 1, [Have PTHREAD_PRIO_INHERIT.])
523   ])
525 AC_DEFINE_UNQUOTED(PA_CFLAGS,"$CFLAGS", [The CFLAGS used during compilation])
527 AC_CHECK_FUNCS([regexec], [HAVE_REGEX=1], [HAVE_REGEX=0])
528 AM_CONDITIONAL(HAVE_REGEX, [test "x$HAVE_REGEX" = "x1"])
530 #### Large File-Support (LFS) ####
532 AC_SYS_LARGEFILE
534 # Check for open64 to know if the current system does have open64() and similar functions
535 AC_CHECK_FUNCS_ONCE([open64])
537 #### [lib]iconv ####
539 AM_ICONV
541 IT_PROG_INTLTOOL([0.35.0])
542 GETTEXT_PACKAGE=pulseaudio
543 AC_SUBST([GETTEXT_PACKAGE])
544 AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],["$GETTEXT_PACKAGE"],[Gettext package])
545 AM_GLIB_GNU_GETTEXT
547 pulselocaledir='${prefix}/${DATADIRNAME}/locale'
548 AC_SUBST(pulselocaledir)
550 ###################################
551 #      External libraries         #
552 ###################################
554 #### pkg-config ####
556 PKG_PROG_PKG_CONFIG
558 #### X11 (optional) ####
560 AC_ARG_ENABLE([x11],
561     AS_HELP_STRING([--disable-x11],[Disable optional X11 support]),
562         [
563             case "${enableval}" in
564                 yes) x11=yes ;;
565                 no) x11=no ;;
566                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-x11) ;;
567             esac
568         ],
569         [x11=auto])
571 if test "x${x11}" != xno ; then
572     PKG_CHECK_MODULES(X11, [ x11-xcb ice sm xtst xcb-atom ],
573         HAVE_X11=1,
574         [
575             HAVE_X11=0
576             if test "x$x11" = xyes ; then
577                 AC_MSG_ERROR([*** X11 not found])
578             fi
579         ])
580 else
581     HAVE_X11=0
584 if test "x${HAVE_X11}" = x1 ; then
585    AC_DEFINE([HAVE_X11], 1, [Have X11?])
588 AC_SUBST(X11_CFLAGS)
589 AC_SUBST(X11_LIBS)
590 AC_SUBST(HAVE_X11)
591 AM_CONDITIONAL([HAVE_X11], [test "x$HAVE_X11" = x1])
593 #### Capabilities (optional) ####
595 CAP_LIBS=''
597 AC_ARG_WITH(
598         [caps],
599         AS_HELP_STRING([--without-caps],[Omit support for POSIX capabilities.]))
601 if test "x${with_caps}" != "xno"; then
602     AC_SEARCH_LIBS([cap_init], [cap], [], [
603                     if test "x${with_caps}" = "xyes" ; then
604                         AC_MSG_ERROR([*** POSIX caps libraries not found])
605                     fi])
606     AC_CHECK_HEADERS([sys/capability.h], [], [
607                     if test "x${with_caps}" = "xyes" ; then
608                         AC_MSG_ERROR([*** POSIX caps headers not found])
609                     fi])
612 #### Valgrind (optional) ####
614 AC_CHECK_HEADERS_ONCE([valgrind/memcheck.h])
616 #### Sound file ####
618 PKG_CHECK_MODULES(LIBSNDFILE, [ sndfile >= 1.0.20 ])
619 AC_SUBST(LIBSNDFILE_CFLAGS)
620 AC_SUBST(LIBSNDFILE_LIBS)
622 PKG_CHECK_MODULES(LIBSPEEX, [ speexdsp >= 1.2 ])
623 AC_SUBST(LIBSPEEX_CFLAGS)
624 AC_SUBST(LIBSPEEX_LIBS)
626 #### atomic-ops ###
628 AC_MSG_CHECKING([whether we need libatomic_ops])
629 if test "x$need_libatomic_ops" = "xyes"; then
630    AC_MSG_RESULT([yes])
631    AC_CHECK_HEADERS([atomic_ops.h], [], [
632    AC_MSG_ERROR([*** libatomic-ops headers not found])
633    ])
635    # Win32 does not need the lib and breaks horribly if we try to include it
636    if test "x$os_is_win32" != "x1" ; then
637        LIBS="$LIBS -latomic_ops"
638    fi
639 else
640    AC_MSG_RESULT([no])
643 #### Libsamplerate support (optional) ####
645 AC_ARG_ENABLE([samplerate],
646     AS_HELP_STRING([--disable-samplerate],[Disable optional libsamplerate support]),
647         [
648             case "${enableval}" in
649                 yes) samplerate=yes ;;
650                 no) samplerate=no ;;
651                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-samplerate) ;;
652             esac
653         ],
654         [samplerate=auto])
656 if test "x${samplerate}" != xno ; then
657     PKG_CHECK_MODULES(LIBSAMPLERATE, [ samplerate >= 0.1.0 ],
658         HAVE_LIBSAMPLERATE=1,
659         [
660             HAVE_LIBSAMPLERATE=0
661             if test "x$samplerate" = xyes ; then
662                 AC_MSG_ERROR([*** Libsamplerate not found])
663             fi
664         ])
665 else
666     HAVE_LIBSAMPLERATE=0
669 if test "x${HAVE_LIBSAMPLERATE}" = x1 ; then
670    AC_DEFINE([HAVE_LIBSAMPLERATE], 1, [Have libsamplerate?])
673 AC_SUBST(LIBSAMPLERATE_CFLAGS)
674 AC_SUBST(LIBSAMPLERATE_LIBS)
675 AC_SUBST(HAVE_LIBSAMPLERATE)
676 AM_CONDITIONAL([HAVE_LIBSAMPLERATE], [test "x$HAVE_LIBSAMPLERATE" = x1])
678 #### Database support ####
680 HAVE_TDB=0
681 HAVE_GDBM=0
682 HAVE_SIMPLEDB=0
684 AC_ARG_WITH(
685         [database],
686         AS_HELP_STRING([--with-database=auto|tdb|gdbm|simple],[Choose database backend.]),[],[with_database=auto])
688 if test "x${with_database}" = "xauto" -o "x${with_database}" = "xtdb" ; then
689     PKG_CHECK_MODULES(TDB, [ tdb ],
690         [
691             HAVE_TDB=1
692             with_database=tdb
693         ], [
694             if test "x${with_database}" = "xtdb" ; then
695                 AC_MSG_ERROR([*** tdb not found])
696             fi
697         ])
700 if test "x${with_database}" = "xauto" -o "x${with_database}" = "xgdbm" ; then
701    have_gdbm=yes
703    AC_CHECK_LIB(gdbm, gdbm_open, [], [have_gdbm=no])
704    AC_CHECK_HEADERS(gdbm.h, [], [have_gdbm=no])
706    if test "x${have_gdbm}" = "xyes" ; then
707        HAVE_GDBM=1
708        GDBM_CFLAGS=
709        GDBM_LIBS=-lgdbm
710        with_database=gdbm
711    elif test "x${with_database}" = "xgdbm"; then
712        AC_MSG_ERROR([*** gdbm not found])
713    fi
716 if test "x${with_database}" = "xauto" -o "x${with_database}" = "xsimple" ; then
717     HAVE_SIMPLEDB=1
718     with_database=simple
721 if test "x${HAVE_TDB}" != x1 -a "x${HAVE_GDBM}" != x1 -a "x${HAVE_SIMPLEDB}" != x1; then
722    AC_MSG_ERROR([*** missing database backend])
725 if test "x${HAVE_TDB}" = x1 ; then
726    AC_DEFINE([HAVE_TDB], 1, [Have tdb?])
729 if test "x${HAVE_GDBM}" = x1 ; then
730    AC_DEFINE([HAVE_GDBM], 1, [Have gdbm?])
733 if test "x${HAVE_SIMPLEDB}" = x1 ; then
734     AC_DEFINE([HAVE_SIMPLEDB], 1, [Have simple?])
737 AC_SUBST(TDB_CFLAGS)
738 AC_SUBST(TDB_LIBS)
739 AC_SUBST(HAVE_TDB)
740 AM_CONDITIONAL([HAVE_TDB], [test "x$HAVE_TDB" = x1])
742 AC_SUBST(GDBM_CFLAGS)
743 AC_SUBST(GDBM_LIBS)
744 AC_SUBST(HAVE_GDBM)
745 AM_CONDITIONAL([HAVE_GDBM], [test "x$HAVE_GDBM" = x1])
747 AC_SUBST(HAVE_SIMPLEDB)
748 AM_CONDITIONAL([HAVE_SIMPLEDB], [test "x$HAVE_SIMPLEDB" = x1])
750 #### OSS support (optional) ####
752 AC_ARG_ENABLE([oss-output],
753     AS_HELP_STRING([--disable-oss-output],[Disable optional OSS output support]),
754         [
755             case "${enableval}" in
756                 yes) oss_output=yes ;;
757                 no) oss_output=no ;;
758                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-oss-output) ;;
759             esac
760         ],
761         [oss_output=auto])
763 AC_ARG_ENABLE([oss-wrapper],
764     AS_HELP_STRING([--disable-oss-wrapper],[Disable optional OSS wrapper support]),
765         [
766             case "${enableval}" in
767                 yes) oss_wrapper=yes ;;
768                 no) oss_wrapper=no ;;
769                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-oss-wrapper) ;;
770             esac
771         ],
772         [oss_wrapper=auto])
774 if test "x${oss_output}" != xno || test "x${oss_wrapper}" != "xno"; then
775     AC_CHECK_HEADERS([sys/soundcard.h],
776         [
777             if test "x${oss_output}" != "xno"; then
778                 AC_DEFINE([HAVE_OSS_OUTPUT], 1, [Have OSS output?])
779             fi
780             if test "x${oss_wrapper}" != "xno"; then
781                 AC_DEFINE([HAVE_OSS_WRAPPER], 1, [Have OSS wrapper (padsp)?])
782             fi
783             HAVE_OSS=1
784         ],
785         [
786             HAVE_OSS=0
787             if test "x$oss_output" = xyes || test "x$oss_wrapper" = "xyes"; then
788                 AC_MSG_ERROR([*** OSS support not found])
789             fi
790         ])
791 else
792     HAVE_OSS=0
795 AC_SUBST(HAVE_OSS)
796 AM_CONDITIONAL([HAVE_OSS_OUTPUT], [test "x$HAVE_OSS" = x1 && test "x${oss_output}" != "xno"])
797 AM_CONDITIONAL([HAVE_OSS_WRAPPER], [test "x$HAVE_OSS" = x1 && test "x${oss_wrapper}" != "xno"])
799 #### CoreAudio support (optional) ####
801 AC_ARG_ENABLE([coreaudio-output],
802     AS_HELP_STRING([--disable-coreaudio-output],[Disable optional CoreAudio output support]),
803         [
804             case "${enableval}" in
805                 yes) coreaudio_enabled=yes ;;
806                 no) coreaudio_enabled=no ;;
807                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-coreaudio-output) ;;
808             esac
809         ],
810         [coreaudio_enabled=auto])
812 if test "x${coreaudio_enabled}" != xno ; then
813     AC_CHECK_HEADERS([CoreAudio/CoreAudio.h], HAVE_COREAUDIO=1)
814 else
815     HAVE_COREAUDIO=0
818 AC_SUBST(HAVE_COREAUDIO)
819 AM_CONDITIONAL([HAVE_COREAUDIO], [test "x$HAVE_COREAUDIO" = x1 && test "x${coreaudio_enabled}" != "xno"])
821 #### ALSA support (optional) ####
823 AC_ARG_ENABLE([alsa],
824     AS_HELP_STRING([--disable-alsa],[Disable optional ALSA support]),
825         [
826             case "${enableval}" in
827                 yes) alsa=yes ;;
828                 no) alsa=no ;;
829                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-alsa) ;;
830             esac
831         ],
832         [alsa=auto])
834 if test "x${alsa}" != xno ; then
835     PKG_CHECK_MODULES(ASOUNDLIB, [ alsa >= 1.0.19 ],
836         [
837             HAVE_ALSA=1
838             AC_DEFINE([HAVE_ALSA], 1, [Have ALSA?])
839         ],
840         [
841             HAVE_ALSA=0
842             if test "x$alsa" = xyes ; then
843                 AC_MSG_ERROR([*** Needed alsa >= 1.0.19 support not found])
844             fi
845         ])
846 else
847     HAVE_ALSA=0
850 AC_SUBST(ASOUNDLIB_CFLAGS)
851 AC_SUBST(ASOUNDLIB_LIBS)
852 AC_SUBST(HAVE_ALSA)
853 AM_CONDITIONAL([HAVE_ALSA], [test "x$HAVE_ALSA" = x1])
855 #### Solaris audio support (optional) ####
857 AC_ARG_ENABLE([solaris],
858     AS_HELP_STRING([--disable-solaris],[Disable optional Solaris audio support]),
859         [
860             case "${enableval}" in
861                 yes) solaris=yes ;;
862                 no) solaris=no ;;
863                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-solaris) ;;
864             esac
865         ],
866         [solaris=auto])
868 if test "x${solaris}" != xno ; then
869     AC_CHECK_HEADERS([sys/audio.h],
870         [
871             HAVE_SOLARIS=1
872             AC_DEFINE([HAVE_SOLARIS], 1, [Have Solaris audio?])
873         ],
874         [
875             HAVE_SOLARIS=0
876             if test "x$solaris" = xyes ; then
877                 AC_MSG_ERROR([*** Solaris audio support not found])
878             fi
879         ])
880 else
881     HAVE_SOLARIS=0
884 AC_SUBST(HAVE_SOLARIS)
885 AM_CONDITIONAL([HAVE_SOLARIS], [test "x$HAVE_SOLARIS" = x1])
887 #### WaveOut audio support (optional) ####
889 AC_ARG_ENABLE([waveout],
890     AS_HELP_STRING([--disable-waveout],[Disable optional WaveOut audio support]),
891         [
892             case "${enableval}" in
893                 yes) waveout=yes ;;
894                 no) waveout=no ;;
895                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-waveout) ;;
896             esac
897         ],
898         [waveout=auto])
900 if test "x${waveout}" != xno ; then
901     AC_CHECK_HEADERS([mmsystem.h],
902         [
903             HAVE_WAVEOUT=1
904             AC_DEFINE([HAVE_WAVEOUT], 1, [Have WaveOut audio?])
905         ],
906         [
907             HAVE_WAVEOUT=0
908             if test "x$waveout" = xyes ; then
909                 AC_MSG_ERROR([*** WaveOut audio support not found])
910             fi
911         ],
912         [#include <windows.h>])
913 else
914     HAVE_WAVEOUT=0
917 AC_SUBST(HAVE_WAVEOUT)
918 AM_CONDITIONAL([HAVE_WAVEOUT], [test "x$HAVE_WAVEOUT" = x1])
920 #### GLib 2 support (optional) ####
922 AC_ARG_ENABLE([glib2],
923     AS_HELP_STRING([--disable-glib2],[Disable optional GLib 2 support]),
924         [
925             case "${enableval}" in
926                 yes) glib2=yes ;;
927                 no) glib2=no ;;
928                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-glib2) ;;
929             esac
930         ],
931         [glib2=auto])
933 if test "x${glib2}" != xno ; then
934     PKG_CHECK_MODULES(GLIB20, [ glib-2.0 >= 2.4.0 ],
935         HAVE_GLIB20=1,
936         [
937             HAVE_GLIB20=0
938             if test "x$glib2" = xyes ; then
939                 AC_MSG_ERROR([*** GLib 2 support not found])
940             fi
941         ])
942 else
943     HAVE_GLIB20=0
946 AC_SUBST(GLIB20_CFLAGS)
947 AC_SUBST(GLIB20_LIBS)
948 AC_SUBST(HAVE_GLIB20)
949 AM_CONDITIONAL([HAVE_GLIB20], [test "x$HAVE_GLIB20" = x1])
951 if test "x$HAVE_GLIB20" = x1 ; then
952    AC_DEFINE([HAVE_GLIB], 1, [Have GLIB?])
955 #### GTK2 support (optional) ####
957 AC_ARG_ENABLE([gtk2],
958     AS_HELP_STRING([--disable-gtk2],[Disable optional Gtk+ 2 support]),
959         [
960             case "${enableval}" in
961                 yes) gtk2=yes ;;
962                 no) gtk2=no ;;
963                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-gtk2) ;;
964             esac
965         ],
966         [gtk2=auto])
968 if test "x${gtk2}" != xno ; then
969     PKG_CHECK_MODULES(GTK20, [ gtk+-2.0 >= 2.4.0 ],
970         HAVE_GTK20=1,
971         [
972             HAVE_GTK20=0
973             if test "x$gtk2" = xyes ; then
974                 AC_MSG_ERROR([*** Gtk+ 2 support not found])
975             fi
976         ])
977 else
978     HAVE_GTK20=0
981 AC_SUBST(GTK20_CFLAGS)
982 AC_SUBST(GTK20_LIBS)
983 AC_SUBST(HAVE_GTK20)
984 AM_CONDITIONAL([HAVE_GTK20], [test "x$HAVE_GTK20" = x1])
986 if test "x$HAVE_GTK20" = x1 ; then
987    AC_DEFINE([HAVE_GTK], 1, [Have GTK?])
990 #### GConf support (optional) ####
992 AC_ARG_ENABLE([gconf],
993     AS_HELP_STRING([--disable-gconf],[Disable optional GConf support]),
994         [
995             case "${enableval}" in
996                 yes) gconf=yes ;;
997                 no) gconf=no ;;
998                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-gconf) ;;
999             esac
1000         ],
1001         [gconf=auto])
1003 if test "x${gconf}" != xno ; then
1004     PKG_CHECK_MODULES(GCONF, [ gconf-2.0 >= 2.4.0 gobject-2.0 ],
1005         HAVE_GCONF=1,
1006         [
1007             HAVE_GCONF=0
1008             if test "x$gconf" = xyes ; then
1009                 AC_MSG_ERROR([*** GConf support not found])
1010             fi
1011         ])
1012 else
1013     HAVE_GCONF=0
1016 AC_SUBST(GCONF_CFLAGS)
1017 AC_SUBST(GCONF_LIBS)
1018 AC_SUBST(HAVE_GCONF)
1019 AM_CONDITIONAL([HAVE_GCONF], [test "x$HAVE_GCONF" = x1])
1021 #### Avahi support (optional) ####
1023 AC_ARG_ENABLE([avahi],
1024     AS_HELP_STRING([--disable-avahi],[Disable optional Avahi support]),
1025         [
1026             case "${enableval}" in
1027                 yes) avahi=yes ;;
1028                 no) avahi=no ;;
1029                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-avahi) ;;
1030             esac
1031         ],
1032         [avahi=auto])
1034 if test "x${avahi}" != xno ; then
1035     PKG_CHECK_MODULES(AVAHI, [ avahi-client >= 0.6.0 ],
1036         HAVE_AVAHI=1,
1037         [
1038                 HAVE_AVAHI=0
1039                 if test "x$avahi" = xyes ; then
1040                         AC_MSG_ERROR([*** Avahi support not found])
1041                 fi
1042         ])
1043 else
1044     HAVE_AVAHI=0
1047 AC_SUBST(AVAHI_CFLAGS)
1048 AC_SUBST(AVAHI_LIBS)
1049 AC_SUBST(HAVE_AVAHI)
1050 AM_CONDITIONAL([HAVE_AVAHI], [test "x$HAVE_AVAHI" = x1])
1052 ### JACK (optional) ####
1054 AC_ARG_ENABLE([jack],
1055     AS_HELP_STRING([--disable-jack],[Disable optional JACK support]),
1056         [
1057             case "${enableval}" in
1058                 yes) jack=yes ;;
1059                 no) jack=no ;;
1060                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-jack) ;;
1061             esac
1062         ],
1063         [jack=auto])
1065 if test "x${jack}" != xno ; then
1066     PKG_CHECK_MODULES(JACK, [ jack >= 0.100 ],
1067         HAVE_JACK=1,
1068         [
1069             HAVE_JACK=0
1070             if test "x$jack" = xyes ; then
1071                 AC_MSG_ERROR([*** JACK support not found])
1072             fi
1073         ])
1074 else
1075     HAVE_JACK=0
1078 AC_SUBST(JACK_CFLAGS)
1079 AC_SUBST(JACK_LIBS)
1080 AC_SUBST(HAVE_JACK)
1081 AM_CONDITIONAL([HAVE_JACK], [test "x$HAVE_JACK" = x1])
1083 #### Async DNS support (optional) ####
1085 AC_ARG_ENABLE([asyncns],
1086     AS_HELP_STRING([--disable-asyncns],[Disable optional Async DNS support]),
1087         [
1088             case "${enableval}" in
1089                 yes) asyncns=yes ;;
1090                 no) asyncns=no ;;
1091                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-asyncns) ;;
1092             esac
1093         ],
1094         [asyncns=auto])
1096 if test "x${asyncns}" != xno ; then
1097     PKG_CHECK_MODULES(LIBASYNCNS, [ libasyncns >= 0.1 ],
1098         HAVE_LIBASYNCNS=1,
1099         [
1100             HAVE_LIBASYNCNS=0
1101             if test "x$asyncns" = xyes ; then
1102                 AC_MSG_ERROR([*** Async DNS support not found])
1103             fi
1104         ])
1105 else
1106     HAVE_LIBASYNCNS=0
1109 AC_SUBST(LIBASYNCNS_CFLAGS)
1110 AC_SUBST(LIBASYNCNS_LIBS)
1111 AC_SUBST(HAVE_LIBASYNCNS)
1112 AM_CONDITIONAL([HAVE_LIBASYNCNS], [test "x$HAVE_LIBASYNCNS" = x1])
1114 if test "x$HAVE_LIBASYNCNS" != "x0" ; then
1115    AC_DEFINE([HAVE_LIBASYNCNS], 1, [Have libasyncns?])
1118 #### TCP wrappers (optional) ####
1120 AC_ARG_ENABLE([tcpwrap],
1121     AS_HELP_STRING([--disable-tcpwrap],[Disable optional TCP wrappers support]),
1122         [
1123             case "${enableval}" in
1124                 yes) tcpwrap=yes ;;
1125                 no) tcpwrap=no ;;
1126                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-tcpwrap) ;;
1127             esac
1128         ],
1129         [tcpwrap=auto])
1131 if test "x${tcpwrap}" != xno ; then
1132     ACX_LIBWRAP
1133     if test "x${LIBWRAP_LIBS}" = x && test "x$tcpwrap" = xyes ; then
1134         AC_MSG_ERROR([*** TCP wrappers support not found])
1135     fi
1136 else
1137     LIBWRAP_LIBS=
1140 AC_SUBST(LIBWRAP_LIBS)
1142 #### LIRC support (optional) ####
1144 AC_ARG_ENABLE([lirc],
1145     AS_HELP_STRING([--disable-lirc],[Disable optional LIRC support]),
1146         [
1147             case "${enableval}" in
1148                 yes) lirc=yes ;;
1149                 no) lirc=no ;;
1150                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-lirc) ;;
1151             esac
1152         ],
1153         [lirc=auto])
1155 if test "x${lirc}" != xno ; then
1156     ACX_LIRC
1157     if test "x${HAVE_LIRC}" = x0 && test "x$lirc" = xyes ; then
1158         AC_MSG_ERROR([*** LIRC support not found])
1159     fi
1160 else
1161     HAVE_LIRC=0
1164 AC_SUBST(LIRC_CFLAGS)
1165 AC_SUBST(LIRC_LIBS)
1166 AM_CONDITIONAL([HAVE_LIRC], [test "x$HAVE_LIRC" = x1])
1168 #### HAL support (optional) ####
1170 AC_ARG_ENABLE([hal],
1171     AS_HELP_STRING([--disable-hal],[Disable optional HAL support]),
1172         [
1173             case "${enableval}" in
1174                 yes) hal=yes ;;
1175                 no) hal=no ;;
1176                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-hal) ;;
1177             esac
1178         ],
1179         [hal=auto])
1180 if test "x${hal}" != xno -a \( "x$HAVE_OSS" = "x1" -o "x$HAVE_ALSA" = "x1" \) ; then
1181     PKG_CHECK_MODULES(HAL, [ hal >= 0.5.11 ],
1182         [
1183             HAVE_HAL=1
1184             AC_DEFINE([HAVE_HAL], 1, [Have HAL.])
1185         ],
1186         [
1187             HAVE_HAL=0
1188             if test "x$hal" = xyes ; then
1189                 AC_MSG_ERROR([*** HAL support not found])
1190             fi
1191         ])
1192 else
1193     HAVE_HAL=0
1196 AC_SUBST(HAL_CFLAGS)
1197 AC_SUBST(HAL_LIBS)
1198 AC_SUBST(HAVE_HAL)
1199 AM_CONDITIONAL([HAVE_HAL], [test "x$HAVE_HAL" = x1])
1201 #### UDEV support (optional) ####
1203 AC_ARG_ENABLE([udev],
1204     AS_HELP_STRING([--disable-udev],[Disable optional UDEV support]),
1205         [
1206             case "${enableval}" in
1207                 yes) udev=yes ;;
1208                 no) udev=no ;;
1209                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-udev) ;;
1210             esac
1211         ],
1212         [udev=auto])
1213 if test "x${udev}" != xno -a \( "x$HAVE_OSS" = "x1" -o "x$HAVE_ALSA" = "x1" \) ; then
1214     PKG_CHECK_MODULES(UDEV, [ libudev >= 143 ],
1215         [
1216             HAVE_UDEV=1
1217             AC_DEFINE([HAVE_UDEV], 1, [Have UDEV.])
1218         ],
1219         [
1220             HAVE_UDEV=0
1221             if test "x$udev" = xyes ; then
1222                 AC_MSG_ERROR([*** UDEV support not found])
1223             fi
1224         ])
1225 else
1226     HAVE_UDEV=0
1229 AC_SUBST(UDEV_CFLAGS)
1230 AC_SUBST(UDEV_LIBS)
1231 AC_SUBST(HAVE_UDEV)
1232 AM_CONDITIONAL([HAVE_UDEV], [test "x$HAVE_UDEV" = x1])
1234 #### BlueZ support (optional) ####
1236 AC_ARG_ENABLE([bluez],
1237     AS_HELP_STRING([--disable-bluez],[Disable optional BlueZ support]),
1238         [
1239             case "${enableval}" in
1240                 yes) bluez=yes ;;
1241                 no) bluez=no ;;
1242                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-bluez) ;;
1243             esac
1244         ],
1245         [bluez=auto])
1246 if test "x${bluez}" != xno ; then
1247     PKG_CHECK_MODULES(BLUEZ, [ bluez >= 3.0 ],
1248         HAVE_BLUEZ=1,
1249         [
1250             HAVE_BLUEZ=0
1251             if test "x$bluez" = xyes ; then
1252                 AC_MSG_ERROR([*** BLUEZ support not found])
1253             fi
1254         ])
1255 else
1256     HAVE_BLUEZ=0
1259 AC_SUBST(BLUEZ_CFLAGS)
1260 AC_SUBST(BLUEZ_LIBS)
1261 AC_SUBST(HAVE_BLUEZ)
1262 AM_CONDITIONAL([HAVE_BLUEZ], [test "x$HAVE_BLUEZ" = x1])
1264 #### D-Bus support (optional) ####
1266 AC_ARG_ENABLE([dbus],
1267     AS_HELP_STRING([--disable-dbus],[Disable optional D-Bus support]),
1268         [
1269             case "${enableval}" in
1270                 yes) dbus=yes ;;
1271                 no) dbus=no ;;
1272                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-dbus) ;;
1273             esac
1274         ],
1275         [dbus=auto])
1277 if test "x${dbus}" != xno ; then
1279     PKG_CHECK_MODULES(DBUS, [ dbus-1 >= 1.0.0 ],
1280         [
1281             HAVE_DBUS=1
1282             saved_LIBS="$LIBS"
1283             LIBS="$LIBS $DBUS_LIBS"
1284             CFLAGS="$CFLAGS $DBUS_CFLAGS"
1285             AC_CHECK_FUNCS(dbus_watch_get_unix_fd)
1286             LIBS="$saved_LIBS"
1287             AC_DEFINE([HAVE_DBUS], 1, [Have D-Bus.])
1288         ],
1289         [
1290             HAVE_DBUS=0
1291             if test "x$dbus" = xyes ; then
1292                 AC_MSG_ERROR([*** D-Bus support not found])
1293             fi
1294         ])
1295 else
1296     HAVE_DBUS=0
1299 AC_SUBST(DBUS_CFLAGS)
1300 AC_SUBST(DBUS_LIBS)
1301 AC_SUBST(HAVE_DBUS)
1302 AM_CONDITIONAL([HAVE_DBUS], [test "x$HAVE_DBUS" = x1])
1305 # udev and HAL depend on D-Bus: So double check if they were explicitly enabled.
1306 if test "x$HAVE_DBUS" != "x1" ; then
1307     HAVE_HAL=0
1308     if test "x${hal}" = xyes ; then
1309         AC_MSG_ERROR([*** D-Bus support is required by HAL])
1310     fi
1312     HAVE_BLUEZ=0
1313     if test "x${bluez}" = xyes ; then
1314         AC_MSG_ERROR([*** D-Bus support is required by BLUEZ])
1315     fi
1319 #### HAL compat support (optional) ####
1321 AC_ARG_ENABLE([hal-compat],
1322     AS_HELP_STRING([--disable-hal-compat],[Disable optional HAL->udev transition compatibility support]),
1323         [
1324             case "${enableval}" in
1325                 yes) halcompat=yes ;;
1326                 no) halcompat=no ;;
1327                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-hal-compat) ;;
1328             esac
1329         ],
1330         [halcompat=auto])
1331 if test "x${halcompat}" != xno -a "x$HAVE_HAL" = "x0" -a "x$HAVE_UDEV" = "x1" ; then
1332     HAVE_HAL_COMPAT=1
1333     AC_DEFINE([HAVE_HAL_COMPAT], 1, [Have HAL compatibility.])
1334 else
1335     HAVE_HAL_COMPAT=0
1338 AC_SUBST(HAVE_HAL_COMPAT)
1339 AM_CONDITIONAL([HAVE_HAL_COMPAT], [test "x$HAVE_HAL_COMPAT" = x1])
1341 ### IPv6 connection support (optional) ###
1343 AC_ARG_ENABLE([ipv6],
1344     AS_HELP_STRING([--disable-ipv6],[Disable optional IPv6 support]),
1345         [
1346             case "${enableval}" in
1347                 yes) ipv6=yes ;;
1348                 no) ipv6=no ;;
1349                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-ipv6) ;;
1350             esac
1351         ],
1352         [ipv6=auto])
1354 if test "x${ipv6}" != xno ; then
1355     AC_DEFINE([HAVE_IPV6], [1], [Define this to enable IPv6 connection support])
1356     HAVE_IPV6=1
1357 else
1358     HAVE_IPV6=0
1361 #### OpenSSL support (optional) ####
1363 AC_ARG_ENABLE([openssl],
1364     AS_HELP_STRING([--disable-openssl],[Disable OpenSSL support (used for Airtunes/RAOP)]),
1365         [
1366             case "${enableval}" in
1367                 yes) openssl=yes ;;
1368                 no) openssl=no ;;
1369                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-openssl) ;;
1370             esac
1371         ],
1372         [openssl=auto])
1374 if test "x${openssl}" != xno ; then
1376     PKG_CHECK_MODULES(OPENSSL, [ openssl > 0.9 ],
1377         [
1378             HAVE_OPENSSL=1
1379             AC_DEFINE([HAVE_OPENSSL], 1, [Have OpenSSL])
1380         ],
1381         [
1382             HAVE_OPENSSL=0
1383             if test "x$openssl" = xyes ; then
1384                 AC_MSG_ERROR([*** OpenSSL support not found])
1385             fi
1386         ])
1387 else
1388     HAVE_OPENSSL=0
1391 AC_SUBST(OPENSSL_CFLAGS)
1392 AC_SUBST(OPENSSL_LIBS)
1393 AC_SUBST(HAVE_OPENSSL)
1394 AM_CONDITIONAL([HAVE_OPENSSL], [test "x$HAVE_OPENSSL" = x1])
1396 #### FFTW (optional) ####
1397 AC_ARG_WITH(
1398         [fftw],
1399         AS_HELP_STRING([--without-fftw], [Omit FFTW-using modules (equalizer)]))
1401 if test "x${with_fftw}" != "xno"; then
1402     PKG_CHECK_MODULES([FFTW], [fftw3f], [HAVE_FFTW=1], [HAVE_FFTW=0])
1404 AM_CONDITIONAL([HAVE_FFTW], [test "x$HAVE_FFTW" = "x1"])
1406 ### ORC (optional) ###
1407 ORC_CHECK([0.4.9])
1409 ### Build and Install man pages ###
1410 AC_ARG_ENABLE(manpages,
1411         AS_HELP_STRING([--disable-manpages],[Disable building and installation of man pages]),
1412 [case "${enableval}" in
1413   yes) manpages=yes ;;
1414   no)  manpages=no ;;
1415   *) AC_MSG_ERROR([bad value ${enableval} for --disable-manpages]) ;;
1416 esac],[manpages=yes])
1418 AM_CONDITIONAL([BUILD_MANPAGES], [test "x$manpages" = xyes])
1420 #### PulseAudio system group & user  #####
1422 AC_ARG_WITH(system_user, AS_HELP_STRING([--with-system-user=<user>],[User for running the PulseAudio daemon as a system-wide instance (pulse)]))
1423 if test -z "$with_system_user" ; then
1424     PA_SYSTEM_USER=pulse
1425 else
1426     PA_SYSTEM_USER=$with_system_user
1428 AC_SUBST(PA_SYSTEM_USER)
1429 AC_DEFINE_UNQUOTED(PA_SYSTEM_USER,"$PA_SYSTEM_USER", [User for running the PulseAudio system daemon])
1431 AC_ARG_WITH(system_group,AS_HELP_STRING([--with-system-group=<group>],[Group for running the PulseAudio daemon as a system-wide instance (pulse)]))
1432 if test -z "$with_system_group" ; then
1433     PA_SYSTEM_GROUP=pulse
1434 else
1435     PA_SYSTEM_GROUP=$with_system_group
1437 AC_SUBST(PA_SYSTEM_GROUP)
1438 AC_DEFINE_UNQUOTED(PA_SYSTEM_GROUP,"$PA_SYSTEM_GROUP", [Group for the PulseAudio system daemon])
1440 AC_ARG_WITH(access_group,AS_HELP_STRING([--with-access-group=<group>],[Group which is allowed access to a system-wide PulseAudio daemon (pulse-access)]))
1441 if test -z "$with_access_group" ; then
1442     PA_ACCESS_GROUP=pulse-access
1443 else
1444     PA_ACCESS_GROUP=$with_access_group
1446 AC_SUBST(PA_ACCESS_GROUP)
1447 AC_DEFINE_UNQUOTED(PA_ACCESS_GROUP,"$PA_ACCESS_GROUP", [Access group])
1449 AC_ARG_ENABLE(
1450         per_user_esound_socket,
1451         AS_HELP_STRING([--disable-per-user-esound-socket], [Use global esound socket directory /tmp/.esd/socket.]),
1452         [
1453             case "${enableval}" in
1454                 yes) per_user_esound_socket=1 ;;
1455                 no) per_user_esound_socket=0 ;;
1456                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-per-user-esound-socket) ;;
1457             esac
1458         ],
1459         [per_user_esound_socket=1])
1461 if test "x$per_user_esound_socket" = "x1"; then
1462    AC_DEFINE([USE_PER_USER_ESOUND_SOCKET], [1], [Define this if you want per-user esound socket directories])
1465 #### PulseAudio system runtime dir ####
1466 PA_SYSTEM_RUNTIME_PATH="${localstatedir}/run/pulse"
1467 AC_SUBST(PA_SYSTEM_RUNTIME_PATH)
1468 PA_SYSTEM_CONFIG_PATH="${localstatedir}/lib/pulse"
1469 AC_SUBST(PA_SYSTEM_CONFIG_PATH)
1470 PA_SYSTEM_STATE_PATH="${localstatedir}/lib/pulse"
1471 AC_SUBST(PA_SYSTEM_STATE_PATH)
1473 ###################################
1474 #            Output               #
1475 ###################################
1477 AC_ARG_ENABLE([legacy-runtime-dir],
1478         AS_HELP_STRING([--disable-legacy-runtime-dir], [Try to connect on legacy (< 0.9.12) socket paths.]))
1479 if test "x$enable_legacy_runtime_dir" != "xno" ; then
1480         AC_DEFINE(ENABLE_LEGACY_RUNTIME_DIR, [1], [Legacy runtime dir])
1483 AC_ARG_ENABLE(
1484         [static-bins],
1485         AS_HELP_STRING([--enable-static-bins],[Statically link executables.]),
1486         [STATIC_BINS=1], [STATIC_BINS=0])
1487 AM_CONDITIONAL([STATIC_BINS], [test "x$STATIC_BINS" = "x1"])
1489 AC_ARG_WITH(
1490         [preopen-mods],
1491         AS_HELP_STRING([--with-preopen-mods],[Modules to preopen in daemon (default: all).]),
1492         [PREOPEN_MODS=$withval], [PREOPEN_MODS="all"])
1493 AM_CONDITIONAL([PREOPEN_MODS], [test "x$PREOPEN_MODS" != "xall"])
1494 if test "x$PREOPEN_MODS" != "xall" ; then
1495     tmpLIBS=""
1496     for mod in $PREOPEN_MODS; do
1497         tmpLIBS="$tmpLIBS module-$mod.la"
1498     done
1499     PREOPEN_MODS="$tmpLIBS"
1500     AC_SUBST(PREOPEN_MODS)
1503 AC_ARG_WITH(
1504         [module-dir],
1505         AS_HELP_STRING([--with-module-dir],[Directory where to install the modules to (defaults to ${libdir}/pulse-${PA_MAJORMINOR}/modules]),
1506         [modlibexecdir=$withval], [modlibexecdir="${libdir}/pulse-${PA_MAJORMINOR}/modules"])
1508 AC_SUBST(modlibexecdir)
1510 AC_ARG_WITH(
1511         [udev-rules-dir],
1512         AS_HELP_STRING([--with-udev-rules-dir],[Directory where to install udev rules to (defaults to /lib/udev/rules.d)]),
1513         [udevrulesdir=$withval], [udevrulesdir="/lib/udev/rules.d"])
1515 AC_SUBST(udevrulesdir)
1517 AC_ARG_ENABLE(
1518         [force-preopen],
1519         AS_HELP_STRING([--enable-force-preopen],[Preopen modules, even when dlopen() is supported.]),
1520         [FORCE_PREOPEN=$enableval], [FORCE_PREOPEN=no])
1521 AM_CONDITIONAL([FORCE_PREOPEN], [test "x$FORCE_PREOPEN" = "xyes"])
1523 AC_CONFIG_FILES([
1524 Makefile
1525 src/Makefile
1526 man/Makefile
1527 libpulse.pc
1528 libpulse-simple.pc
1529 libpulse-browse.pc
1530 libpulse-mainloop-glib.pc
1531 doxygen/Makefile
1532 doxygen/doxygen.conf
1533 src/pulse/version.h
1534 po/Makefile.in
1537 AC_OUTPUT
1539 # ==========================================================================
1540 ENABLE_X11=no
1541 if test "x$HAVE_X11" = "x1" ; then
1542    ENABLE_X11=yes
1545 ENABLE_OSS_OUTPUT=no
1546 ENABLE_OSS_WRAPPER=no
1547 if test "x$HAVE_OSS" = "x1" ; then
1548    if test "x$enable_oss_output" != "xno"; then
1549       ENABLE_OSS_OUTPUT=yes
1550    fi
1551    if test "x$enable_oss_wrapper" != "xno"; then
1552       ENABLE_OSS_WRAPPER=yes
1553    fi
1556 ENABLE_COREAUDIO=no
1557 if test "x$HAVE_COREAUDIO" = "x1" ; then
1558    ENABLE_COREAUDIO=yes
1561 ENABLE_ALSA=no
1562 if test "x$HAVE_ALSA" = "x1" ; then
1563    ENABLE_ALSA=yes
1566 ENABLE_SOLARIS=no
1567 if test "x$HAVE_SOLARIS" = "x1" ; then
1568    ENABLE_SOLARIS=yes
1571 ENABLE_WAVEOUT=no
1572 if test "x$HAVE_WAVEOUT" = "x1" ; then
1573    ENABLE_WAVEOUT=yes
1576 ENABLE_GTK20=no
1577 if test "x$HAVE_GTK20" = "x1" ; then
1578    ENABLE_GTK20=yes
1581 ENABLE_GLIB20=no
1582 if test "x$HAVE_GLIB20" = "x1" ; then
1583    ENABLE_GLIB20=yes
1586 ENABLE_GCONF=no
1587 if test "x$HAVE_GCONF" = "x1" ; then
1588    ENABLE_GCONF=yes
1591 ENABLE_AVAHI=no
1592 if test "x$HAVE_AVAHI" = "x1" ; then
1593    ENABLE_AVAHI=yes
1596 ENABLE_JACK=no
1597 if test "x$HAVE_JACK" = "x1" ; then
1598    ENABLE_JACK=yes
1601 ENABLE_LIBASYNCNS=no
1602 if test "x$HAVE_LIBASYNCNS" = "x1" ; then
1603    ENABLE_LIBASYNCNS=yes
1606 ENABLE_LIRC=no
1607 if test "x$HAVE_LIRC" = "x1" ; then
1608    ENABLE_LIRC=yes
1611 ENABLE_DBUS=no
1612 if test "x$HAVE_DBUS" = "x1" ; then
1613    ENABLE_DBUS=yes
1616 ENABLE_HAL=no
1617 if test "x$HAVE_HAL" = "x1" ; then
1618    ENABLE_HAL=yes
1621 ENABLE_UDEV=no
1622 if test "x$HAVE_UDEV" = "x1" ; then
1623    ENABLE_UDEV=yes
1626 ENABLE_HAL_COMPAT=no
1627 if test "x$HAVE_HAL_COMPAT" = "x1" ; then
1628    ENABLE_HAL_COMPAT=yes
1631 ENABLE_TCPWRAP=no
1632 if test "x${LIBWRAP_LIBS}" != x ; then
1633    ENABLE_TCPWRAP=yes
1636 ENABLE_LIBSAMPLERATE=no
1637 if test "x${HAVE_LIBSAMPLERATE}" = "x1" ; then
1638    ENABLE_LIBSAMPLERATE=yes
1641 ENABLE_BLUEZ=no
1642 if test "x${HAVE_BLUEZ}" = "x1" ; then
1643    ENABLE_BLUEZ=yes
1646 ENABLE_GDBM=no
1647 if test "x${HAVE_GDBM}" = "x1" ; then
1648    ENABLE_GDBM=yes
1651 ENABLE_TDB=no
1652 if test "x${HAVE_TDB}" = "x1" ; then
1653    ENABLE_TDB=yes
1656 ENABLE_SIMPLEDB=no
1657 if test "x${HAVE_SIMPLEDB}" = "x1" ; then
1658     ENABLE_SIMPLEDB=yes
1661 ENABLE_FFTW=no
1662 if test "x${HAVE_FFTW}" = "x1" ; then
1663    ENABLE_FFTW=yes
1666 ENABLE_ORC=no
1667 if test "x${HAVE_ORC}" = "xyes" ; then
1668    ENABLE_ORC=yes
1671 ENABLE_OPENSSL=no
1672 if test "x${HAVE_OPENSSL}" = "x1" ; then
1673    ENABLE_OPENSSL=yes
1676 ENABLE_IPV6=no
1677 if test "x${HAVE_IPV6}" = "x1" ; then
1678    ENABLE_IPV6=yes
1681 ENABLE_PER_USER_ESOUND_SOCKET=no
1682 if test "x$per_user_esound_socket" = "x1" ; then
1683    ENABLE_PER_USER_ESOUND_SOCKET=yes
1686 echo "
1687  ---{ $PACKAGE_NAME $VERSION }---
1689     prefix:                        ${prefix}
1690     sysconfdir:                    ${sysconfdir}
1691     localstatedir:                 ${localstatedir}
1692     System Runtime Path:           ${PA_SYSTEM_RUNTIME_PATH}
1693     System State Path:             ${PA_SYSTEM_STATE_PATH}
1694     System Config Path:            ${PA_SYSTEM_CONFIG_PATH}
1695     Compiler:                      ${CC}
1696     CFLAGS:                        ${CFLAGS}
1697     LIBS:                          ${LIBS}
1699     Have X11:                      ${ENABLE_X11}
1700     Enable OSS Output:             ${ENABLE_OSS_OUTPUT}
1701     Enable OSS Wrapper:            ${ENABLE_OSS_WRAPPER}
1702     Enable CoreAudio:              ${ENABLE_COREAUDIO}
1703     Enable Alsa:                   ${ENABLE_ALSA}
1704     Enable Solaris:                ${ENABLE_SOLARIS}
1705     Enable WaveOut:                ${ENABLE_WAVEOUT}
1706     Enable GLib 2.0:               ${ENABLE_GLIB20}
1707     Enable Gtk+ 2.0:               ${ENABLE_GTK20}
1708     Enable GConf:                  ${ENABLE_GCONF}
1709     Enable Avahi:                  ${ENABLE_AVAHI}
1710     Enable Jack:                   ${ENABLE_JACK}
1711     Enable Async DNS:              ${ENABLE_LIBASYNCNS}
1712     Enable LIRC:                   ${ENABLE_LIRC}
1713     Enable D-Bus:                  ${ENABLE_DBUS}
1714       Enable HAL:                  ${ENABLE_HAL}
1715       Enable BlueZ:                ${ENABLE_BLUEZ}
1716     Enable udev:                   ${ENABLE_UDEV}
1717       Enable HAL->udev compat:     ${ENABLE_HAL_COMPAT}
1718     Enable TCP Wrappers:           ${ENABLE_TCPWRAP}
1719     Enable libsamplerate:          ${ENABLE_LIBSAMPLERATE}
1720     Enable IPv6:                   ${ENABLE_IPV6}
1721     Enable OpenSSL (for Airtunes): ${ENABLE_OPENSSL}
1722     Enable tdb:                    ${ENABLE_TDB}
1723     Enable gdbm:                   ${ENABLE_GDBM}
1724     Enable simple database:        ${ENABLE_SIMPLEDB}
1725     Enable fftw:                   ${ENABLE_FFTW}
1726     Enable orc:                    ${ENABLE_ORC}
1728     System User:                   ${PA_SYSTEM_USER}
1729     System Group:                  ${PA_SYSTEM_GROUP}
1730     Access Group:                  ${PA_ACCESS_GROUP}
1731     Enable per-user EsounD socket: ${ENABLE_PER_USER_ESOUND_SOCKET}
1732     Force preopen:                 ${FORCE_PREOPEN}
1733     Preopened modules:             ${PREOPEN_MODS}
1736 if test "${ENABLE_DBUS}" = "no" && test "x$os_is_win32" != "x1" ; then
1737    echo "
1738 ===== WARNING WARNING WARNING WARNING WARNING WARNING WARNING =====
1739 You do not have D-Bus support enabled. It is strongly recommended
1740 that you enable D-Bus support if your platform supports it.
1741 Many parts of PulseAudio use D-Bus, from ConsoleKit interaction
1742 to the Device Reservation Protocol to speak to JACK, Bluetooth
1743 support and even a native control protocol for communicating and
1744 controling the PulseAudio daemon itself.
1745 ===== WARNING WARNING WARNING WARNING WARNING WARNING WARNING =====
1749 if test "${ENABLE_UDEV}" = "no" && test "x$os_is_win32" != "x1" ; then
1750    echo "
1751 ===== WARNING WARNING WARNING WARNING WARNING WARNING WARNING =====
1752 You do not have udev support enabled. It is strongly recommended
1753 that you enable udev support if your platform supports it as it is
1754 the primary method used to detect hardware audio devices (on Linux)
1755 and is thus a critical part of PulseAudio on that platform.
1756 ===== WARNING WARNING WARNING WARNING WARNING WARNING WARNING =====