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