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