Simplify handling of NetBSD atomic ops discovery.
[platform/upstream/pulseaudio.git] / configure.ac
1 # -*- Autoconf -*-
2 # Process this file with autoconf to produce a configure script.
3
4 # This file is part of PulseAudio.
5 #
6 # Copyright 2004-2008 Lennart Poettering
7 # Copyright 2006-2007 Pierre Ossman <ossman@cendio.se> for Cendio AB
8 #
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.
13 #
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.
18 #
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.
22
23 AC_PREREQ(2.63)
24
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])
30
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`)
33 m4_define(pa_micro, `echo $VERSION | cut -d. -f3 | cut -d- -f1`)
34
35 AC_SUBST(PA_MAJOR, pa_major)
36 AC_SUBST(PA_MINOR, pa_minor)
37 AC_SUBST(PA_MICRO, pa_micro)
38 AC_SUBST(PA_MAJORMINOR, pa_major.pa_minor)
39 AC_SUBST(PA_MAJORMINORMICRO, pa_major.pa_minor.pa_micro)
40 AC_SUBST(PACKAGE_URL, [http://pulseaudio.org/])
41
42 AC_SUBST(PA_API_VERSION, 12)
43 AC_SUBST(PA_PROTOCOL_VERSION, 17)
44
45 # The stable ABI for client applications, for the version info x:y:z
46 # always will hold y=z
47 AC_SUBST(LIBPULSE_VERSION_INFO, [12:0:12])
48
49 # A simplified, synchronous, ABI-stable interface for client
50 # applications, for the version info x:y:z always will hold y=z
51 AC_SUBST(LIBPULSE_SIMPLE_VERSION_INFO, [0:3:0])
52
53 # The ABI-stable network browsing interface for client applications,
54 # for the version info x:y:z always will hold y=z
55 AC_SUBST(LIBPULSE_BROWSE_VERSION_INFO, [1:1:1])
56
57 # The ABI-stable GLib adapter for client applications, for the version
58 # info x:y:z always will hold y=z
59 AC_SUBST(LIBPULSE_MAINLOOP_GLIB_VERSION_INFO, [0:4:0])
60
61 AC_CANONICAL_HOST
62 AC_DEFINE_UNQUOTED([CANONICAL_HOST], "$host", [Canonical host string.])
63
64 AC_CHECK_PROG([STOW], [stow], [yes], [no])
65
66 AS_IF([test "x$STOW" = "xyes" && test -d /usr/local/stow], [
67    AC_MSG_NOTICE([*** Found /usr/local/stow: default install prefix set to /usr/local/stow/${PACKAGE_NAME}-${PACKAGE_VERSION} ***])
68    ac_default_prefix="/usr/local/stow/${PACKAGE_NAME}-${PACKAGE_VERSION}"
69 ])
70
71 AM_SILENT_RULES([yes])
72
73 #### Checks for programs. ####
74
75 # mkdir -p
76
77 AC_PROG_MKDIR_P
78
79 # CC
80
81 AC_PROG_CC
82 AC_PROG_CC_C99
83 AM_PROG_CC_C_O
84 AC_PROG_GCC_TRADITIONAL
85 AC_USE_SYSTEM_EXTENSIONS
86
87 #### Platform hacks ####
88
89 case $host in
90    *-*-solaris* )
91       AC_DEFINE(_XOPEN_SOURCE,        600, Needed to get declarations for msg_control and msg_controllen on Solaris)
92       AC_DEFINE(__EXTENSIONS__,         1, Needed to get declarations for msg_control and msg_controllen on Solaris)
93       ;;
94    *-*-darwin* )
95       AC_DEFINE([_POSIX_C_SOURCE], [200112L], [Needed to get clock_gettime on Mac OS X])
96       AC_DEFINE([_DARWIN_C_SOURCE], [200112L], [Needed to get NSIG on Mac OS X])
97       ;;
98 esac
99
100 # M4
101
102 AC_CHECK_PROGS([M4], gm4 m4, no)
103 if test "x$M4" = xno ; then
104    AC_MSG_ERROR([m4 missing])
105 fi
106
107 dnl Compiler flags
108 CC_CHECK_CFLAGS_APPEND([-Wall -W -Wextra -pipe -Wno-long-long -Winline -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=2 -Wwrite-strings -Wno-unused-parameter -ffast-math -Wp,-D_FORTIFY_SOURCE=2 -fno-common -fdiagnostics-show-option])
109
110 dnl Linker flags.
111 dnl Check whether the linker supports the -version-script option.
112
113 dnl This variable is used to make sure ${srcdir} is expanded and not
114 dnl passed to the CC_CHECK_LDFLAGS macro as a name.
115 tmp_ldflag="-Wl,-version-script=${srcdir}/src/map-file"
116
117 CC_CHECK_LDFLAGS([${tmp_ldflag}],
118     [VERSIONING_LDFLAGS='-Wl,-version-script=$(srcdir)/map-file'])
119 AC_SUBST([VERSIONING_LDFLAGS])
120
121 dnl Use immediate (now) bindings; avoids the funky re-call in itself
122 dnl  the -z now syntax is lifted from Sun's linker and works with GNU's too
123 dnl  other linkes might be added later
124 CC_CHECK_LDFLAGS([-Wl,-z,now], [IMMEDIATE_LDFLAGS="-Wl,-z,now"])
125 AC_SUBST([IMMEDIATE_LDFLAGS])
126
127 dnl On ELF systems we don't want the libraries to be unloaded since we
128 dnl don't clean them up properly, so we request the nodelete flag to be
129 dnl enabled.
130 dnl
131 dnl On other systems, we don't really know how to do that, but it's
132 dnl welcome if somebody can tell.
133 CC_CHECK_LDFLAGS([-Wl,-z,nodelete], [NODELETE_LDFLAGS="-Wl,-z,nodelete"])
134 AC_SUBST([NODELETE_LDFLAGS])
135
136 dnl Check for the proper way to build libraries that have no undefined
137 dnl symbols; on some hosts this needs to be avoided but the macro
138 dnl takes care of it.
139 CC_NOUNDEFINED
140
141 dnl Check whether to build tests by default (as compile-test) or not
142 AC_ARG_ENABLE([default-build-tests],
143     AS_HELP_STRING([--disable-default-build-tests], [Build test programs only during make check]))
144
145 AM_CONDITIONAL([BUILD_TESTS_DEFAULT], [test "x$enable_default_build_tests" != "xno"])
146
147 # Native atomic operation support
148 AC_ARG_ENABLE([atomic-arm-linux-helpers],
149     AS_HELP_STRING([--disable-atomic-arm-linux-helpers],[use inline asm or libatomic_ops instead]),
150         [
151             case "${enableval}" in
152                 yes) atomic_arm_linux_helpers=yes ;;
153                 no) atomic_arm_linux_helpers=no ;;
154                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-atomic-arm-linux-helpers) ;;
155             esac
156         ],
157         [atomic_arm_linux_helpers=auto])
158
159 AC_ARG_ENABLE([atomic-arm-memory-barrier],
160     AS_HELP_STRING([--enable-atomic-arm-memory-barrier],[only really needed in SMP arm systems]),
161         [
162             case "${enableval}" in
163                 yes) AC_DEFINE_UNQUOTED(ATOMIC_ARM_MEMORY_BARRIER_ENABLED, 1, [Enable memory barriers]) ;;
164                 no) ;;
165                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-atomic-arm-linux-helpers) ;;
166             esac
167         ],)
168
169 AC_MSG_CHECKING([target operating system])
170 case $host in
171         *-*-linux*)
172             AC_MSG_RESULT([linux])
173             pulse_target_os=linux
174         ;;
175         *)
176             AC_MSG_RESULT([unknown])
177             pulse_target_os=unknown
178         ;;
179 esac
180
181 # If everything else fails use libatomic_ops
182 need_libatomic_ops=yes
183
184 AC_CACHE_CHECK([whether $CC knows __sync_bool_compare_and_swap()],
185   pulseaudio_cv_sync_bool_compare_and_swap,
186   [AC_LINK_IFELSE(
187      AC_LANG_PROGRAM([], [[int a = 4; __sync_bool_compare_and_swap(&a, 4, 5);]]),
188      [pulseaudio_cv_sync_bool_compare_and_swap=yes],
189      [pulseaudio_cv_sync_bool_compare_and_swap=no])
190   ])
191
192 if test "$pulseaudio_cv_sync_bool_compare_and_swap" = "yes" ; then
193     AC_DEFINE([HAVE_ATOMIC_BUILTINS], 1, [Have __sync_bool_compare_and_swap() and friends.])
194     need_libatomic_ops=no
195 else
196     # HW specific atomic ops stuff
197     AC_MSG_CHECKING([architecture for native atomic operations])
198     case $host in
199         arm*)
200             AC_MSG_RESULT([arm])
201             AC_MSG_CHECKING([whether we can use Linux kernel helpers])
202             # The Linux kernel helper functions have been there since 2.6.16. However
203             # compile time checking for kernel version in cross compile environment
204             # (which is usually the case for arm cpu) is tricky (or impossible).
205             if test "x$pulse_target_os" = "xlinux" && test "x$atomic_arm_linux_helpers" != "xno"; then
206                 AC_MSG_RESULT([yes])
207                 AC_DEFINE_UNQUOTED(ATOMIC_ARM_LINUX_HELPERS, 1, [special arm linux implementation])
208                 need_libatomic_ops=no
209             else
210                AC_MSG_RESULT([no])
211                AC_CACHE_CHECK([compiler support for arm inline asm atomic operations],
212                  pulseaudio_cv_support_arm_atomic_ops,
213                  [AC_COMPILE_IFELSE(
214                     AC_LANG_PROGRAM([],
215                       [[volatile int a=0;
216                         int o=0, n=1, r;
217                         asm volatile ("ldrex    %0, [%1]\n"
218                                          "subs  %0, %0, %2\n"
219                                          "strexeq %0, %3, [%1]\n"
220                                          : "=&r" (r)
221                                          : "r" (&a), "Ir" (o), "r" (n)
222                                          : "cc");
223                         return (a==1 ? 0 : -1);
224                       ]]),
225                     [pulseaudio_cv_support_arm_atomic_ops=yes],
226                     [pulseaudio_cv_support_arm_atomic_ops=no])
227                  ])
228                AS_IF([test "$pulseaudio_cv_support_arm_atomic_ops" = "yes"], [
229                    AC_DEFINE([ATOMIC_ARM_INLINE_ASM], 1, [Have ARMv6 instructions.])
230                    need_libatomic_ops=no
231                  ])
232            fi
233         ;;
234         *-netbsdelf5*)
235             AC_MSG_RESULT([yes])
236             need_libatomic_ops=no
237         ;;
238         *)
239             AC_MSG_RESULT([unknown])
240         ;;
241     esac
242 fi
243
244 CC_CHECK_TLS
245
246 AC_CACHE_CHECK([whether $CC knows _Bool],
247   pulseaudio_cv__Bool,
248   [AC_COMPILE_IFELSE(
249      AC_LANG_PROGRAM([], [[_Bool b;]]),
250      [pulseaudio_cv__Bool=yes],
251      [pulseaudio_cv__Bool=no])
252   ])
253
254 AS_IF([test "$pulseaudio_cv__Bool" = "yes"], [
255     AC_DEFINE([HAVE_STD_BOOL], 1, [Have _Bool.])
256   ])
257
258 #### libtool stuff ####
259 LT_PREREQ(2.2)
260 LT_INIT([dlopen win32-dll disable-static])
261
262 dnl Unfortunately, even up to libtool 2.2.6a there is no way to know
263 dnl exactly which version of libltdl is present in the system, so we
264 dnl just assume that it's a working version as long as we have the
265 dnl library and the header files.
266 dnl
267 dnl As an extra safety device, check for lt_dladvise_init() which is
268 dnl only implemented in libtool 2.x, and refine as we go if we have
269 dnl refined requirements.
270 dnl
271 dnl Check the header files first since the system may have a
272 dnl libltdl.so for runtime, but no headers, and we want to bail out as
273 dnl soon as possible.
274 dnl
275 dnl We don't need any special variable for this though, since the user
276 dnl can give the proper place to find libltdl through the standard
277 dnl variables like LDFLAGS and CPPFLAGS.
278
279 AC_CHECK_HEADER([ltdl.h],
280     [AC_CHECK_LIB([ltdl], [lt_dladvise_init], [LIBLTDL=-lltdl], [LIBLTDL=])],
281     [LIBLTDL=])
282
283 AS_IF([test "x$LIBLTDL" = "x"],
284     [AC_MSG_ERROR([Unable to find libltdl version 2. Makes sure you have libtool 2.2 or later installed.])])
285 AC_SUBST([LIBLTDL])
286
287 #### Determine build environment ####
288
289 os_is_win32=0
290
291 case "$host_os" in
292         mingw*)
293         AC_DEFINE([OS_IS_WIN32], 1, [Build target is Windows.])
294         os_is_win32=1
295                 ;;
296         esac
297
298 AM_CONDITIONAL(OS_IS_WIN32, test "x$os_is_win32" = "x1")
299
300 ###################################
301 #   Basic environment checks      #
302 ###################################
303
304 #### Checks for header files. ####
305
306 # ISO
307 AC_HEADER_STDC
308
309 # POSIX
310 AC_CHECK_HEADERS_ONCE([arpa/inet.h glob.h grp.h netdb.h netinet/in.h \
311     netinet/in_systm.h netinet/tcp.h poll.h pwd.h sched.h \
312     sys/mman.h sys/resource.h sys/select.h sys/socket.h sys/wait.h \
313     sys/uio.h syslog.h sys/dl.h dlfcn.h linux/sockios.h])
314 AC_CHECK_HEADERS([netinet/ip.h], [], [],
315                  [#include <sys/types.h>
316                   #if HAVE_NETINET_IN_H
317                   # include <netinet/in.h>
318                   #endif
319                   #if HAVE_NETINET_IN_SYSTM_H
320                   # include <netinet/in_systm.h>
321                   #endif
322                  ])
323 AC_CHECK_HEADERS([regex.h], [HAVE_REGEX=1], [HAVE_REGEX=0])
324 AC_CHECK_HEADERS([sys/un.h], [HAVE_AF_UNIX=1], [HAVE_AF_UNIX=0])
325
326 AM_CONDITIONAL(HAVE_REGEX, test "x$HAVE_REGEX" = "x1")
327 AM_CONDITIONAL(HAVE_AF_UNIX, test "x$HAVE_AF_UNIX" = "x1")
328
329 # Linux
330 AC_CHECK_HEADERS([linux/input.h], [HAVE_EVDEV=1], [HAVE_EVDEV=0])
331
332 AM_CONDITIONAL([HAVE_EVDEV], [test "x$HAVE_EVDEV" = "x1"])
333
334 AC_CHECK_HEADERS_ONCE([sys/prctl.h])
335
336 # Solaris
337 AC_CHECK_HEADERS_ONCE([sys/filio.h])
338
339 # Windows
340 AC_CHECK_HEADERS_ONCE([windows.h winsock2.h ws2tcpip.h])
341
342 # NetBSD
343 AC_CHECK_HEADERS_ONCE([sys/atomic.h])
344
345 # Other
346 AC_CHECK_HEADERS_ONCE([sys/ioctl.h])
347 AC_CHECK_HEADERS_ONCE([byteswap.h])
348 AC_CHECK_HEADERS_ONCE([sys/syscall.h])
349 AC_CHECK_HEADERS_ONCE([sys/eventfd.h])
350 AC_CHECK_HEADERS_ONCE([execinfo.h])
351
352 #### Typdefs, structures, etc. ####
353
354 AC_C_CONST
355 AC_C_BIGENDIAN
356 AC_TYPE_PID_T
357 AC_TYPE_SIZE_T
358 AC_CHECK_TYPES(ssize_t, , [AC_DEFINE([ssize_t], [signed long],
359     [Define ssize_t if it is not done by the standard libs.])])
360 AC_TYPE_OFF_T
361
362 AC_TYPE_UID_T
363 AC_CHECK_DECLS(environ)
364
365 AC_CHECK_DEFINE([SIGXCPU], [signal.h], [
366 HAVE_SIGXCPU=1
367 AC_DEFINE([HAVE_SIGXCPU], 1, [Have SIGXCPU?])
368 ], [HAVE_SIGXCPU=0])
369 AM_CONDITIONAL(HAVE_SIGXCPU, test "x$HAVE_SIGXCPU" = "x1")
370
371 # Solaris lacks this
372 AC_CHECK_DEFINE([INADDR_NONE], [netinet/in.h], [],
373     [AC_CHECK_DEFINE([INADDR_NONE], [winsock2.h], [],
374         [AC_DEFINE([INADDR_NONE],  [0xffffffff], [Define INADDR_NONE if not found in <netinet/in.h>])])])
375
376 #### POSIX threads ####
377
378 ACX_PTHREAD
379
380 #### Check for libs ####
381
382 # ISO
383 AC_SEARCH_LIBS([pow], [m])
384
385 # POSIX
386 AC_SEARCH_LIBS([sched_setscheduler], [rt])
387 AC_SEARCH_LIBS([dlopen], [dl])
388 AC_SEARCH_LIBS([shm_open], [rt])
389 AC_SEARCH_LIBS([inet_ntop], [nsl])
390 AC_SEARCH_LIBS([timer_create], [rt])
391
392 # BSD
393 AC_SEARCH_LIBS([connect], [socket])
394 AC_SEARCH_LIBS([backtrace], [execinfo])
395
396 # Non-standard
397
398 # This magic is needed so we do not needlessly add static libs to the win32
399 # build, disabling its ability to make dlls.
400 AC_CHECK_FUNCS([getopt_long], [], [AC_CHECK_LIB([iberty], [getopt_long])])
401
402 #### Check for functions ####
403
404 # ISO
405 AC_CHECK_FUNCS_ONCE([lrintf strtof])
406
407 # POSIX
408 AC_FUNC_FORK
409 AC_FUNC_GETGROUPS
410 AC_FUNC_SELECT_ARGTYPES
411 AC_CHECK_FUNCS_ONCE([chmod chown clock_gettime getaddrinfo getgrgid_r getgrnam_r \
412     getpwnam_r getpwuid_r gettimeofday getuid inet_ntop inet_pton mlock nanosleep \
413     pipe posix_fadvise posix_madvise posix_memalign setpgid setsid shm_open \
414     sigaction sleep sysconf pthread_setaffinity_np])
415 AC_CHECK_FUNCS([mkfifo], [HAVE_MKFIFO=1], [HAVE_MKFIFO=0])
416
417 AM_CONDITIONAL(HAVE_MKFIFO, test "x$HAVE_MKFIFO" = "x1")
418
419 # X/OPEN
420 AC_CHECK_FUNCS_ONCE([readlink])
421
422 # SUSv2
423 AC_CHECK_FUNCS_ONCE([ctime_r usleep])
424
425 # SUSv3
426 AC_CHECK_FUNCS_ONCE([strerror_r])
427
428 # BSD
429 AC_CHECK_FUNCS_ONCE([lstat])
430
431 # Non-standard
432
433 AC_CHECK_FUNCS_ONCE([setresuid setresgid setreuid setregid seteuid setegid ppoll strsignal sig2str strtof_l pipe2 accept4])
434
435 AC_FUNC_ALLOCA
436
437 AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
438   pulseaudio_cv_PTHREAD_PRIO_INHERIT,
439   [save_CC=$CC; CC=$PTHREAD_CC
440    save_CFLAGS=$CFLAGS; CFLAGS=$PTHREAD_CFLAGS
441    save_LIBS=$LIBS; LIBS=$PTHREAD_LIBS
442    AC_LINK_IFELSE(
443      AC_LANG_PROGRAM(
444        [[
445          #include <pthread.h>
446        ]],
447        [[int i = PTHREAD_PRIO_INHERIT;]]),
448      [pulseaudio_cv_PTHREAD_PRIO_INHERIT=yes],
449      [pulseaudio_cv_PTHREAD_PRIO_INHERIT=no])
450    CC=$save_CC
451    CFLAGS=$save_CFLAGS
452    LIBS=$save_LIBS
453   ])
454
455 AS_IF([test "$pulseaudio_cv_PTHREAD_PRIO_INHERIT" = "yes"], [
456     AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], 1, [Have PTHREAD_PRIO_INHERIT.])
457   ])
458
459 AC_DEFINE_UNQUOTED(PA_CFLAGS,"$CFLAGS", [The CFLAGS used during compilation])
460
461 #### Large File-Support (LFS) ####
462
463 AC_SYS_LARGEFILE
464
465 # Check for open64 to know if the current system does have open64() and similar functions
466 AC_CHECK_FUNCS_ONCE([open64])
467
468 #### [lib]iconv ####
469
470 AM_ICONV
471
472 IT_PROG_INTLTOOL([0.35.0])
473 GETTEXT_PACKAGE=pulseaudio
474 AC_SUBST([GETTEXT_PACKAGE])
475 AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],["$GETTEXT_PACKAGE"],[Gettext package])
476 AM_GLIB_GNU_GETTEXT
477
478 pulselocaledir='${prefix}/${DATADIRNAME}/locale'
479 AC_SUBST(pulselocaledir)
480
481 ###################################
482 #      External libraries         #
483 ###################################
484
485 #### pkg-config ####
486
487 PKG_PROG_PKG_CONFIG
488
489 #### X11 (optional) ####
490
491 AC_ARG_ENABLE([x11],
492     AS_HELP_STRING([--disable-x11],[Disable optional X11 support]),
493         [
494             case "${enableval}" in
495                 yes) x11=yes ;;
496                 no) x11=no ;;
497                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-x11) ;;
498             esac
499         ],
500         [x11=auto])
501
502 if test "x${x11}" != xno ; then
503     PKG_CHECK_MODULES(X11, [ x11 ice sm xtst ],
504         HAVE_X11=1,
505         [
506             HAVE_X11=0
507             if test "x$x11" = xyes ; then
508                 AC_MSG_ERROR([*** X11 not found])
509             fi
510         ])
511 else
512     HAVE_X11=0
513 fi
514
515 if test "x${HAVE_X11}" = x1 ; then
516    AC_DEFINE([HAVE_X11], 1, [Have X11?])
517 fi
518
519 AC_SUBST(X11_CFLAGS)
520 AC_SUBST(X11_LIBS)
521 AC_SUBST(HAVE_X11)
522 AM_CONDITIONAL([HAVE_X11], [test "x$HAVE_X11" = x1])
523
524 #### Capabilities (optional) ####
525
526 CAP_LIBS=''
527
528 AC_ARG_WITH(
529         [caps],
530         AS_HELP_STRING([--without-caps],[Omit support for POSIX capabilities.]))
531
532 if test "x${with_caps}" != "xno"; then
533     AC_SEARCH_LIBS([cap_init], [cap], [], [
534                     if test "x${with_caps}" = "xyes" ; then
535                         AC_MSG_ERROR([*** POSIX caps libraries not found])
536                     fi])
537     AC_CHECK_HEADERS([sys/capability.h], [], [
538                     if test "x${with_caps}" = "xyes" ; then
539                         AC_MSG_ERROR([*** POSIX caps headers not found])
540                     fi])
541 fi
542
543 #### Valgrind (optional) ####
544
545 AC_CHECK_HEADERS_ONCE([valgrind/memcheck.h])
546
547 #### Sound file ####
548
549 PKG_CHECK_MODULES(LIBSNDFILE, [ sndfile >= 1.0.20 ])
550 AC_SUBST(LIBSNDFILE_CFLAGS)
551 AC_SUBST(LIBSNDFILE_LIBS)
552
553 PKG_CHECK_MODULES(LIBSPEEX, [ speexdsp >= 1.2 ])
554 AC_SUBST(LIBSPEEX_CFLAGS)
555 AC_SUBST(LIBSPEEX_LIBS)
556
557 #### atomic-ops ###
558
559 AC_MSG_CHECKING([whether we need libatomic_ops])
560 if test "x$need_libatomic_ops" = "xyes"; then
561    AC_MSG_RESULT([yes])
562    AC_CHECK_HEADERS([atomic_ops.h], [], [
563    AC_MSG_ERROR([*** libatomic-ops headers not found])
564    ])
565
566    # Win32 does not need the lib and breaks horribly if we try to include it
567    if test "x$os_is_win32" != "x1" ; then
568        LIBS="$LIBS -latomic_ops"
569    fi
570 else
571    AC_MSG_RESULT([no])
572 fi
573
574 #### Libsamplerate support (optional) ####
575
576 AC_ARG_ENABLE([samplerate],
577     AS_HELP_STRING([--disable-samplerate],[Disable optional libsamplerate support]),
578         [
579             case "${enableval}" in
580                 yes) samplerate=yes ;;
581                 no) samplerate=no ;;
582                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-samplerate) ;;
583             esac
584         ],
585         [samplerate=auto])
586
587 if test "x${samplerate}" != xno ; then
588     PKG_CHECK_MODULES(LIBSAMPLERATE, [ samplerate >= 0.1.0 ],
589         HAVE_LIBSAMPLERATE=1,
590         [
591             HAVE_LIBSAMPLERATE=0
592             if test "x$samplerate" = xyes ; then
593                 AC_MSG_ERROR([*** Libsamplerate not found])
594             fi
595         ])
596 else
597     HAVE_LIBSAMPLERATE=0
598 fi
599
600 if test "x${HAVE_LIBSAMPLERATE}" = x1 ; then
601    AC_DEFINE([HAVE_LIBSAMPLERATE], 1, [Have libsamplerate?])
602 fi
603
604 AC_SUBST(LIBSAMPLERATE_CFLAGS)
605 AC_SUBST(LIBSAMPLERATE_LIBS)
606 AC_SUBST(HAVE_LIBSAMPLERATE)
607 AM_CONDITIONAL([HAVE_LIBSAMPLERATE], [test "x$HAVE_LIBSAMPLERATE" = x1])
608
609 #### Database support ####
610
611 HAVE_TDB=0
612 HAVE_GDBM=0
613 HAVE_SIMPLEDB=0
614
615 AC_ARG_WITH(
616         [database],
617         AS_HELP_STRING([--with-database=auto|tdb|gdbm|simple],[Choose database backend.]),[],[with_database=auto])
618
619 if test "x${with_database}" = "xauto" -o "x${with_database}" = "xtdb" ; then
620     PKG_CHECK_MODULES(TDB, [ tdb ],
621         [
622             HAVE_TDB=1
623             with_database=tdb
624         ], [
625             if test "x${with_database}" = "xtdb" ; then
626                 AC_MSG_ERROR([*** tdb not found])
627             fi
628         ])
629 fi
630
631 if test "x${with_database}" = "xauto" -o "x${with_database}" = "xgdbm" ; then
632    have_gdbm=yes
633
634    AC_CHECK_LIB(gdbm, gdbm_open, [], [have_gdbm=no])
635    AC_CHECK_HEADERS(gdbm.h, [], [have_gdbm=no])
636
637    if test "x${have_gdbm}" = "xyes" ; then
638        HAVE_GDBM=1
639        GDBM_CFLAGS=
640        GDBM_LIBS=-lgdbm
641        with_database=gdbm
642    elif test "x${with_database}" = "xgdbm"; then
643        AC_MSG_ERROR([*** gdbm not found])
644    fi
645 fi
646
647 if test "x${with_database}" = "xauto" -o "x${with_database}" = "xsimple" ; then
648     HAVE_SIMPLEDB=1
649     with_database=simple
650 fi
651
652 if test "x${HAVE_TDB}" != x1 -a "x${HAVE_GDBM}" != x1 -a "x${HAVE_SIMPLEDB}" != x1; then
653    AC_MSG_ERROR([*** missing database backend])
654 fi
655
656 if test "x${HAVE_TDB}" = x1 ; then
657    AC_DEFINE([HAVE_TDB], 1, [Have tdb?])
658 fi
659
660 if test "x${HAVE_GDBM}" = x1 ; then
661    AC_DEFINE([HAVE_GDBM], 1, [Have gdbm?])
662 fi
663
664 if test "x${HAVE_SIMPLEDB}" = x1 ; then
665     AC_DEFINE([HAVE_SIMPLEDB], 1, [Have simple?])
666 fi
667
668 AC_SUBST(TDB_CFLAGS)
669 AC_SUBST(TDB_LIBS)
670 AC_SUBST(HAVE_TDB)
671 AM_CONDITIONAL([HAVE_TDB], [test "x$HAVE_TDB" = x1])
672
673 AC_SUBST(GDBM_CFLAGS)
674 AC_SUBST(GDBM_LIBS)
675 AC_SUBST(HAVE_GDBM)
676 AM_CONDITIONAL([HAVE_GDBM], [test "x$HAVE_GDBM" = x1])
677
678 AC_SUBST(HAVE_SIMPLEDB)
679 AM_CONDITIONAL([HAVE_SIMPLEDB], [test "x$HAVE_SIMPLEDB" = x1])
680
681 #### OSS support (optional) ####
682
683 AC_ARG_ENABLE([oss-output],
684     AS_HELP_STRING([--disable-oss-output],[Disable optional OSS output support]),
685         [
686             case "${enableval}" in
687                 yes) oss_output=yes ;;
688                 no) oss_output=no ;;
689                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-oss-output) ;;
690             esac
691         ],
692         [oss_output=auto])
693
694 AC_ARG_ENABLE([oss-wrapper],
695     AS_HELP_STRING([--disable-oss-wrapper],[Disable optional OSS wrapper support]),
696         [
697             case "${enableval}" in
698                 yes) oss_wrapper=yes ;;
699                 no) oss_wrapper=no ;;
700                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-oss-wrapper) ;;
701             esac
702         ],
703         [oss_wrapper=auto])
704
705 if test "x${oss_output}" != xno || test "x${oss_wrapper}" != "xno"; then
706     AC_CHECK_HEADERS([sys/soundcard.h],
707         [
708             if test "x${oss_output}" != "xno"; then
709                 AC_DEFINE([HAVE_OSS_OUTPUT], 1, [Have OSS output?])
710             fi
711             if test "x${oss_wrapper}" != "xno"; then
712                 AC_DEFINE([HAVE_OSS_WRAPPER], 1, [Have OSS wrapper (padsp)?])
713             fi
714             HAVE_OSS=1
715         ],
716         [
717             HAVE_OSS=0
718             if test "x$oss_output" = xyes || test "x$oss_wrapper" = "xyes"; then
719                 AC_MSG_ERROR([*** OSS support not found])
720             fi
721         ])
722 else
723     HAVE_OSS=0
724 fi
725
726 AC_SUBST(HAVE_OSS)
727 AM_CONDITIONAL([HAVE_OSS_OUTPUT], [test "x$HAVE_OSS" = x1 && test "x${oss_output}" != "xno"])
728 AM_CONDITIONAL([HAVE_OSS_WRAPPER], [test "x$HAVE_OSS" = x1 && test "x${oss_wrapper}" != "xno"])
729
730 #### CoreAudio support (optional) ####
731
732 AC_ARG_ENABLE([coreaudio-output],
733     AS_HELP_STRING([--disable-coreaudio-output],[Disable optional CoreAudio output support]),
734         [
735             case "${enableval}" in
736                 yes) coreaudio_enabled=yes ;;
737                 no) coreaudio_enabled=no ;;
738                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-coreaudio-output) ;;
739             esac
740         ],
741         [coreaudio_enabled=auto])
742
743 if test "x${coreaudio_enabled}" != xno ; then
744     AC_CHECK_HEADERS([CoreAudio/CoreAudio.h], HAVE_COREAUDIO=1)
745 else
746     HAVE_COREAUDIO=0
747 fi
748
749 AC_SUBST(HAVE_COREAUDIO)
750 AM_CONDITIONAL([HAVE_COREAUDIO], [test "x$HAVE_COREAUDIO" = x1 && test "x${coreaudio_enabled}" != "xno"])
751
752 #### ALSA support (optional) ####
753
754 AC_ARG_ENABLE([alsa],
755     AS_HELP_STRING([--disable-alsa],[Disable optional ALSA support]),
756         [
757             case "${enableval}" in
758                 yes) alsa=yes ;;
759                 no) alsa=no ;;
760                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-alsa) ;;
761             esac
762         ],
763         [alsa=auto])
764
765 if test "x${alsa}" != xno ; then
766     PKG_CHECK_MODULES(ASOUNDLIB, [ alsa >= 1.0.19 ],
767         [
768             HAVE_ALSA=1
769             AC_DEFINE([HAVE_ALSA], 1, [Have ALSA?])
770         ],
771         [
772             HAVE_ALSA=0
773             if test "x$alsa" = xyes ; then
774                 AC_MSG_ERROR([*** Needed alsa >= 1.0.19 support not found])
775             fi
776         ])
777 else
778     HAVE_ALSA=0
779 fi
780
781 AC_SUBST(ASOUNDLIB_CFLAGS)
782 AC_SUBST(ASOUNDLIB_LIBS)
783 AC_SUBST(HAVE_ALSA)
784 AM_CONDITIONAL([HAVE_ALSA], [test "x$HAVE_ALSA" = x1])
785
786 #### Solaris audio support (optional) ####
787
788 AC_ARG_ENABLE([solaris],
789     AS_HELP_STRING([--disable-solaris],[Disable optional Solaris audio support]),
790         [
791             case "${enableval}" in
792                 yes) solaris=yes ;;
793                 no) solaris=no ;;
794                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-solaris) ;;
795             esac
796         ],
797         [solaris=auto])
798
799 if test "x${solaris}" != xno ; then
800     AC_CHECK_HEADERS([sys/audio.h],
801         [
802             HAVE_SOLARIS=1
803             AC_DEFINE([HAVE_SOLARIS], 1, [Have Solaris audio?])
804         ],
805         [
806             HAVE_SOLARIS=0
807             if test "x$solaris" = xyes ; then
808                 AC_MSG_ERROR([*** Solaris audio support not found])
809             fi
810         ])
811 else
812     HAVE_SOLARIS=0
813 fi
814
815 AC_SUBST(HAVE_SOLARIS)
816 AM_CONDITIONAL([HAVE_SOLARIS], [test "x$HAVE_SOLARIS" = x1])
817
818 #### GLib 2 support (optional) ####
819
820 AC_ARG_ENABLE([glib2],
821     AS_HELP_STRING([--disable-glib2],[Disable optional GLib 2 support]),
822         [
823             case "${enableval}" in
824                 yes) glib2=yes ;;
825                 no) glib2=no ;;
826                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-glib2) ;;
827             esac
828         ],
829         [glib2=auto])
830
831 if test "x${glib2}" != xno ; then
832     PKG_CHECK_MODULES(GLIB20, [ glib-2.0 >= 2.4.0 ],
833         HAVE_GLIB20=1,
834         [
835             HAVE_GLIB20=0
836             if test "x$glib2" = xyes ; then
837                 AC_MSG_ERROR([*** GLib 2 support not found])
838             fi
839         ])
840 else
841     HAVE_GLIB20=0
842 fi
843
844 AC_SUBST(GLIB20_CFLAGS)
845 AC_SUBST(GLIB20_LIBS)
846 AC_SUBST(HAVE_GLIB20)
847 AM_CONDITIONAL([HAVE_GLIB20], [test "x$HAVE_GLIB20" = x1])
848
849 if test "x$HAVE_GLIB20" = x1 ; then
850    AC_DEFINE([HAVE_GLIB], 1, [Have GLIB?])
851 fi
852
853 #### GTK2 support (optional) ####
854
855 AC_ARG_ENABLE([gtk2],
856     AS_HELP_STRING([--disable-gtk2],[Disable optional Gtk+ 2 support]),
857         [
858             case "${enableval}" in
859                 yes) gtk2=yes ;;
860                 no) gtk2=no ;;
861                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-gtk2) ;;
862             esac
863         ],
864         [gtk2=auto])
865
866 if test "x${gtk2}" != xno ; then
867     PKG_CHECK_MODULES(GTK20, [ gtk+-2.0 >= 2.4.0 ],
868         HAVE_GTK20=1,
869         [
870             HAVE_GTK20=0
871             if test "x$gtk2" = xyes ; then
872                 AC_MSG_ERROR([*** Gtk+ 2 support not found])
873             fi
874         ])
875 else
876     HAVE_GTK20=0
877 fi
878
879 AC_SUBST(GTK20_CFLAGS)
880 AC_SUBST(GTK20_LIBS)
881 AC_SUBST(HAVE_GTK20)
882 AM_CONDITIONAL([HAVE_GTK20], [test "x$HAVE_GTK20" = x1])
883
884 if test "x$HAVE_GTK20" = x1 ; then
885    AC_DEFINE([HAVE_GTK], 1, [Have GTK?])
886 fi
887
888 #### GConf support (optional) ####
889
890 AC_ARG_ENABLE([gconf],
891     AS_HELP_STRING([--disable-gconf],[Disable optional GConf support]),
892         [
893             case "${enableval}" in
894                 yes) gconf=yes ;;
895                 no) gconf=no ;;
896                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-gconf) ;;
897             esac
898         ],
899         [gconf=auto])
900
901 if test "x${gconf}" != xno ; then
902     PKG_CHECK_MODULES(GCONF, [ gconf-2.0 >= 2.4.0 ],
903         HAVE_GCONF=1,
904         [
905             HAVE_GCONF=0
906             if test "x$gconf" = xyes ; then
907                 AC_MSG_ERROR([*** GConf support not found])
908             fi
909         ])
910 else
911     HAVE_GCONF=0
912 fi
913
914 AC_SUBST(GCONF_CFLAGS)
915 AC_SUBST(GCONF_LIBS)
916 AC_SUBST(HAVE_GCONF)
917 AM_CONDITIONAL([HAVE_GCONF], [test "x$HAVE_GCONF" = x1])
918
919 #### Avahi support (optional) ####
920
921 AC_ARG_ENABLE([avahi],
922     AS_HELP_STRING([--disable-avahi],[Disable optional Avahi support]),
923         [
924             case "${enableval}" in
925                 yes) avahi=yes ;;
926                 no) avahi=no ;;
927                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-avahi) ;;
928             esac
929         ],
930         [avahi=auto])
931
932 if test "x${avahi}" != xno ; then
933     PKG_CHECK_MODULES(AVAHI, [ avahi-client >= 0.6.0 ],
934         HAVE_AVAHI=1,
935         [
936                 HAVE_AVAHI=0
937                 if test "x$avahi" = xyes ; then
938                         AC_MSG_ERROR([*** Avahi support not found])
939                 fi
940         ])
941 else
942     HAVE_AVAHI=0
943 fi
944
945 AC_SUBST(AVAHI_CFLAGS)
946 AC_SUBST(AVAHI_LIBS)
947 AC_SUBST(HAVE_AVAHI)
948 AM_CONDITIONAL([HAVE_AVAHI], [test "x$HAVE_AVAHI" = x1])
949
950 ### JACK (optional) ####
951
952 AC_ARG_ENABLE([jack],
953     AS_HELP_STRING([--disable-jack],[Disable optional JACK support]),
954         [
955             case "${enableval}" in
956                 yes) jack=yes ;;
957                 no) jack=no ;;
958                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-jack) ;;
959             esac
960         ],
961         [jack=auto])
962
963 if test "x${jack}" != xno ; then
964     PKG_CHECK_MODULES(JACK, [ jack >= 0.100 ],
965         HAVE_JACK=1,
966         [
967             HAVE_JACK=0
968             if test "x$jack" = xyes ; then
969                 AC_MSG_ERROR([*** JACK support not found])
970             fi
971         ])
972 else
973     HAVE_JACK=0
974 fi
975
976 AC_SUBST(JACK_CFLAGS)
977 AC_SUBST(JACK_LIBS)
978 AC_SUBST(HAVE_JACK)
979 AM_CONDITIONAL([HAVE_JACK], [test "x$HAVE_JACK" = x1])
980
981 #### Async DNS support (optional) ####
982
983 AC_ARG_ENABLE([asyncns],
984     AS_HELP_STRING([--disable-asyncns],[Disable optional Async DNS support]),
985         [
986             case "${enableval}" in
987                 yes) asyncns=yes ;;
988                 no) asyncns=no ;;
989                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-asyncns) ;;
990             esac
991         ],
992         [asyncns=auto])
993
994 if test "x${asyncns}" != xno ; then
995     PKG_CHECK_MODULES(LIBASYNCNS, [ libasyncns >= 0.1 ],
996         HAVE_LIBASYNCNS=1,
997         [
998             HAVE_LIBASYNCNS=0
999             if test "x$asyncns" = xyes ; then
1000                 AC_MSG_ERROR([*** Async DNS support not found])
1001             fi
1002         ])
1003 else
1004     HAVE_LIBASYNCNS=0
1005 fi
1006
1007 AC_SUBST(LIBASYNCNS_CFLAGS)
1008 AC_SUBST(LIBASYNCNS_LIBS)
1009 AC_SUBST(HAVE_LIBASYNCNS)
1010 AM_CONDITIONAL([HAVE_LIBASYNCNS], [test "x$HAVE_LIBASYNCNS" = x1])
1011
1012 if test "x$HAVE_LIBASYNCNS" != "x0" ; then
1013    AC_DEFINE([HAVE_LIBASYNCNS], 1, [Have libasyncns?])
1014 fi
1015
1016 #### TCP wrappers (optional) ####
1017
1018 AC_ARG_ENABLE([tcpwrap],
1019     AS_HELP_STRING([--disable-tcpwrap],[Disable optional TCP wrappers support]),
1020         [
1021             case "${enableval}" in
1022                 yes) tcpwrap=yes ;;
1023                 no) tcpwrap=no ;;
1024                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-tcpwrap) ;;
1025             esac
1026         ],
1027         [tcpwrap=auto])
1028
1029 if test "x${tcpwrap}" != xno ; then
1030     ACX_LIBWRAP
1031     if test "x${LIBWRAP_LIBS}" = x && test "x$tcpwrap" = xyes ; then
1032         AC_MSG_ERROR([*** TCP wrappers support not found])
1033     fi
1034 else
1035     LIBWRAP_LIBS=
1036 fi
1037
1038 AC_SUBST(LIBWRAP_LIBS)
1039
1040 #### LIRC support (optional) ####
1041
1042 AC_ARG_ENABLE([lirc],
1043     AS_HELP_STRING([--disable-lirc],[Disable optional LIRC support]),
1044         [
1045             case "${enableval}" in
1046                 yes) lirc=yes ;;
1047                 no) lirc=no ;;
1048                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-lirc) ;;
1049             esac
1050         ],
1051         [lirc=auto])
1052
1053 if test "x${lirc}" != xno ; then
1054     ACX_LIRC
1055     if test "x${HAVE_LIRC}" = x0 && test "x$lirc" = xyes ; then
1056         AC_MSG_ERROR([*** LIRC support not found])
1057     fi
1058 else
1059     HAVE_LIRC=0
1060 fi
1061
1062 AC_SUBST(LIRC_CFLAGS)
1063 AC_SUBST(LIRC_LIBS)
1064 AM_CONDITIONAL([HAVE_LIRC], [test "x$HAVE_LIRC" = x1])
1065
1066 #### HAL support (optional) ####
1067
1068 AC_ARG_ENABLE([hal],
1069     AS_HELP_STRING([--disable-hal],[Disable optional HAL support]),
1070         [
1071             case "${enableval}" in
1072                 yes) hal=yes ;;
1073                 no) hal=no ;;
1074                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-hal) ;;
1075             esac
1076         ],
1077         [hal=auto])
1078 if test "x${hal}" != xno -a \( "x$HAVE_OSS" = "x1" -o "x$HAVE_ALSA" = "x1" \) ; then
1079     PKG_CHECK_MODULES(HAL, [ hal >= 0.5.11 ],
1080         [
1081             HAVE_HAL=1
1082             AC_DEFINE([HAVE_HAL], 1, [Have HAL.])
1083         ],
1084         [
1085             HAVE_HAL=0
1086             if test "x$hal" = xyes ; then
1087                 AC_MSG_ERROR([*** HAL support not found])
1088             fi
1089         ])
1090 else
1091     HAVE_HAL=0
1092 fi
1093
1094 AC_SUBST(HAL_CFLAGS)
1095 AC_SUBST(HAL_LIBS)
1096 AC_SUBST(HAVE_HAL)
1097 AM_CONDITIONAL([HAVE_HAL], [test "x$HAVE_HAL" = x1])
1098
1099 #### UDEV support (optional) ####
1100
1101 AC_ARG_ENABLE([udev],
1102     AS_HELP_STRING([--disable-udev],[Disable optional UDEV support]),
1103         [
1104             case "${enableval}" in
1105                 yes) udev=yes ;;
1106                 no) udev=no ;;
1107                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-udev) ;;
1108             esac
1109         ],
1110         [udev=auto])
1111 if test "x${udev}" != xno -a \( "x$HAVE_OSS" = "x1" -o "x$HAVE_ALSA" = "x1" \) ; then
1112     PKG_CHECK_MODULES(UDEV, [ libudev >= 143 ],
1113         [
1114             HAVE_UDEV=1
1115             AC_DEFINE([HAVE_UDEV], 1, [Have UDEV.])
1116         ],
1117         [
1118             HAVE_UDEV=0
1119             if test "x$udev" = xyes ; then
1120                 AC_MSG_ERROR([*** UDEV support not found])
1121             fi
1122         ])
1123 else
1124     HAVE_UDEV=0
1125 fi
1126
1127 AC_SUBST(UDEV_CFLAGS)
1128 AC_SUBST(UDEV_LIBS)
1129 AC_SUBST(HAVE_UDEV)
1130 AM_CONDITIONAL([HAVE_UDEV], [test "x$HAVE_UDEV" = x1])
1131
1132 #### HAL compat support (optional) ####
1133
1134 AC_ARG_ENABLE([hal-compat],
1135     AS_HELP_STRING([--disable-hal-compat],[Disable optional HAL->udev transition compatibility support]),
1136         [
1137             case "${enableval}" in
1138                 yes) halcompat=yes ;;
1139                 no) halcompat=no ;;
1140                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-hal-compat) ;;
1141             esac
1142         ],
1143         [halcompat=auto])
1144 if test "x${halcompat}" != xno -a "x$HAVE_HAL" = "x0" -a "x$HAVE_UDEV" = "x1" ; then
1145     HAVE_HAL_COMPAT=1
1146     AC_DEFINE([HAVE_HAL_COMPAT], 1, [Have HAL compatibility.])
1147 else
1148     HAVE_HAL_COMPAT=0
1149 fi
1150
1151 AC_SUBST(HAVE_HAL_COMPAT)
1152 AM_CONDITIONAL([HAVE_HAL_COMPAT], [test "x$HAVE_HAL_COMPAT" = x1])
1153
1154 #### BlueZ support (optional) ####
1155
1156 AC_ARG_ENABLE([bluez],
1157     AS_HELP_STRING([--disable-bluez],[Disable optional BlueZ support]),
1158         [
1159             case "${enableval}" in
1160                 yes) bluez=yes ;;
1161                 no) bluez=no ;;
1162                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-bluez) ;;
1163             esac
1164         ],
1165         [bluez=auto])
1166 if test "x${bluez}" != xno ; then
1167     PKG_CHECK_MODULES(BLUEZ, [ bluez >= 3.0 ],
1168         HAVE_BLUEZ=1,
1169         [
1170             HAVE_BLUEZ=0
1171             if test "x$bluez" = xyes ; then
1172                 AC_MSG_ERROR([*** BLUEZ support not found])
1173             fi
1174         ])
1175 else
1176     HAVE_BLUEZ=0
1177 fi
1178
1179 AC_SUBST(BLUEZ_CFLAGS)
1180 AC_SUBST(BLUEZ_LIBS)
1181 AC_SUBST(HAVE_BLUEZ)
1182 AM_CONDITIONAL([HAVE_BLUEZ], [test "x$HAVE_BLUEZ" = x1])
1183
1184 #### D-Bus support (optional) ####
1185
1186 AC_ARG_ENABLE([dbus],
1187     AS_HELP_STRING([--disable-dbus],[Disable optional D-Bus support]),
1188         [
1189             case "${enableval}" in
1190                 yes) dbus=yes ;;
1191                 no) dbus=no ;;
1192                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-dbus) ;;
1193             esac
1194         ],
1195         [dbus=auto])
1196
1197 if test "x$HAVE_HAL" = x1 ; then
1198    dbus=yes
1199 fi
1200
1201 if test "x${dbus}" != xno || test "x${bluez}" != xno || test "x${hal}" != xno ; then
1202
1203     PKG_CHECK_MODULES(DBUS, [ dbus-1 >= 1.0.0 ],
1204         [
1205             HAVE_DBUS=1
1206             saved_LIBS="$LIBS"
1207             LIBS="$LIBS $DBUS_LIBS"
1208             CFLAGS="$CFLAGS $DBUS_CFLAGS"
1209             AC_CHECK_FUNCS(dbus_watch_get_unix_fd)
1210             LIBS="$saved_LIBS"
1211             AC_DEFINE([HAVE_DBUS], 1, [Have D-Bus.])
1212         ],
1213         [
1214             HAVE_DBUS=0
1215             if test "x$dbus" = xyes ; then
1216                 AC_MSG_ERROR([*** D-Bus support not found])
1217             fi
1218         ])
1219 else
1220     HAVE_DBUS=0
1221 fi
1222
1223 AC_SUBST(DBUS_CFLAGS)
1224 AC_SUBST(DBUS_LIBS)
1225 AC_SUBST(HAVE_DBUS)
1226 AM_CONDITIONAL([HAVE_DBUS], [test "x$HAVE_DBUS" = x1])
1227
1228 ### IPv6 connection support (optional) ###
1229
1230 AC_ARG_ENABLE([ipv6],
1231     AS_HELP_STRING([--disable-ipv6],[Disable optional IPv6 support]),
1232         [
1233             case "${enableval}" in
1234                 yes) ipv6=yes ;;
1235                 no) ipv6=no ;;
1236                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-ipv6) ;;
1237             esac
1238         ],
1239         [ipv6=auto])
1240
1241 if test "x${ipv6}" != xno ; then
1242     AC_DEFINE([HAVE_IPV6], [1], [Define this to enable IPv6 connection support])
1243     HAVE_IPV6=1
1244 else
1245     HAVE_IPV6=0
1246 fi
1247
1248 #### OpenSSL support (optional) ####
1249
1250 AC_ARG_ENABLE([openssl],
1251     AS_HELP_STRING([--disable-openssl],[Disable OpenSSL support (used for Airtunes/RAOP)]),
1252         [
1253             case "${enableval}" in
1254                 yes) openssl=yes ;;
1255                 no) openssl=no ;;
1256                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-openssl) ;;
1257             esac
1258         ],
1259         [openssl=auto])
1260
1261 if test "x${openssl}" != xno ; then
1262
1263     PKG_CHECK_MODULES(OPENSSL, [ openssl > 0.9 ],
1264         [
1265             HAVE_OPENSSL=1
1266             AC_DEFINE([HAVE_OPENSSL], 1, [Have OpenSSL])
1267         ],
1268         [
1269             HAVE_OPENSSL=0
1270             if test "x$openssl" = xyes ; then
1271                 AC_MSG_ERROR([*** OpenSSL support not found])
1272             fi
1273         ])
1274 else
1275     HAVE_OPENSSL=0
1276 fi
1277
1278 AC_SUBST(OPENSSL_CFLAGS)
1279 AC_SUBST(OPENSSL_LIBS)
1280 AC_SUBST(HAVE_OPENSSL)
1281 AM_CONDITIONAL([HAVE_OPENSSL], [test "x$HAVE_OPENSSL" = x1])
1282
1283 #### FFTW (optional) ####
1284 AC_ARG_WITH(
1285         [fftw],
1286         AS_HELP_STRING([--without-fftw], [Omit FFTW-using modules (equalizer)]))
1287
1288 if test "x${with_fftw}" != "xno"; then
1289     PKG_CHECK_MODULES([FFTW], [fftw3f], [HAVE_FFTW=1], [HAVE_FFTW=0])
1290 fi
1291 AM_CONDITIONAL([HAVE_FFTW], [test "x$HAVE_FFTW" = "x1"])
1292
1293 ### Build and Install man pages ###
1294 AC_ARG_ENABLE(manpages,
1295         AS_HELP_STRING([--disable-manpages],[Disable building and installation of man pages]),
1296 [case "${enableval}" in
1297   yes) manpages=yes ;;
1298   no)  manpages=no ;;
1299   *) AC_MSG_ERROR([bad value ${enableval} for --disable-manpages]) ;;
1300 esac],[manpages=yes])
1301
1302 AM_CONDITIONAL([BUILD_MANPAGES], [test "x$manpages" = xyes])
1303
1304 #### PulseAudio system group & user  #####
1305
1306 AC_ARG_WITH(system_user, AS_HELP_STRING([--with-system-user=<user>],[User for running the PulseAudio daemon as a system-wide instance (pulse)]))
1307 if test -z "$with_system_user" ; then
1308     PA_SYSTEM_USER=pulse
1309 else
1310     PA_SYSTEM_USER=$with_system_user
1311 fi
1312 AC_SUBST(PA_SYSTEM_USER)
1313 AC_DEFINE_UNQUOTED(PA_SYSTEM_USER,"$PA_SYSTEM_USER", [User for running the PulseAudio system daemon])
1314
1315 AC_ARG_WITH(system_group,AS_HELP_STRING([--with-system-group=<group>],[Group for running the PulseAudio daemon as a system-wide instance (pulse)]))
1316 if test -z "$with_system_group" ; then
1317     PA_SYSTEM_GROUP=pulse
1318 else
1319     PA_SYSTEM_GROUP=$with_system_group
1320 fi
1321 AC_SUBST(PA_SYSTEM_GROUP)
1322 AC_DEFINE_UNQUOTED(PA_SYSTEM_GROUP,"$PA_SYSTEM_GROUP", [Group for the PulseAudio system daemon])
1323
1324 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)]))
1325 if test -z "$with_access_group" ; then
1326     PA_ACCESS_GROUP=pulse-access
1327 else
1328     PA_ACCESS_GROUP=$with_access_group
1329 fi
1330 AC_SUBST(PA_ACCESS_GROUP)
1331 AC_DEFINE_UNQUOTED(PA_ACCESS_GROUP,"$PA_ACCESS_GROUP", [Access group])
1332
1333 AC_ARG_ENABLE(
1334         per_user_esound_socket,
1335         AS_HELP_STRING([--disable-per-user-esound-socket], [Use global esound socket directory /tmp/.esd/socket.]),
1336         [
1337             case "${enableval}" in
1338                 yes) per_user_esound_socket=1 ;;
1339                 no) per_user_esound_socket=0 ;;
1340                 *) AC_MSG_ERROR(bad value ${enableval} for --disable-per-user-esound-socket) ;;
1341             esac
1342         ],
1343         [per_user_esound_socket=1])
1344
1345 if test "x$per_user_esound_socket" = "x1"; then
1346    AC_DEFINE([USE_PER_USER_ESOUND_SOCKET], [1], [Define this if you want per-user esound socket directories])
1347 fi
1348
1349 #### PulseAudio system runtime dir ####
1350 PA_SYSTEM_RUNTIME_PATH="${localstatedir}/run/pulse"
1351 AC_SUBST(PA_SYSTEM_RUNTIME_PATH)
1352 PA_SYSTEM_CONFIG_PATH="${localstatedir}/lib/pulse"
1353 AC_SUBST(PA_SYSTEM_CONFIG_PATH)
1354 PA_SYSTEM_STATE_PATH="${localstatedir}/lib/pulse"
1355 AC_SUBST(PA_SYSTEM_STATE_PATH)
1356
1357 ###################################
1358 #            Output               #
1359 ###################################
1360
1361 AC_ARG_ENABLE([legacy-runtime-dir],
1362         AS_HELP_STRING([--disable-legacy-runtime-dir], [Try to connect on legacy (< 0.9.12) socket paths.]))
1363 if test "x$enable_legacy_runtime_dir" != "xno" ; then
1364         AC_DEFINE(ENABLE_LEGACY_RUNTIME_DIR, [1], [Legacy runtime dir])
1365 fi
1366
1367 AC_ARG_ENABLE(
1368         [static-bins],
1369         AS_HELP_STRING([--enable-static-bins],[Statically link executables.]),
1370         [STATIC_BINS=1], [STATIC_BINS=0])
1371 AM_CONDITIONAL([STATIC_BINS], [test "x$STATIC_BINS" = "x1"])
1372
1373 AC_ARG_WITH(
1374         [preopen-mods],
1375         AS_HELP_STRING([--with-preopen-mods],[Modules to preopen in daemon (default: all).]),
1376         [PREOPEN_MODS=$withval], [PREOPEN_MODS="all"])
1377 AM_CONDITIONAL([PREOPEN_MODS], [test "x$PREOPEN_MODS" != "xall"])
1378 if test "x$PREOPEN_MODS" != "xall" ; then
1379     tmpLIBS=""
1380     for mod in $PREOPEN_MODS; do
1381         tmpLIBS="$tmpLIBS module-$mod.la"
1382     done
1383     PREOPEN_MODS="$tmpLIBS"
1384     AC_SUBST(PREOPEN_MODS)
1385 fi
1386
1387 AC_ARG_WITH(
1388         [module-dir],
1389         AS_HELP_STRING([--with-module-dir],[Directory where to install the modules to (defaults to ${libdir}/pulse-${PA_MAJORMINORMICRO}/modules]),
1390         [modlibexecdir=$withval], [modlibexecdir="${libdir}/pulse-${PA_MAJORMINORMICRO}/modules"])
1391
1392 AC_SUBST(modlibexecdir)
1393
1394 AC_ARG_ENABLE(
1395         [force-preopen],
1396         AS_HELP_STRING([--enable-force-preopen],[Preopen modules, even when dlopen() is supported.]),
1397         [FORCE_PREOPEN=$enableval], [FORCE_PREOPEN=no])
1398 AM_CONDITIONAL([FORCE_PREOPEN], [test "x$FORCE_PREOPEN" = "xyes"])
1399
1400 AC_CONFIG_FILES([
1401 Makefile
1402 src/Makefile
1403 man/Makefile
1404 libpulse.pc
1405 libpulse-simple.pc
1406 libpulse-browse.pc
1407 libpulse-mainloop-glib.pc
1408 doxygen/Makefile
1409 doxygen/doxygen.conf
1410 src/pulse/version.h
1411 po/Makefile.in
1412 ])
1413
1414 AC_OUTPUT
1415
1416 # ==========================================================================
1417 ENABLE_X11=no
1418 if test "x$HAVE_X11" = "x1" ; then
1419    ENABLE_X11=yes
1420 fi
1421
1422 ENABLE_OSS_OUTPUT=no
1423 ENABLE_OSS_WRAPPER=no
1424 if test "x$HAVE_OSS" = "x1" ; then
1425    if test "x$enable_oss_output" != "xno"; then
1426       ENABLE_OSS_OUTPUT=yes
1427    fi
1428    if test "x$enable_oss_wrapper" != "xno"; then
1429       ENABLE_OSS_WRAPPER=yes
1430    fi
1431 fi
1432
1433 ENABLE_COREAUDIO=no
1434 if test "x$HAVE_COREAUDIO" = "x1" ; then
1435    ENABLE_COREAUDIO=yes
1436 fi
1437
1438 ENABLE_ALSA=no
1439 if test "x$HAVE_ALSA" = "x1" ; then
1440    ENABLE_ALSA=yes
1441 fi
1442
1443 ENABLE_SOLARIS=no
1444 if test "x$HAVE_SOLARIS" = "x1" ; then
1445    ENABLE_SOLARIS=yes
1446 fi
1447
1448 ENABLE_GTK20=no
1449 if test "x$HAVE_GTK20" = "x1" ; then
1450    ENABLE_GTK20=yes
1451 fi
1452
1453 ENABLE_GLIB20=no
1454 if test "x$HAVE_GLIB20" = "x1" ; then
1455    ENABLE_GLIB20=yes
1456 fi
1457
1458 ENABLE_GCONF=no
1459 if test "x$HAVE_GCONF" = "x1" ; then
1460    ENABLE_GCONF=yes
1461 fi
1462
1463 ENABLE_AVAHI=no
1464 if test "x$HAVE_AVAHI" = "x1" ; then
1465    ENABLE_AVAHI=yes
1466 fi
1467
1468 ENABLE_JACK=no
1469 if test "x$HAVE_JACK" = "x1" ; then
1470    ENABLE_JACK=yes
1471 fi
1472
1473 ENABLE_LIBASYNCNS=no
1474 if test "x$HAVE_LIBASYNCNS" = "x1" ; then
1475    ENABLE_LIBASYNCNS=yes
1476 fi
1477
1478 ENABLE_LIRC=no
1479 if test "x$HAVE_LIRC" = "x1" ; then
1480    ENABLE_LIRC=yes
1481 fi
1482
1483 ENABLE_HAL=no
1484 if test "x$HAVE_HAL" = "x1" ; then
1485    ENABLE_HAL=yes
1486 fi
1487
1488 ENABLE_UDEV=no
1489 if test "x$HAVE_UDEV" = "x1" ; then
1490    ENABLE_UDEV=yes
1491 fi
1492
1493 ENABLE_HAL_COMPAT=no
1494 if test "x$HAVE_HAL_COMPAT" = "x1" ; then
1495    ENABLE_HAL_COMPAT=yes
1496 fi
1497
1498 ENABLE_TCPWRAP=no
1499 if test "x${LIBWRAP_LIBS}" != x ; then
1500    ENABLE_TCPWRAP=yes
1501 fi
1502
1503 ENABLE_LIBSAMPLERATE=no
1504 if test "x${HAVE_LIBSAMPLERATE}" = "x1" ; then
1505    ENABLE_LIBSAMPLERATE=yes
1506 fi
1507
1508 ENABLE_BLUEZ=no
1509 if test "x${HAVE_BLUEZ}" = "x1" ; then
1510    ENABLE_BLUEZ=yes
1511 fi
1512
1513 ENABLE_GDBM=no
1514 if test "x${HAVE_GDBM}" = "x1" ; then
1515    ENABLE_GDBM=yes
1516 fi
1517
1518 ENABLE_TDB=no
1519 if test "x${HAVE_TDB}" = "x1" ; then
1520    ENABLE_TDB=yes
1521 fi
1522
1523 ENABLE_SIMPLEDB=no
1524 if test "x${HAVE_SIMPLEDB}" = "x1" ; then
1525     ENABLE_SIMPLEDB=yes
1526 fi
1527
1528 ENABLE_FFTW=no
1529 if test "x${HAVE_FFTW}" = "x1" ; then
1530    ENABLE_FFTW=yes
1531 fi
1532
1533 ENABLE_OPENSSL=no
1534 if test "x${HAVE_OPENSSL}" = "x1" ; then
1535    ENABLE_OPENSSL=yes
1536 fi
1537
1538 ENABLE_IPV6=no
1539 if test "x${HAVE_IPV6}" = "x1" ; then
1540    ENABLE_IPV6=yes
1541 fi
1542
1543 ENABLE_PER_USER_ESOUND_SOCKET=no
1544 if test "x$per_user_esound_socket" = "x1" ; then
1545    ENABLE_PER_USER_ESOUND_SOCKET=yes
1546 fi
1547
1548 echo "
1549  ---{ $PACKAGE_NAME $VERSION }---
1550
1551     prefix:                        ${prefix}
1552     sysconfdir:                    ${sysconfdir}
1553     localstatedir:                 ${localstatedir}
1554     System Runtime Path:           ${PA_SYSTEM_RUNTIME_PATH}
1555     System State Path:             ${PA_SYSTEM_STATE_PATH}
1556     System Config Path:            ${PA_SYSTEM_CONFIG_PATH}
1557     Compiler:                      ${CC}
1558     CFLAGS:                        ${CFLAGS}
1559
1560     Have X11:                      ${ENABLE_X11}
1561     Enable OSS Output:             ${ENABLE_OSS_OUTPUT}
1562     Enable OSS Wrapper:            ${ENABLE_OSS_WRAPPER}
1563     Enable CoreAudio:              ${ENABLE_COREAUDIO}
1564     Enable Alsa:                   ${ENABLE_ALSA}
1565     Enable Solaris:                ${ENABLE_SOLARIS}
1566     Enable GLib 2.0:               ${ENABLE_GLIB20}
1567     Enable Gtk+ 2.0:               ${ENABLE_GTK20}
1568     Enable GConf:                  ${ENABLE_GCONF}
1569     Enable Avahi:                  ${ENABLE_AVAHI}
1570     Enable Jack:                   ${ENABLE_JACK}
1571     Enable Async DNS:              ${ENABLE_LIBASYNCNS}
1572     Enable LIRC:                   ${ENABLE_LIRC}
1573     Enable HAL:                    ${ENABLE_HAL}
1574     Enable udev:                   ${ENABLE_UDEV}
1575     Enable HAL->udev compat:       ${ENABLE_HAL_COMPAT}
1576     Enable BlueZ:                  ${ENABLE_BLUEZ}
1577     Enable TCP Wrappers:           ${ENABLE_TCPWRAP}
1578     Enable libsamplerate:          ${ENABLE_LIBSAMPLERATE}
1579     Enable IPv6:                   ${ENABLE_IPV6}
1580     Enable OpenSSL (for Airtunes): ${ENABLE_OPENSSL}
1581     Enable tdb:                    ${ENABLE_TDB}
1582     Enable gdbm:                   ${ENABLE_GDBM}
1583     Enable simple database:        ${ENABLE_SIMPLEDB}
1584     Enable fftw:                   ${ENABLE_FFTW}
1585
1586     System User:                   ${PA_SYSTEM_USER}
1587     System Group:                  ${PA_SYSTEM_GROUP}
1588     Access Group:                  ${PA_ACCESS_GROUP}
1589     Enable per-user EsounD socket: ${ENABLE_PER_USER_ESOUND_SOCKET}
1590     Force preopen:                 ${FORCE_PREOPEN}
1591     Preopened modules:             ${PREOPEN_MODS}
1592 "