release: update changelog
[platform/upstream/pulseaudio.git] / configure.ac
1 # -*- Autoconf -*-
2 # Process this file with autoconf to produce a configure script.
3
4 # This file is part of PulseAudio.
5 #
6 # Copyright 2004-2008 Lennart Poettering
7 # Copyright 2006-2007 Pierre Ossman <ossman@cendio.se> for Cendio AB
8 #
9 # PulseAudio is free software; you can redistribute it and/or modify it
10 # under the terms of the GNU Lesser General Public License as published by
11 # the Free Software Foundation; either version 2 of the License, or
12 # (at your option) any later version.
13 #
14 # PulseAudio is distributed in the hope that it will be useful, but
15 # WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 # General Public License for more details.
18 #
19 # You should have received a copy of the GNU Lesser General Public License
20 # along with PulseAudio; if not, write to the Free Software Foundation,
21 # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
22
23 AC_PREREQ(2.63)
24
25 AC_INIT([pulseaudio],[m4_esyscmd(./git-version-gen .tarball-version)],[pulseaudio-discuss (at) lists (dot) freedesktop (dot) org],[pulseaudio],[http://pulseaudio.org/])
26 AC_CONFIG_SRCDIR([src/daemon/main.c])
27 AC_CONFIG_MACRO_DIR([m4])
28 AC_CONFIG_HEADERS([config.h])
29 AC_CONFIG_AUX_DIR([build-aux])
30 AM_INIT_AUTOMAKE([foreign 1.11 -Wall -Wno-portability subdir-objects silent-rules color-tests dist-xz tar-ustar])
31
32 AS_IF([! test -n "$VERSION"], [
33    AC_MSG_ERROR([git-version-gen failed])
34 ])
35
36 m4_define(pa_major, `echo $VERSION | cut -d. -f1 | cut -d- -f1`)
37 m4_define(pa_minor, `echo $VERSION | cut -d. -f2 | cut -d- -f1`)
38
39 AC_SUBST(PA_MAJOR, pa_major)
40 AC_SUBST(PA_MINOR, pa_minor)
41 AC_SUBST(PA_MAJORMINOR, pa_major.pa_minor)
42
43 AC_SUBST(PA_API_VERSION, 12)
44 AC_SUBST(PA_PROTOCOL_VERSION, 29)
45
46 # The stable ABI for client applications, for the version info x:y:z
47 # always will hold y=z
48 AC_SUBST(LIBPULSE_VERSION_INFO, [16:2:16])
49
50 # A simplified, synchronous, ABI-stable interface for client
51 # applications, for the version info x:y:z always will hold y=z
52 AC_SUBST(LIBPULSE_SIMPLE_VERSION_INFO, [0:4:0])
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 # Only required if you want the WebRTC canceller -- no runtime dep on
83 # libstdc++ otherwise
84 AC_PROG_CXX
85 AC_PROG_GCC_TRADITIONAL
86 AC_USE_SYSTEM_EXTENSIONS
87
88 # M4
89
90 AC_CHECK_PROGS([M4], gm4 m4, no)
91 AS_IF([test "x$M4" = "xno"], AC_MSG_ERROR([m4 missing]))
92
93 # pkg-config
94
95 PKG_PROG_PKG_CONFIG
96
97 # gettext
98
99 if test "x$enable_nls" != "xno"; then
100 IT_PROG_INTLTOOL([0.35.0])
101
102 AM_GNU_GETTEXT_VERSION([0.18.1])
103 AM_GNU_GETTEXT([external])
104
105 GETTEXT_PACKAGE=pulseaudio
106 AC_SUBST([GETTEXT_PACKAGE])
107 AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],["$GETTEXT_PACKAGE"],[Gettext package])
108
109 pulselocaledir='${prefix}/${DATADIRNAME}/locale'
110 AX_DEFINE_DIR(PULSE_LOCALEDIR, pulselocaledir, [Gettext locale dir])
111 else
112 # workaround till an intltool m4 bug is fixed upstream
113 # (https://bugs.launchpad.net/intltool/+bug/904647)
114 USE_NLS=no
115 AC_SUBST(USE_NLS)
116 fi
117
118
119 #### Determine host OS ####
120
121 os_is_linux=0
122 os_is_win32=0
123 os_is_darwin=0
124
125 AC_MSG_CHECKING([host operating system])
126 case "$host_os" in
127     linux*)
128         AC_MSG_RESULT([linux])
129         os_is_linux=1
130     ;;
131     darwin*)
132         AC_MSG_RESULT([darwin])
133         os_is_darwin=1
134         AC_DEFINE([OS_IS_DARWIN], 1, [Build target is Darwin.])
135     ;;
136     mingw*)
137         AC_MSG_RESULT([win32])
138         os_is_win32=1
139         AC_DEFINE([OS_IS_WIN32], 1, [Build target is Windows.])
140     ;;
141     *)
142         AC_MSG_RESULT([unknown])
143     ;;
144 esac
145
146 AM_CONDITIONAL(OS_IS_DARWIN, test "x$os_is_darwin" = "x1")
147 AM_CONDITIONAL(OS_IS_WIN32, test "x$os_is_win32" = "x1")
148 AC_SUBST([OS_IS_WIN32], [$os_is_win32])
149
150 # Platform specific hacks
151 case "$host_os" in
152     darwin* )
153         AC_DEFINE([_DARWIN_C_SOURCE], [200112L], [Needed to get NSIG on Mac OS X])
154     ;;
155     mingw* )
156         AC_DEFINE([WIN32_LEAN_AND_MEAN], 1, [Needed to avoid including unnecessary headers on Windows])
157     ;;
158     solaris* )
159         AC_DEFINE(_XOPEN_SOURCE,       600, [Needed to get declarations for msg_control and msg_controllen on Solaris])
160         AC_DEFINE(__EXTENSIONS__,        1, [Needed to get declarations for msg_control and msg_controllen on Solaris])
161     ;;
162 esac
163
164
165 #### Compiler flags ####
166
167 AX_APPEND_COMPILE_FLAGS(
168     [-Wall -W -Wextra -pipe -Wno-long-long -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 -fno-common -fdiagnostics-show-option],
169     [], [-pedantic -Werror])
170
171 # Only enable fastpath asserts when doing a debug build, e.g. from bootstrap.sh.
172 AS_CASE([" $CFLAGS "], [*" -O0 "*], [], [AX_APPEND_FLAG(["-DFASTPATH"], [CPPFLAGS])])
173
174 # Only set _FORTIFY_SOURCE when optimizations are enabled. If optimizations
175 # are disabled, _FORTIFY_SOURCE doesn't do anything, and causes tons of
176 # warnings during compiling on some distributions (at least Fedora).
177 AS_CASE([" $CFLAGS "], [*" -O0 "*], [], [AX_APPEND_FLAG(["-D_FORTIFY_SOURCE=2"], [CPPFLAGS])])
178
179
180 #### Linker flags ####
181
182 # Check whether the linker supports the -version-script option.
183 # The Make variable $(srcdir) needs to be in the LDFLAGS in that form,
184 # so that it is expanded the right way in every subdir.
185 AX_CHECK_LINK_FLAG(["-Wl,-version-script=${srcdir}/src/map-file"],
186     [VERSIONING_LDFLAGS='-Wl,-version-script=$(abs_top_srcdir)/src/map-file'])
187 AC_SUBST([VERSIONING_LDFLAGS])
188
189 # Use immediate (now) bindings; avoids the funky re-call in itself.
190 # The -z now syntax is lifted from Sun's linker and works with GNU's too, other linkers might be added later.
191 AX_APPEND_LINK_FLAGS([-Wl,-z,now], [IMMEDIATE_LDFLAGS])
192 AC_SUBST([IMMEDIATE_LDFLAGS])
193
194 # On ELF systems we don't want the libraries to be unloaded since we don't clean them up properly,
195 # so we request the nodelete flag to be enabled.
196 # On other systems, we don't really know how to do that, but it's welcome if somebody can tell.
197 AX_APPEND_LINK_FLAGS([-Wl,-z,nodelete], [NODELETE_LDFLAGS])
198 AC_SUBST([NODELETE_LDFLAGS])
199
200 # Check for the proper way to build libraries that have no undefined symbols
201 case $host in
202     # FreeBSD (et al.) does not complete linking for shared objects when pthreads
203     # are requested, as different implementations are present.
204     *-freebsd* | *-openbsd*) ;;
205     *)
206         for possible_flag in "-Wl,--no-undefined" "-Wl,-z,defs"; do
207             AX_CHECK_LINK_FLAG([$possible_flag], [NOUNDEFINED_LDFLAGS="$possible_flag"; break])
208         done
209     ;;
210 esac
211 AC_SUBST([NOUNDEFINED_LDFLAGS])
212
213
214 #### Atomic operations ####
215
216 # Native atomic operation support
217 AC_ARG_ENABLE([atomic-arm-linux-helpers],
218     AS_HELP_STRING([--disable-atomic-arm-linux-helpers],[use inline asm or libatomic_ops instead]))
219
220 AC_ARG_ENABLE([atomic-arm-memory-barrier],
221     AS_HELP_STRING([--enable-atomic-arm-memory-barrier],[only really needed in SMP arm systems]))
222
223 if test "x$enable_atomic_arm_memory_barrier" = "xyes"; then
224     AC_DEFINE_UNQUOTED(ATOMIC_ARM_MEMORY_BARRIER_ENABLED, 1, [Enable memory barriers])
225 fi
226
227 # If everything else fails use libatomic_ops
228 need_libatomic_ops=yes
229
230 AC_CACHE_CHECK([whether $CC knows __sync_bool_compare_and_swap()],
231     pulseaudio_cv_sync_bool_compare_and_swap, [
232     AC_LINK_IFELSE(
233         [AC_LANG_PROGRAM([], [[int a = 4; __sync_bool_compare_and_swap(&a, 4, 5);]])],
234         [pulseaudio_cv_sync_bool_compare_and_swap=yes],
235         [pulseaudio_cv_sync_bool_compare_and_swap=no])
236     ])
237
238 if test "$pulseaudio_cv_sync_bool_compare_and_swap" = "yes" ; then
239     AC_DEFINE([HAVE_ATOMIC_BUILTINS], 1, [Have __sync_bool_compare_and_swap() and friends.])
240     need_libatomic_ops=no
241 else
242     # HW specific atomic ops stuff
243     AC_MSG_CHECKING([architecture for native atomic operations])
244     case $host in
245         arm*)
246             AC_MSG_RESULT([arm])
247             AC_MSG_CHECKING([whether we can use Linux kernel helpers])
248             # The Linux kernel helper functions have been there since 2.6.16. However
249             # compile time checking for kernel version in cross compile environment
250             # (which is usually the case for arm cpu) is tricky (or impossible).
251             if test "x$os_is_linux" = "x1" && test "x$enable_atomic_arm_linux_helpers" != "xno"; then
252                 AC_MSG_RESULT([yes])
253                 AC_DEFINE_UNQUOTED(ATOMIC_ARM_LINUX_HELPERS, 1, [special arm linux implementation])
254                 need_libatomic_ops=no
255             else
256                 AC_MSG_RESULT([no])
257                 AC_CACHE_CHECK([compiler support for arm inline asm atomic operations],
258                     pulseaudio_cv_support_arm_atomic_ops, [
259                     AC_COMPILE_IFELSE(
260                         [AC_LANG_PROGRAM([], [[
261                             volatile int a=0;
262                             int o=0, n=1, r;
263                             asm volatile ("ldrex    %0, [%1]\n"
264                                           "subs  %0, %0, %2\n"
265                                           "strexeq %0, %3, [%1]\n"
266                                           : "=&r" (r)
267                                           : "r" (&a), "Ir" (o), "r" (n)
268                                           : "cc");
269                             return (a==1 ? 0 : -1);
270                         ]])],
271                         [pulseaudio_cv_support_arm_atomic_ops=yes],
272                         [pulseaudio_cv_support_arm_atomic_ops=no])
273                 ])
274                 AS_IF([test "$pulseaudio_cv_support_arm_atomic_ops" = "yes"], [
275                     AC_DEFINE([ATOMIC_ARM_INLINE_ASM], 1, [Have ARM atomic instructions.])
276                     need_libatomic_ops=no
277                 ])
278             fi
279         ;;
280         *-netbsdelf5*)
281             AC_MSG_RESULT([yes])
282             need_libatomic_ops=no
283         ;;
284         *-freebsd*)
285             AC_MSG_RESULT([yes])
286             need_libatomic_ops=no
287         ;;
288         *)
289             AC_MSG_RESULT([unknown])
290         ;;
291     esac
292 fi
293
294 # If we're on ARM, check for the ARMV6 instructions we need */
295 case $host in
296   arm*)
297     AC_CACHE_CHECK([support for required armv6 instructions],
298       pulseaudio_cv_support_armv6,
299       [AC_COMPILE_IFELSE(
300          [AC_LANG_PROGRAM([],
301            [[volatile int a = -60000, b = 0xaaaabbbb, c = 0xccccdddd;
302              asm volatile ("ldr r0, %2 \n"
303                            "ldr r2, %3 \n"
304                            "ldr r3, %4 \n"
305                            "ssat r1, #8, r0 \n"
306                            "str r1, %0 \n"
307                            "pkhbt r1, r3, r2, LSL #8 \n"
308                            "str r1, %1 \n"
309                            : "=m" (a), "=m" (b)
310                            : "m" (a), "m" (b), "m" (c)
311                            : "r0", "r1", "r2", "r3", "cc");
312              return (a == -128 && b == 0xaabbdddd) ? 0 : -1;
313            ]])],
314          [pulseaudio_cv_support_armv6=yes],
315          [pulseaudio_cv_support_armv6=no])
316       ])
317     AS_IF([test "$pulseaudio_cv_support_armv6" = "yes"], [
318         AC_DEFINE([HAVE_ARMV6], 1, [Have ARMv6 instructions.])
319       ])
320   ;;
321   *)
322   ;;
323 esac
324
325 #### NEON optimisations ####
326 AC_ARG_ENABLE([neon-opt],
327     AS_HELP_STRING([--enable-neon-opt], [Enable NEON optimisations on ARM CPUs that support it]))
328
329 AS_IF([test "x$enable_neon_opt" != "xno"],
330     [save_CFLAGS="$CFLAGS"; CFLAGS="-mfpu=neon $CFLAGS"
331      AC_COMPILE_IFELSE(
332         [AC_LANG_PROGRAM([[#include <arm_neon.h>]], [])],
333         [
334          HAVE_NEON=1
335          NEON_CFLAGS="-mfpu=neon"
336         ],
337         [
338          HAVE_NEON=0
339          NEON_CFLAGS=
340         ])
341      CFLAGS="$save_CFLAGS"
342     ],
343     [HAVE_NEON=0])
344
345 AS_IF([test "x$enable_neon_opt" = "xyes" && test "x$HAVE_NEON" = "x0"],
346       [AC_MSG_ERROR([*** Compiler does not support -mfpu=neon or CFLAGS override -mfpu])])
347
348 AC_SUBST(HAVE_NEON)
349 AC_SUBST(NEON_CFLAGS)
350 AM_CONDITIONAL([HAVE_NEON], [test "x$HAVE_NEON" = x1])
351 AS_IF([test "x$HAVE_NEON" = "x1"], AC_DEFINE([HAVE_NEON], 1, [Have NEON support?]))
352
353
354 #### libtool stuff ####
355
356 LT_PREREQ(2.4)
357 LT_INIT([dlopen win32-dll disable-static])
358
359 dnl As an extra safety device, check for lt_dladvise_init() which is
360 dnl only implemented in libtool 2.x, and refine as we go if we have
361 dnl refined requirements.
362 dnl
363 dnl Check the header files first since the system may have a
364 dnl libltdl.so for runtime, but no headers, and we want to bail out as
365 dnl soon as possible.
366 dnl
367 dnl We don't need any special variable for this though, since the user
368 dnl can give the proper place to find libltdl through the standard
369 dnl variables like LDFLAGS and CPPFLAGS.
370
371 AC_CHECK_HEADER([ltdl.h],
372     [AC_CHECK_LIB([ltdl], [lt_dladvise_init], [LIBLTDL=-lltdl], [LIBLTDL=])],
373     [LIBLTDL=])
374
375 AS_IF([test "x$LIBLTDL" = "x"],
376     [AC_MSG_ERROR([Unable to find libltdl version 2. Makes sure you have libtool 2.4 or later installed.])])
377 AC_SUBST([LIBLTDL])
378
379
380 ###################################
381 #   Basic environment checks      #
382 ###################################
383
384 #### Checks for header files. ####
385
386 # ISO
387 AC_HEADER_STDC
388
389 # POSIX
390 AC_CHECK_HEADERS_ONCE([arpa/inet.h glob.h grp.h netdb.h netinet/in.h \
391     netinet/in_systm.h netinet/tcp.h poll.h pwd.h sched.h \
392     sys/mman.h sys/select.h sys/socket.h sys/wait.h \
393     sys/uio.h syslog.h sys/dl.h dlfcn.h linux/sockios.h])
394 AC_CHECK_HEADERS([netinet/ip.h], [], [],
395                  [#include <sys/types.h>
396                   #if HAVE_NETINET_IN_H
397                   # include <netinet/in.h>
398                   #endif
399                   #if HAVE_NETINET_IN_SYSTM_H
400                   # include <netinet/in_systm.h>
401                   #endif
402                  ])
403 AC_CHECK_HEADERS([sys/resource.h], [HAVE_SYS_RESOURCE_H=1], [HAVE_SYS_RESOURCE_H=0])
404 AC_SUBST(HAVE_SYS_RESOURCE_H)
405 AC_CHECK_HEADERS([sys/un.h], [HAVE_AF_UNIX=1], [HAVE_AF_UNIX=0])
406 AM_CONDITIONAL(HAVE_AF_UNIX, test "x$HAVE_AF_UNIX" = "x1")
407 AC_SUBST(HAVE_AF_UNIX)
408
409 # Linux
410 AC_CHECK_HEADERS([linux/input.h], [HAVE_EVDEV=1], [HAVE_EVDEV=0])
411 AM_CONDITIONAL([HAVE_EVDEV], [test "x$HAVE_EVDEV" = "x1"])
412
413 AC_CHECK_HEADERS_ONCE([sys/prctl.h])
414
415 # Solaris
416 AC_CHECK_HEADERS_ONCE([sys/filio.h])
417
418 # Windows
419 AC_CHECK_HEADERS_ONCE([windows.h winsock2.h ws2tcpip.h])
420
421 # NetBSD
422 AC_CHECK_HEADERS_ONCE([sys/atomic.h])
423
424 # Other
425 AC_CHECK_HEADERS_ONCE([sys/ioctl.h])
426 AC_CHECK_HEADERS_ONCE([byteswap.h])
427 AC_CHECK_HEADERS_ONCE([sys/syscall.h])
428 AC_CHECK_HEADERS_ONCE([sys/eventfd.h])
429 AC_CHECK_HEADERS_ONCE([execinfo.h])
430 AC_CHECK_HEADERS_ONCE([langinfo.h])
431 AC_CHECK_HEADERS_ONCE([regex.h pcreposix.h])
432
433
434 #### Typdefs, structures, etc. ####
435
436 AC_C_CONST
437 AC_C_BIGENDIAN
438 AC_TYPE_PID_T
439 AC_TYPE_SIZE_T
440 AC_CHECK_TYPES(ssize_t, , AC_DEFINE([ssize_t], [signed long], [Define ssize_t if it is not done by the standard libs.]))
441 AC_TYPE_OFF_T
442
443 AC_TYPE_UID_T
444 AC_CHECK_DECLS(environ)
445
446 # SIGXCPU
447 AX_CHECK_DEFINE([signal.h], [SIGXCPU], [HAVE_SIGXCPU=1], [HAVE_SIGXCPU=0])
448 AS_IF([test "x$HAVE_SIGXCPU" = "x1"], AC_DEFINE([HAVE_SIGXCPU], 1, [Have SIGXCPU?]))
449 AM_CONDITIONAL(HAVE_SIGXCPU, test "x$HAVE_SIGXCPU" = "x1")
450
451 # INADDR_NONE, Solaris lacks this
452 AX_CHECK_DEFINE([netinet/in.h], [INADDR_NONE], [],
453     [AX_CHECK_DEFINE([winsock2.h], [INADDR_NONE], [],
454         [AC_DEFINE([INADDR_NONE],  [0xffffffff], [Define INADDR_NONE if not found in <netinet/in.h>])])])
455
456
457 # _Bool
458 AC_CACHE_CHECK([whether $CC knows _Bool],
459     pulseaudio_cv__Bool,
460     [AC_COMPILE_IFELSE(
461         [AC_LANG_PROGRAM([], [[_Bool b;]])],
462         [pulseaudio_cv__Bool=yes],
463         [pulseaudio_cv__Bool=no])
464     ])
465
466 AS_IF([test "$pulseaudio_cv__Bool" = "yes"], AC_DEFINE([HAVE_STD_BOOL], 1, [Have _Bool.]))
467
468
469 #### Thread support ####
470
471 AX_TLS
472 AS_IF([test "$ac_cv_tls" == "__thread"],
473     AC_DEFINE([SUPPORT_TLS___THREAD], 1, [Define this if the compiler supports __thread for Thread-Local Storage]))
474
475 # Win32 build breaks with win32 pthread installed
476 AS_IF([test "x$os_is_win32" != "x1"],
477   [AX_PTHREAD])
478
479 AS_IF([test "x$ax_pthread_ok" == "xyes"],
480     AC_DEFINE([_POSIX_PTHREAD_SEMANTICS], 1, [Needed on Solaris]))
481
482
483 #### Check for libs ####
484
485 # ISO
486 AC_SEARCH_LIBS([pow], [m])
487
488 # POSIX
489 AC_SEARCH_LIBS([sched_setscheduler], [rt])
490 AC_SEARCH_LIBS([dlopen], [dl])
491 AC_SEARCH_LIBS([shm_open], [rt])
492 AC_SEARCH_LIBS([inet_ntop], [nsl])
493 AC_SEARCH_LIBS([timer_create], [rt])
494 AC_SEARCH_LIBS([pthread_setaffinity_np], [pthread])
495 AC_SEARCH_LIBS([pthread_getname_np], [pthread])
496 AC_SEARCH_LIBS([pthread_setname_np], [pthread])
497
498 # BSD
499 AC_SEARCH_LIBS([connect], [socket])
500 AC_SEARCH_LIBS([backtrace], [execinfo ubacktrace])
501
502 # Darwin/OS X
503 if test "x$os_is_darwin" = "x1" ; then
504     AC_MSG_CHECKING([looking for Apple CoreService Framework])
505     # How do I check a framework "library" - AC_CHECK_LIB prob. won't work??, just assign LIBS & hope
506     AC_CHECK_HEADER([/Developer/Headers/FlatCarbon/CoreServices.h],
507         [LIBS="$LIBS -framework CoreServices"],
508         [AC_CHECK_HEADERS([/System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h],
509             [LIBS="$LIBS -framework CoreServices"],
510             [AC_MSG_ERROR([CoreServices.h header file not found])]
511         )]
512     )
513
514     AC_MSG_RESULT([ok])
515     AC_DEFINE([HAVE_CLOCK_GETTIME], 1, [Using clock_gettime() replacement])
516     HAVE_BONJOUR=1
517 fi
518
519 AM_CONDITIONAL([HAVE_BONJOUR], [test "x$HAVE_BONJOUR" = x1])
520
521 # Windows
522 AC_SEARCH_LIBS([regexec], [pcreposix])
523 # This magic is needed so we do not needlessly add static libs to the win32  build, disabling its ability to make dlls.
524 AC_CHECK_FUNCS([getopt_long], [], [AC_CHECK_LIB([iberty], [getopt_long])])
525
526
527 #### Check for functions ####
528
529 # ISO
530 AC_CHECK_FUNCS_ONCE([lrintf strtof])
531
532 # POSIX
533 AC_FUNC_FORK
534 AC_FUNC_GETGROUPS
535 AC_CHECK_FUNCS_ONCE([chmod chown fstat fchown fchmod clock_gettime getaddrinfo getgrgid_r getgrnam_r \
536     getpwnam_r getpwuid_r gettimeofday getuid mlock nanosleep \
537     pipe posix_fadvise posix_madvise posix_memalign setpgid setsid shm_open \
538     sigaction sleep symlink sysconf uname pthread_setaffinity_np pthread_getname_np pthread_setname_np])
539 AC_CHECK_FUNCS([mkfifo], [HAVE_MKFIFO=1], [HAVE_MKFIFO=0])
540 AC_SUBST(HAVE_MKFIFO)
541 AM_CONDITIONAL(HAVE_MKFIFO, test "x$HAVE_MKFIFO" = "x1")
542
543 # X/OPEN
544 AC_CHECK_FUNCS_ONCE([readlink])
545
546 # SUSv2
547 AC_CHECK_FUNCS_ONCE([ctime_r usleep])
548
549 # SUSv3
550 AC_CHECK_FUNCS_ONCE([strerror_r])
551
552 # BSD
553 AC_CHECK_FUNCS_ONCE([lstat])
554
555 # Non-standard
556 AC_CHECK_FUNCS_ONCE([setresuid setresgid setreuid setregid seteuid setegid ppoll strsignal sig2str strtof_l pipe2 accept4])
557
558 AC_FUNC_ALLOCA
559
560 AC_CHECK_FUNCS([regexec], [HAVE_REGEX=1], [HAVE_REGEX=0])
561 AM_CONDITIONAL(HAVE_REGEX, [test "x$HAVE_REGEX" = "x1"])
562
563 # Large File-Support (LFS)
564 AC_SYS_LARGEFILE
565 # Check for open64 to know if the current system does have open64() and similar functions
566 AC_CHECK_FUNCS_ONCE([open64])
567
568
569 ###################################
570 #      External libraries         #
571 ###################################
572
573 #### [lib]iconv ####
574
575 AM_ICONV
576
577 #### X11 (optional) ####
578
579 AC_ARG_ENABLE([x11],
580     AS_HELP_STRING([--disable-x11],[Disable optional X11 support]))
581
582 AS_IF([test "x$enable_x11" != "xno"],
583     [PKG_CHECK_MODULES(X11, [ x11-xcb xcb >= 1.6 ice sm xtst ], HAVE_X11=1, HAVE_X11=0)],
584     HAVE_X11=0)
585
586 AS_IF([test "x$enable_x11" = "xyes" && test "x$HAVE_X11" = "x0"],
587     [AC_MSG_ERROR([*** X11 not found])])
588
589 AC_SUBST(HAVE_X11)
590 AM_CONDITIONAL([HAVE_X11], [test "x$HAVE_X11" = x1])
591 AS_IF([test "x$HAVE_X11" = "x1"], AC_DEFINE([HAVE_X11], 1, [Have X11?]))
592
593 #### Capabilities (optional) ####
594
595 CAP_LIBS=''
596
597 AC_ARG_WITH([caps],
598     AS_HELP_STRING([--without-caps],[Omit support for POSIX capabilities.]))
599
600 if test "x${with_caps}" != "xno"; then
601     AC_SEARCH_LIBS([cap_init], [cap], [], [
602                     if test "x${with_caps}" = "xyes" ; then
603                         AC_MSG_ERROR([*** POSIX caps libraries not found])
604                     fi])
605     AC_CHECK_HEADERS([sys/capability.h], [], [
606                     if test "x${with_caps}" = "xyes" ; then
607                         AC_MSG_ERROR([*** POSIX caps headers not found])
608                     fi])
609 fi
610
611 #### Valgrind (optional) ####
612
613 AC_CHECK_HEADERS_ONCE([valgrind/memcheck.h])
614
615 #### check unit tests ####
616
617 AC_ARG_ENABLE([tests],
618     AS_HELP_STRING([--disable-tests],[Disable unit tests]))
619
620 AS_IF([test "x$enable_tests" != "xno"],
621     [PKG_CHECK_MODULES(LIBCHECK, [ check ], HAVE_LIBCHECK=1, HAVE_LIBCHECK=0)],
622     HAVE_LIBCHECK=0)
623
624 AS_IF([test "x$enable_tests" = "xyes" && test "x$HAVE_LIBCHECK" = "x0"],
625     [AC_MSG_ERROR([*** check library not found])])
626
627 AM_CONDITIONAL([HAVE_TESTS], [test "x$HAVE_LIBCHECK" = x1])
628
629 #### json parsing ####
630
631 PKG_CHECK_MODULES(LIBJSON, [ json-c >= 0.11 ], [],
632                   [PKG_CHECK_MODULES(LIBJSON, [ json >= 0.9 ])])
633
634 #### Sound file ####
635
636 PKG_CHECK_MODULES(LIBSNDFILE, [ sndfile >= 1.0.20 ])
637
638 dnl use samsung policy module --------------------------------------------------------
639 AC_ARG_ENABLE(samsung-policy, AC_HELP_STRING([--enable-samsung-policy], [using samsung-policy]),
640 [
641  case "${enableval}" in
642          yes) USE_SAMSUNG_POLICY=yes ;;
643          no)  USE_SAMSUNG_POLICY=no ;;
644          *)   AC_MSG_ERROR(bad value ${enableval} for --enable-samsung_policy) ;;
645  esac
646  ],[USE_SAMSUNG_POLICY=no])
647
648 if test "x$USE_SAMSUNG_POLICY" = "xyes"; then
649         PKG_CHECK_MODULES(VCONF, vconf)
650         AC_SUBST(VCONF_CFLAGS)
651         AC_SUBST(VCONF_LIBS)
652 fi
653 AM_CONDITIONAL(USE_SAMSUNG_POLICY, test "x$USE_SAMSUNG_POLICY" = "xyes")
654 dnl end --------------------------------------------------------------------
655
656 dnl use dlog --------------------------------------------------------------------------
657 AC_ARG_ENABLE(dlog, AC_HELP_STRING([--enable-dlog], [using dlog]),
658 [
659  case "${enableval}" in
660          yes) USE_DLOG=yes ;;
661          no)  USE_DLOG=no ;;
662          *)   AC_MSG_ERROR(bad value ${enableval} for --enable-dlog) ;;
663  esac
664  ],[USE_DLOG=no])
665
666 if test "x$USE_DLOG" = "xyes"; then
667         PKG_CHECK_MODULES(DLOG, dlog)
668         AC_SUBST(DLOG_CFLAGS)
669         AC_SUBST(DLOG_LIBS)
670 fi
671 AM_CONDITIONAL(USE_DLOG, test "x$USE_DLOG" = "xyes")
672 dnl end --------------------------------------------------------------------
673
674 dnl use bt-profile-set --------------------------------------------------------------------------
675 AC_ARG_ENABLE(bt-profile-set, AC_HELP_STRING([--enable-bt-profile-set], [enable bt profile param]),
676 [
677  case "${enableval}" in
678         yes) USE_BT_PROFILE_SET=yes ;;
679         no)  USE_BT_PROFILE_SET=no ;;
680         *)   AC_MSG_ERROR(bad value ${enableval} for --enable-bt-profile-set) ;;
681  esac
682  ],[USE_BT_PROFILE_SET=no])
683
684 AM_CONDITIONAL(USE_BT_PROFILE_SET, test "x$USE_BT_PROFILE_SET" = "xyes")
685 dnl end --------------------------------------------------------------------
686
687 #### atomic-ops ####
688
689 AC_MSG_CHECKING([whether we need libatomic_ops])
690 if test "x$need_libatomic_ops" = "xyes"; then
691     AC_MSG_RESULT([yes])
692     AC_CHECK_HEADERS([atomic_ops.h],
693         [CFLAGS="$CFLAGS -DAO_REQUIRE_CAS"],
694         [AC_MSG_ERROR([*** libatomic-ops headers not found])])
695
696     # Win32 does not need the lib and breaks horribly if we try to include it
697     AS_IF([test "x$os_is_win32" != "x1"], [LIBS="$LIBS -latomic_ops"])
698 else
699     AC_MSG_RESULT([no])
700 fi
701
702 #### Libsamplerate support (optional) ####
703
704 AC_ARG_ENABLE([samplerate],
705     AS_HELP_STRING([--disable-samplerate],[Disable optional libsamplerate support]))
706
707 AS_IF([test "x$enable_samplerate" != "xno"],
708     [PKG_CHECK_MODULES(LIBSAMPLERATE, [ samplerate >= 0.1.0 ], HAVE_LIBSAMPLERATE=1, HAVE_LIBSAMPLERATE=0)],
709     HAVE_LIBSAMPLERATE=0)
710
711 AS_IF([test "x$enable_samplerate" = "xyes" && test "x$HAVE_LIBSAMPLERATE" = "x0"],
712     [AC_MSG_ERROR([*** Libsamplerate not found])])
713
714 AM_CONDITIONAL([HAVE_LIBSAMPLERATE], [test "x$HAVE_LIBSAMPLERATE" = x1])
715 AS_IF([test "x$HAVE_LIBSAMPLERATE" = "x1"], AC_DEFINE([HAVE_LIBSAMPLERATE], 1, [Have libsamplerate?]))
716
717 #### samsung PM API support ####
718
719 AC_ARG_ENABLE(pmlock, AC_HELP_STRING([--enable-pmlock], [using Samsung power management api]),
720 [
721  case "${enableval}" in
722      yes) USE_PM_LOCK=yes ;;
723      no)  USE_PM_LOCK=no ;;
724      *)   AC_MSG_ERROR(bad value ${enableval} for --enable-pmlock) ;;
725  esac
726  ],[USE_PM_LOCK=no])
727 AM_CONDITIONAL(USE_PM_LOCK, test "x$USE_PM_LOCK" = "xyes")
728
729 #### Database support ####
730
731 AC_ARG_WITH([database],
732     AS_HELP_STRING([--with-database=auto|tdb|gdbm|simple],[Choose database backend.]),[],[with_database=auto])
733
734
735 AS_IF([test "x$with_database" = "xauto" -o "x$with_database" = "xtdb"],
736     [PKG_CHECK_MODULES(TDB, [ tdb ], HAVE_TDB=1, HAVE_TDB=0)],
737     HAVE_TDB=0)
738 AS_IF([test "x$HAVE_TDB" = "x1"], with_database=tdb)
739
740 AS_IF([test "x$with_database" = "xtdb" && test "x$HAVE_TDB" = "x0"],
741     [AC_MSG_ERROR([*** tdb not found])])
742
743
744 AS_IF([test "x$with_database" = "xauto" -o "x$with_database" = "xgdbm"],
745     [
746         HAVE_GDBM=1
747         AC_CHECK_LIB(gdbm, gdbm_open, [], HAVE_GDBM=0)
748         AC_CHECK_HEADERS(gdbm.h, [], HAVE_GDBM=0)
749     ],
750     HAVE_GDBM=0)
751 AS_IF([test "x$HAVE_GDBM" = "x1"],
752     [
753         with_database=gdbm
754         GDBM_CFLAGS=
755         GDBM_LIBS=-lgdbm
756     ])
757
758 AS_IF([test "x$with_database" = "xgdbm" && test "x$HAVE_GDBM" = "x0"],
759     [AC_MSG_ERROR([*** gdbm not found])])
760
761
762 AS_IF([test "x$with_database" = "xauto" -o "x$with_database" = "xsimple"],
763     HAVE_SIMPLEDB=1,
764     HAVE_SIMPLEDB=0)
765 AS_IF([test "x$HAVE_SIMPLEDB" = "x1"], with_database=simple)
766
767 AS_IF([test "x$HAVE_TDB" != x1 -a "x$HAVE_GDBM" != x1 -a "x$HAVE_SIMPLEDB" != x1],
768     AC_MSG_ERROR([*** missing database backend]))
769
770
771 AM_CONDITIONAL([HAVE_TDB], [test "x$HAVE_TDB" = x1])
772 AS_IF([test "x$HAVE_TDB" = "x1"], AC_DEFINE([HAVE_TDB], 1, [Have tdb?]))
773
774 AC_SUBST(GDBM_CFLAGS)
775 AC_SUBST(GDBM_LIBS)
776 AM_CONDITIONAL([HAVE_GDBM], [test "x$HAVE_GDBM" = x1])
777 AS_IF([test "x$HAVE_GDBM" = "x1"], AC_DEFINE([HAVE_GDBM], 1, [Have gdbm?]))
778
779 AM_CONDITIONAL([HAVE_SIMPLEDB], [test "x$HAVE_SIMPLEDB" = x1])
780 AS_IF([test "x$HAVE_SIMPLEDB" = "x1"], AC_DEFINE([HAVE_SIMPLEDB], 1, [Have simple?]))
781
782 #### OSS support (optional) ####
783
784 AC_ARG_ENABLE([oss-output],
785     AS_HELP_STRING([--disable-oss-output],[Disable optional OSS output support]))
786
787 AC_ARG_ENABLE([oss-wrapper],
788     AS_HELP_STRING([--disable-oss-wrapper],[Disable optional OSS wrapper support]))
789
790 AS_IF([test "x$enable_oss_output" != "xno" -o "x$enable_oss_wrapper" != "xno"],
791     [AC_CHECK_HEADERS([sys/soundcard.h], HAVE_OSS=1, HAVE_OSS=0)],
792     HAVE_OSS=0)
793
794 AS_IF([test "x$enable_oss_output" = "xyes" -o "x$enable_oss_wrapper" = "xyes" && test "x$HAVE_OSS" = "x0"],
795     [AC_MSG_ERROR([*** OSS support not found])])
796
797 AS_IF([test "x$enable_oss_output" != "xno"],
798     [AS_IF([test "x$HAVE_OSS" = "x1"], HAVE_OSS_OUTPUT=1, HAVE_OSS_OUTPUT=0)],
799     HAVE_OSS_OUTPUT=0)
800
801 AS_IF([test "x$enable_oss_wrapper" != "xno"],
802     [AS_IF([test "x$HAVE_OSS" = "x1"], HAVE_OSS_WRAPPER=1, HAVE_OSS_WRAPPER=0)],
803     HAVE_OSS_WRAPPER=0)
804
805 AC_SUBST(HAVE_OSS_OUTPUT)
806 AM_CONDITIONAL([HAVE_OSS_OUTPUT], [test "x$HAVE_OSS_OUTPUT" = "x1"])
807 AM_CONDITIONAL([HAVE_OSS_WRAPPER], [test "x$HAVE_OSS_WRAPPER" = "x1"])
808 AS_IF([test "x$HAVE_OSS_OUTPUT" = "x1"], AC_DEFINE([HAVE_OSS_OUTPUT], 1, [Have OSS output?]))
809 AS_IF([test "x$HAVE_OSS_WRAPPER" = "x1"], AC_DEFINE([HAVE_OSS_WRAPPER], 1, [Have OSS wrapper (padsp)?]))
810
811 #### CoreAudio support (optional) ####
812
813 AC_ARG_ENABLE([coreaudio-output],
814     AS_HELP_STRING([--disable-coreaudio-output],[Disable optional CoreAudio output support]))
815
816 AS_IF([test "x$enable_coreaudio_output" != "xno"],
817     [AC_CHECK_HEADERS([CoreAudio/CoreAudio.h], HAVE_COREAUDIO=1, HAVE_COREAUDIO=0)],
818     HAVE_COREAUDIO=0)
819
820 AS_IF([test "x$enable_coreaudio_output" = "xyes" && test "x$HAVE_COREAUDIO" = "x0"],
821     [AC_MSG_ERROR([*** CoreAudio output support not found])])
822
823 AM_CONDITIONAL([HAVE_COREAUDIO], [test "x$HAVE_COREAUDIO" = "x1" && test "x$enable_coreaudio_output" != "xno"])
824
825 #### ALSA support (optional) ####
826
827 AC_ARG_ENABLE([alsa],
828     AS_HELP_STRING([--disable-alsa],[Disable optional ALSA support]))
829
830 AS_IF([test "x$enable_alsa" != "xno"],
831     [PKG_CHECK_MODULES(ASOUNDLIB, [ alsa >= 1.0.19 ], HAVE_ALSA=1, HAVE_ALSA=0)],
832     HAVE_ALSA=0)
833
834 AS_IF([test "x$enable_alsa" = "xyes" && test "x$HAVE_ALSA" = "x0"],
835     [AC_MSG_ERROR([*** Needed alsa >= 1.0.19 support not found])])
836
837 AS_IF([test "x$HAVE_ALSA" = "x1"],
838     [
839         save_CPPFLAGS="$CPPFLAGS"; CPPFLAGS="$CPPFLAGS $ASOUNDLIB_CFLAGS"
840         AC_CHECK_HEADERS([use-case.h], HAVE_ALSA_UCM=1, HAVE_ALSA_UCM=0)
841         CPPFLAGS="$save_CPPFLAGS"
842     ],
843     HAVE_ALSA_UCM=0)
844
845 AC_SUBST(HAVE_ALSA)
846 AM_CONDITIONAL([HAVE_ALSA], [test "x$HAVE_ALSA" = x1])
847 AS_IF([test "x$HAVE_ALSA" = "x1"], AC_DEFINE([HAVE_ALSA], 1, [Have ALSA?]))
848 AS_IF([test "x$HAVE_ALSA_UCM" = "x1"], AC_DEFINE([HAVE_ALSA_UCM], 1, [Have ALSA UCM?]))
849
850 #### EsounD support (optional) ####
851
852 AC_ARG_ENABLE([esound],
853     AS_HELP_STRING([--disable-esound],[Disable optional EsounD support]))
854 AM_CONDITIONAL([HAVE_ESOUND], [test "x$enable_esound" != "xno"])
855 AS_IF([test "x$enable_esound" != "xno"], [HAVE_ESOUND=1])
856
857 #### Solaris audio support (optional) ####
858
859 AC_ARG_ENABLE([solaris],
860     AS_HELP_STRING([--disable-solaris],[Disable optional Solaris audio support]))
861
862 AS_IF([test "x$enable_solaris" != "xno"],
863     [AC_CHECK_HEADERS([sys/audio.h], HAVE_SOLARIS=1, HAVE_SOLARIS=0)],
864     HAVE_SOLARIS=0)
865
866 AS_IF([test "x$enable_solaris" = "xyes" && test "x$HAVE_SOLARIS" = "x0"],
867     [AC_MSG_ERROR([*** Solaris audio support not found])])
868
869 AM_CONDITIONAL([HAVE_SOLARIS], [test "x$HAVE_SOLARIS" = x1])
870 AS_IF([test "x$HAVE_SOLARIS" = "x1"], AC_DEFINE([HAVE_SOLARIS], 1, [Have Solaris audio?]))
871
872 #### WaveOut audio support (optional) ####
873
874 AC_ARG_ENABLE([waveout],
875     AS_HELP_STRING([--disable-waveout],[Disable optional WaveOut audio support]))
876
877 AS_IF([test "x$enable_waveout" != "xno"],
878     [AC_CHECK_HEADERS([mmsystem.h], HAVE_WAVEOUT=1, HAVE_WAVEOUT=0, [#include <windows.h>])],
879     HAVE_WAVEOUT=0)
880
881 AS_IF([test "x$enable_waveout" = "xyes" && test "x$HAVE_WAVEOUT" = "x0"],
882     [AC_MSG_ERROR([*** WaveOut audio support not found])])
883
884 AC_SUBST(HAVE_WAVEOUT)
885 AM_CONDITIONAL([HAVE_WAVEOUT], [test "x$HAVE_WAVEOUT" = x1])
886 AS_IF([test "x$HAVE_WAVEOUT" = "x1"], AC_DEFINE([HAVE_WAVEOUT], 1, [Have WaveOut audio?]))
887
888 #### GLib 2 support (optional) ####
889
890 AC_ARG_ENABLE([glib2],
891     AS_HELP_STRING([--disable-glib2],[Disable optional GLib 2 support]))
892
893 AS_IF([test "x$enable_glib2" != "xno"],
894     [PKG_CHECK_MODULES(GLIB20, [ glib-2.0 >= 2.4.0 ], HAVE_GLIB20=1, HAVE_GLIB20=0)],
895     HAVE_GLIB20=0)
896
897 AS_IF([test "x$enable_glib2" = "xyes" && test "x$HAVE_GLIB20" = "x0"],
898     [AC_MSG_ERROR([*** GLib 2 support not found])])
899
900 AC_SUBST(HAVE_GLIB20)
901 AM_CONDITIONAL([HAVE_GLIB20], [test "x$HAVE_GLIB20" = x1])
902 AS_IF([test "x$HAVE_GLIB20" = "x1"], AC_DEFINE([HAVE_GLIB], 1, [Have GLIB?]))
903
904 #### GTK3 support (optional) ####
905
906 AC_ARG_ENABLE([gtk3],
907     AS_HELP_STRING([--disable-gtk3],[Disable optional Gtk+ 3 support]))
908
909 AS_IF([test "x$enable_gtk3" != "xno"],
910     [PKG_CHECK_MODULES(GTK30, [ gtk+-3.0 ], HAVE_GTK30=1, HAVE_GTK30=0)],
911     HAVE_GTK30=0)
912
913 AS_IF([test "x$enable_gtk3" = "xyes" && test "x$HAVE_GTK30" = "x0"],
914     [AC_MSG_ERROR([*** Gtk+ 3 support not found])])
915
916 AM_CONDITIONAL([HAVE_GTK30], [test "x$HAVE_GTK30" = x1])
917 AS_IF([test "x$HAVE_GTK30" = "x1"], AC_DEFINE([HAVE_GTK], 1, [Have GTK?]))
918
919 #### GConf support (optional) ####
920
921 AC_ARG_ENABLE([gconf],
922     AS_HELP_STRING([--disable-gconf],[Disable optional GConf support]))
923
924 AS_IF([test "x$enable_gconf" != "xno"],
925     [PKG_CHECK_MODULES(GCONF, [ gconf-2.0 >= 2.4.0 gobject-2.0 ], HAVE_GCONF=1, HAVE_GCONF=0)],
926     HAVE_GCONF=0)
927
928 AS_IF([test "x$enable_gconf" = "xyes" && test "x$HAVE_GCONF" = "x0"],
929     [AC_MSG_ERROR([*** GConf support not found])])
930
931 AM_CONDITIONAL([HAVE_GCONF], [test "x$HAVE_GCONF" = x1])
932
933 #### Avahi support (optional) ####
934
935 AC_ARG_ENABLE([avahi],
936     AS_HELP_STRING([--disable-avahi],[Disable optional Avahi support]))
937
938 AS_IF([test "x$enable_avahi" != "xno"],
939     [PKG_CHECK_MODULES(AVAHI, [ avahi-client >= 0.6.0 ], HAVE_AVAHI=1, HAVE_AVAHI=0)],
940     HAVE_AVAHI=0)
941
942 AS_IF([test "x$enable_avahi" = "xyes" && test "x$HAVE_AVAHI" = "x0"],
943     [AC_MSG_ERROR([*** Avahi support not found])])
944
945 AC_SUBST(HAVE_AVAHI)
946 AM_CONDITIONAL([HAVE_AVAHI], [test "x$HAVE_AVAHI" = x1])
947
948 #### JACK (optional) ####
949
950 AC_ARG_ENABLE([jack],
951     AS_HELP_STRING([--disable-jack],[Disable optional JACK support]))
952
953 AS_IF([test "x$enable_jack" != "xno"],
954     [PKG_CHECK_MODULES(JACK, [ jack >= 0.117.0 ], HAVE_JACK=1, HAVE_JACK=0)],
955     HAVE_JACK=0)
956
957 AS_IF([test "x$enable_jack" = "xyes" && test "x$HAVE_JACK" = "x0"],
958     [AC_MSG_ERROR([*** JACK support not found])])
959
960 AM_CONDITIONAL([HAVE_JACK], [test "x$HAVE_JACK" = x1])
961
962 #### Async DNS support (optional) ####
963
964 AC_ARG_ENABLE([asyncns],
965     AS_HELP_STRING([--disable-asyncns],[Disable optional Async DNS support]))
966
967 AS_IF([test "x$enable_asyncns" != "xno"],
968     [PKG_CHECK_MODULES(LIBASYNCNS, [ libasyncns >= 0.1 ], HAVE_LIBASYNCNS=1, HAVE_LIBASYNCNS=0)],
969     HAVE_LIBASYNCNS=0)
970
971 AS_IF([test "x$enable_asyncns" = "xyes" && test "x$HAVE_LIBASYNCNS" = "x0"],
972     [AC_MSG_ERROR([*** Async DNS support not found])])
973
974 AM_CONDITIONAL([HAVE_LIBASYNCNS], [test "x$HAVE_LIBASYNCNS" = x1])
975 AS_IF([test "x$HAVE_LIBASYNCNS" = "x1"], AC_DEFINE([HAVE_LIBASYNCNS], 1, [Have libasyncns?]))
976
977 #### TCP wrappers (optional) ####
978
979 AC_ARG_ENABLE([tcpwrap],
980     AS_HELP_STRING([--disable-tcpwrap],[Disable optional TCP wrappers support]))
981
982 AS_IF([test "x$enable_tcpwrap" != "xno"],
983     [
984         ACX_LIBWRAP
985         AS_IF([test "x$LIBWRAP_LIBS" != "x"], HAVE_TCPWRAP=1, HAVE_TCPWRAP=0)
986     ],
987     HAVE_TCPWRAP=0)
988
989 AS_IF([test "x$enable_tcpwrap" = "xyes" && test "x$HAVE_TCPWRAP" = "x0"],
990     [AC_MSG_ERROR([*** TCP wrappers support not found])])
991
992 AC_SUBST(LIBWRAP_LIBS)
993
994 #### LIRC support (optional) ####
995
996 AC_ARG_ENABLE([lirc],
997     AS_HELP_STRING([--disable-lirc],[Disable optional LIRC support]))
998
999 LIRC_CFLAGS=
1000 LIRC_LIBS=
1001
1002 AS_IF([test "x$enable_lirc" != "xno"],
1003     [
1004         HAVE_LIRC=1
1005         AC_CHECK_HEADER(lirc/lirc_client.h, [], [HAVE_LIRC=0])
1006         AC_CHECK_LIB(lirc_client, lirc_init, [LIRC_LIBS=-llirc_client], [HAVE_LIRC=0])
1007     ],
1008     HAVE_LIRC=0)
1009
1010 AS_IF([test "x$enable_lirc" = "xyes" && test "x$HAVE_LIRC" = "x0"],
1011     [AC_MSG_ERROR([*** LIRC support not found])])
1012
1013 AC_SUBST(LIRC_CFLAGS)
1014 AC_SUBST(LIRC_LIBS)
1015 AM_CONDITIONAL([HAVE_LIRC], [test "x$HAVE_LIRC" = x1])
1016
1017 #### D-Bus support (optional) ####
1018
1019 AC_ARG_ENABLE([dbus],
1020     AS_HELP_STRING([--disable-dbus],[Disable optional D-Bus support]))
1021
1022 AS_IF([test "x$enable_dbus" != "xno"],
1023     [PKG_CHECK_MODULES(DBUS, [ dbus-1 >= 1.4.12 ], HAVE_DBUS=1, HAVE_DBUS=0)],
1024     HAVE_DBUS=0)
1025
1026 AS_IF([test "x$enable_dbus" = "xyes" && test "x$HAVE_DBUS" = "x0"],
1027     [AC_MSG_ERROR([*** D-Bus not available or too old version])])
1028
1029 AS_IF([test "x$HAVE_DBUS" = "x1"],
1030     [
1031         save_CFLAGS="$CFLAGS"; CFLAGS="$CFLAGS $DBUS_CFLAGS"
1032         save_LIBS="$LIBS"; LIBS="$LIBS $DBUS_LIBS"
1033         AC_CHECK_FUNCS(dbus_watch_get_unix_fd)
1034         CFLAGS="$save_CFLAGS"
1035         LIBS="$save_LIBS"
1036     ])
1037
1038 AC_SUBST(HAVE_DBUS)
1039 AM_CONDITIONAL([HAVE_DBUS], [test "x$HAVE_DBUS" = x1])
1040 AS_IF([test "x$HAVE_DBUS" = "x1"], AC_DEFINE([HAVE_DBUS], 1, [Have D-Bus.]))
1041
1042 PA_MACHINE_ID="${sysconfdir}/machine-id"
1043 AX_DEFINE_DIR(PA_MACHINE_ID, PA_MACHINE_ID, [D-Bus machine-id file])
1044 PA_MACHINE_ID_FALLBACK="${localstatedir}/lib/dbus/machine-id"
1045 AX_DEFINE_DIR(PA_MACHINE_ID_FALLBACK, PA_MACHINE_ID_FALLBACK,
1046               [Fallback machine-id file])
1047
1048 #### BlueZ support (optional, dependent on D-Bus and SBC) ####
1049
1050 AC_ARG_ENABLE([bluez4],
1051     AS_HELP_STRING([--disable-bluez4],[Disable optional BlueZ 4 support]))
1052 AC_ARG_ENABLE([bluez5],
1053     AS_HELP_STRING([--disable-bluez5],[Disable optional BlueZ 5 support]))
1054
1055 ## SBC ##
1056 AS_IF([test "x$enable_bluez4" != "xno" || test "x$enable_bluez5" != "xno"],
1057     [PKG_CHECK_MODULES(SBC, [ sbc >= 1.0 ], HAVE_SBC=1, HAVE_SBC=0)],
1058     HAVE_SBC=0)
1059
1060 ## BlueZ 4 ##
1061 AS_IF([test "x$enable_bluez4" != "xno" && test "x$HAVE_DBUS" = "x1" && test "x$HAVE_SBC" = "x1"], HAVE_BLUEZ_4=1)
1062 AS_IF([test "x$enable_bluez4" = "xyes" && test "x$HAVE_BLUEZ_4" != "x1"],
1063     [AC_MSG_ERROR([*** BLUEZ 4 support not found (requires sbc and D-Bus)])])
1064 AC_SUBST(HAVE_BLUEZ_4)
1065 AM_CONDITIONAL([HAVE_BLUEZ_4], [test "x$HAVE_BLUEZ_4" = x1])
1066
1067 ## BlueZ 5 ##
1068 AS_IF([test "x$enable_bluez5" != "xno" && test "x$HAVE_DBUS" = "x1" && test "x$HAVE_SBC" = "x1"], HAVE_BLUEZ_5=1)
1069 AS_IF([test "x$enable_bluez5" = "xyes" && test "x$HAVE_BLUEZ_5" != "x1"],
1070     [AC_MSG_ERROR([*** BLUEZ 5 support not found (requires sbc and D-Bus)])])
1071 AC_SUBST(HAVE_BLUEZ_5)
1072 AM_CONDITIONAL([HAVE_BLUEZ_5], [test "x$HAVE_BLUEZ_5" = x1])
1073
1074 AS_IF([test "x$HAVE_BLUEZ_4" = "x1" || test "x$HAVE_BLUEZ_5" = "x1"], HAVE_BLUEZ=1)
1075 AC_SUBST(HAVE_BLUEZ)
1076 AM_CONDITIONAL([HAVE_BLUEZ], [test "x$HAVE_BLUEZ" = x1])
1077
1078 ## Headset profiles backend ##
1079 AC_ARG_WITH(bluetooth_headset_backend, AS_HELP_STRING([--with-bluetooth-headset-backend=<null|ofono>],[Backend for Bluetooth headset profiles (null)]))
1080 if test -z "$with_bluetooth_headset_backend" ; then
1081     BLUETOOTH_HEADSET_BACKEND=null
1082 else
1083     BLUETOOTH_HEADSET_BACKEND=$with_bluetooth_headset_backend
1084 fi
1085 AC_SUBST(BLUETOOTH_HEADSET_BACKEND)
1086
1087 #### Bluetooth A2DP aptx codec support(optional) ####
1088 AC_ARG_ENABLE([bt_a2dp_aptx],
1089     AS_HELP_STRING([--enable-bt-a2dp-aptx],[Enable optional Bluetooth A2DP aptx codec support(arm only)]),
1090         [
1091             case "${enableval}" in
1092                 yes) bt_a2dp_aptx=yes ;;
1093                 no) bt_a2dp_aptx=no ;;
1094                 *) AC_MSG_ERROR(bad value ${enableval} for --enable-bt-a2dp-aptx) ;;
1095             esac
1096         ],
1097         [bt_a2dp_aptx=false])
1098 if test "x${bt_a2dp_aptx}" == xyes ; then
1099         HAVE_BT_A2DP_APTX=1
1100 else
1101         HAVE_BT_A2DP_APTX=0
1102 fi
1103
1104 AC_SUBST(HAVE_BT_A2DP_APTX)
1105 AM_CONDITIONAL([HAVE_BT_A2DP_APTX], [test "x$HAVE_BT_A2DP_APTX" = x1])
1106
1107 #### UDEV support (optional) ####
1108
1109 AC_ARG_ENABLE([udev],
1110     AS_HELP_STRING([--disable-udev],[Disable optional UDEV support]))
1111
1112 AS_IF([test "x$enable_udev" != "xno" -a \( "x$HAVE_OSS" = "x1" -o "x$HAVE_ALSA" = "x1" \)],
1113     [PKG_CHECK_MODULES(UDEV, [ libudev >= 143 ], HAVE_UDEV=1, HAVE_UDEV=0)],
1114     HAVE_UDEV=0)
1115
1116 AS_IF([test "x$enable_udev" = "xyes" && test "x$HAVE_UDEV" = "x0"],
1117     [AC_MSG_ERROR([*** UDEV support not found])])
1118
1119 AC_SUBST(HAVE_UDEV)
1120 AM_CONDITIONAL([HAVE_UDEV], [test "x$HAVE_UDEV" = x1])
1121 AS_IF([test "x$HAVE_UDEV" = "x1"], AC_DEFINE([HAVE_UDEV], 1, [Have UDEV.]))
1122
1123 #### udev for usb _only_ support (optional, dependant on UDEV) ####
1124 AC_ARG_ENABLE([udev_with_usb_only],
1125     AS_HELP_STRING([--enable-udev-with-usb-only],[Enable UDEV with only USB support]))
1126
1127 AS_IF([test "x$enable_udev_with_usb_only" != "xyes"],
1128     [AS_IF([test "x$HAVE_UDEV" = "x1"], HAVE_UDEV_ONLY_USB=0, HAVE_UDEV_ONLY_USB=1)],
1129     HAVE_UDEV_ONLY_USB=1)
1130
1131 AM_CONDITIONAL([HAVE_UDEV_ONLY_USB], [test "x$HAVE_UDEV_ONLY_USB" = x1])
1132 AS_IF([test "x$HAVE_UDEV_ONLY_USB" = "x1"], AC_DEFINE([HAVE_UDEV_ONLY_USB], 1, [Have usb only with udev.]))
1133
1134 #### HAL compat support (optional, dependent on UDEV) ####
1135 AC_ARG_ENABLE([hal-compat],
1136     AS_HELP_STRING([--disable-hal-compat],[Disable optional HAL->udev transition compatibility support]))
1137
1138 AS_IF([test "x$enable_hal_compat" != "xno"],
1139     [AS_IF([test "x$HAVE_UDEV" = "x1"], HAVE_HAL_COMPAT=1, HAVE_HAL_COMPAT=0)],
1140     HAVE_HAL_COMPAT=0)
1141
1142 AM_CONDITIONAL([HAVE_HAL_COMPAT], [test "x$HAVE_HAL_COMPAT" = x1])
1143 AS_IF([test "x$HAVE_HAL_COMPAT" = "x1"], AC_DEFINE([HAVE_HAL_COMPAT], 1, [Have HAL compatibility.]))
1144
1145 #### IPv6 connection support (optional) ####
1146
1147 AC_ARG_ENABLE([ipv6],
1148     AS_HELP_STRING([--disable-ipv6],[Disable optional IPv6 support]))
1149
1150 AS_IF([test "x$enable_ipv6" != "xno"], [HAVE_IPV6=1], [HAVE_IPV6=0])
1151
1152 AS_IF([test "x$HAVE_IPV6" = "x1"], AC_DEFINE([HAVE_IPV6], 1, [Define this to enable IPv6 connection support]))
1153
1154 #### OpenSSL support (optional) ####
1155
1156 AC_ARG_ENABLE([openssl],
1157     AS_HELP_STRING([--disable-openssl],[Disable OpenSSL support (used for Airtunes/RAOP)]))
1158
1159 AS_IF([test "x$enable_openssl" != "xno"],
1160     [PKG_CHECK_MODULES(OPENSSL, [ openssl > 0.9 ], HAVE_OPENSSL=1, HAVE_OPENSSL=0)],
1161     HAVE_OPENSSL=0)
1162
1163 AS_IF([test "x$enable_openssl" = "xyes" && test "x$HAVE_OPENSSL" = "x0"],
1164     [AC_MSG_ERROR([*** OpenSSL support not found])])
1165
1166 AM_CONDITIONAL([HAVE_OPENSSL], [test "x$HAVE_OPENSSL" = x1])
1167 AS_IF([test "x$HAVE_OPENSSL" = "x1"], AC_DEFINE([HAVE_OPENSSL], 1, [Have OpenSSL]))
1168
1169 #### FFTW (optional) ####
1170
1171 AC_ARG_WITH([fftw],
1172     AS_HELP_STRING([--without-fftw],[Omit FFTW-using modules (equalizer)]))
1173
1174 AS_IF([test "x$with_fftw" != "xno"],
1175     [PKG_CHECK_MODULES(FFTW, [ fftw3f ], HAVE_FFTW=1, HAVE_FFTW=0)],
1176     HAVE_FFTW=0)
1177
1178 AS_IF([test "x$with_fftw" = "xyes" && test "x$HAVE_FFTW" = "x0"],
1179     [AC_MSG_ERROR([*** FFTW support not found])])
1180
1181 AM_CONDITIONAL([HAVE_FFTW], [test "x$HAVE_FFTW" = "x1"])
1182
1183 #### speex (optional) ####
1184
1185 AC_ARG_WITH([speex],
1186     AS_HELP_STRING([--without-speex],[Omit speex (resampling, AEC)]))
1187
1188 AS_IF([test "x$with_speex" != "xno"],
1189     [PKG_CHECK_MODULES(LIBSPEEX, [ speexdsp >= 1.2 ], HAVE_SPEEX=1, HAVE_SPEEX=0)],
1190     HAVE_SPEEX=0)
1191
1192 AS_IF([test "x$with_speex" = "xyes" && test "x$HAVE_SPEEX" = "x0"],
1193     [AC_MSG_ERROR([*** speex support not found])])
1194
1195 AM_CONDITIONAL([HAVE_SPEEX], [test "x$HAVE_SPEEX" = "x1"])
1196 AS_IF([test "x$HAVE_SPEEX" = "x1"], AC_DEFINE([HAVE_SPEEX], 1, [Have speex]))
1197
1198 #### Xen support (optional) ####
1199
1200 AC_ARG_ENABLE([xen],
1201     AS_HELP_STRING([--disable-xen],[Disable optional Xen paravirtualized driver]))
1202
1203 XEN_CFLAGS=
1204 XEN_LIBS=
1205
1206 AS_IF([test "x$enable_xen" != "xno"],
1207     [
1208         HAVE_XEN=1
1209         AC_CHECK_HEADER(xenctrl.h, [], [HAVE_XEN=0])
1210         AC_CHECK_HEADER(xs.h, [], [HAVE_XEN=0])
1211         AC_CHECK_LIB(xenctrl, xc_interface_open, [XEN_LIBS="$XEN_LIBS -lxenctrl"], [HAVE_XEN=0])
1212         AC_CHECK_LIB(xenstore, xs_domain_open, [XEN_LIBS="$XEN_LIBS -lxenstore"], [HAVE_XEN=0])
1213     ],
1214     HAVE_XEN=0)
1215
1216 AS_IF([test "x$enable_xen" = "xyes" && test "x$HAVE_XEN" = "x0"],
1217     [AC_MSG_ERROR([*** Xen development headers or libraries not found])])
1218
1219 AC_SUBST(XEN_CFLAGS)
1220 AC_SUBST(XEN_LIBS)
1221 AM_CONDITIONAL([HAVE_XEN], [test "x$HAVE_XEN" = x1])
1222
1223 #### gcov support (optional) #####
1224
1225 AC_ARG_ENABLE([gcov],
1226     AS_HELP_STRING([--enable-gcov],[Enable optional gcov coverage analysis]))
1227
1228 GCOV_CFLAGS=
1229 GCOV_LIBS=" -lgcov"
1230
1231 AS_IF([test "x$enable_gcov" = "xyes"],
1232     [
1233         HAVE_GCOV=1
1234         GCOV_CFLAGS="$GCOV_CFLAGS -fprofile-arcs -ftest-coverage"
1235         GCOV_LIBS="$GCOV_LIBS -fprofile-arcs"
1236     ],
1237     HAVE_GCOV=0)
1238
1239 AC_SUBST(GCOV_CFLAGS)
1240 AC_SUBST(GCOV_LIBS)
1241 AM_CONDITIONAL([HAVE_GCOV], [test "x$HAVE_GCOV" = x1])
1242
1243 #### ORC (optional) ####
1244
1245 ORC_CHECK([0.4.11])
1246
1247 #### systemd support (optional) ####
1248
1249 AC_ARG_ENABLE([systemd],
1250     AS_HELP_STRING([--disable-systemd],[Disable optional systemd support]))
1251
1252 AS_IF([test "x$enable_systemd" != "xno"],
1253     [PKG_CHECK_MODULES(SYSTEMD, [ libsystemd-login ], HAVE_SYSTEMD=1, HAVE_SYSTEMD=0)],
1254     HAVE_SYSTEMD=0)
1255
1256 AS_IF([test "x$enable_systemd" = "xyes" && test "x$HAVE_SYSTEMD" = "x0"],
1257     [AC_MSG_ERROR([*** Needed systemd support not found])])
1258
1259 AC_SUBST(HAVE_SYSTEMD)
1260 AM_CONDITIONAL([HAVE_SYSTEMD], [test "x$HAVE_SYSTEMD" = x1])
1261 AS_IF([test "x$HAVE_SYSTEMD" = "x1"], AC_DEFINE([HAVE_SYSTEMD], 1, [Have SYSTEMD?]))
1262
1263 #### Build and Install man pages ####
1264
1265 AC_ARG_ENABLE([manpages],
1266     AS_HELP_STRING([--disable-manpages],[Disable building and installation of man pages]))
1267
1268 AM_CONDITIONAL([BUILD_MANPAGES], [test "x$enable_manpages" != "xno"])
1269
1270 #### PulseAudio system group & user  #####
1271
1272 AC_ARG_WITH(system_user, AS_HELP_STRING([--with-system-user=<user>],[User for running the PulseAudio daemon as a system-wide instance (pulse)]))
1273 if test -z "$with_system_user" ; then
1274     PA_SYSTEM_USER=pulse
1275 else
1276     PA_SYSTEM_USER=$with_system_user
1277 fi
1278 AC_SUBST(PA_SYSTEM_USER)
1279 AC_DEFINE_UNQUOTED(PA_SYSTEM_USER,"$PA_SYSTEM_USER", [User for running the PulseAudio system daemon])
1280
1281 AC_ARG_WITH(system_group,AS_HELP_STRING([--with-system-group=<group>],[Group for running the PulseAudio daemon as a system-wide instance (pulse)]))
1282 if test -z "$with_system_group" ; then
1283     PA_SYSTEM_GROUP=pulse
1284 else
1285     PA_SYSTEM_GROUP=$with_system_group
1286 fi
1287 AC_SUBST(PA_SYSTEM_GROUP)
1288 AC_DEFINE_UNQUOTED(PA_SYSTEM_GROUP,"$PA_SYSTEM_GROUP", [Group for the PulseAudio system daemon])
1289
1290 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)]))
1291 if test -z "$with_access_group" ; then
1292     PA_ACCESS_GROUP=pulse-access
1293 else
1294     PA_ACCESS_GROUP=$with_access_group
1295 fi
1296 AC_SUBST(PA_ACCESS_GROUP)
1297 AC_DEFINE_UNQUOTED(PA_ACCESS_GROUP,"$PA_ACCESS_GROUP", [Access group])
1298
1299 AC_ARG_ENABLE([per-user-esound-socket],
1300     AS_HELP_STRING([--disable-per-user-esound-socket],[Use global esound socket directory /tmp/.esd/socket.]))
1301
1302 if test "x$enable_per_user_esound_socket" != "xno"; then
1303     USE_PER_USER_ESOUND_SOCKET=1
1304     AC_DEFINE([USE_PER_USER_ESOUND_SOCKET], [1], [Define this if you want per-user esound socket directories])
1305 else
1306     USE_PER_USER_ESOUND_SOCKET=0
1307 fi
1308
1309 #### PulseAudio system runtime dir ####
1310
1311 PA_SYSTEM_RUNTIME_PATH="${localstatedir}/run/pulse"
1312 AX_DEFINE_DIR(PA_SYSTEM_RUNTIME_PATH, PA_SYSTEM_RUNTIME_PATH, [System runtime dir])
1313 PA_SYSTEM_CONFIG_PATH="${localstatedir}/lib/pulse"
1314 AX_DEFINE_DIR(PA_SYSTEM_CONFIG_PATH, PA_SYSTEM_CONFIG_PATH, [System config dir])
1315 PA_SYSTEM_STATE_PATH="${localstatedir}/lib/pulse"
1316 AX_DEFINE_DIR(PA_SYSTEM_STATE_PATH, PA_SYSTEM_STATE_PATH, [System state dir])
1317
1318 PA_BINARY=${bindir}/pulseaudio${EXEEXT}
1319 AX_DEFINE_DIR(PA_BINARY, PA_BINARY, [Location of pulseaudio binary])
1320
1321 PACTL_BINARY=${bindir}/pactl${EXEEXT}
1322 AX_DEFINE_DIR(PACTL_BINARY, PACTL_BINARY, [Location of pactl binary])
1323
1324 AC_SUBST(PA_SOEXT, [.so])
1325 AC_DEFINE(PA_SOEXT, [".so"], [Shared object extension])
1326
1327 AC_SUBST(pulseconfdir, ["${sysconfdir}/pulse"])
1328 AX_DEFINE_DIR(PA_DEFAULT_CONFIG_DIR, pulseconfdir, [Location of configuration files])
1329
1330 #### Mac OSX specific stuff #####
1331
1332 AC_ARG_ENABLE(mac-universal,
1333     AS_HELP_STRING([--enable-mac-universal], [Build Mac universal binaries]),
1334     enable_mac_universal=$enableval, enable_mac_universal="no")
1335
1336 AC_ARG_WITH(mac-version-min,
1337     AS_HELP_STRING([--with-mac-version-min=<version>], [Defines the earliest version of MacOS X that the executables will run on.]),
1338     mac_version_min=$withval, mac_version_min="10.5")
1339
1340 AC_ARG_WITH(mac-sysroot,
1341     AS_HELP_STRING([--with-mac-sysroot=<path>], [SDK basedir to use as the logical root directory for headers and libraries.]),
1342     mac_sysroot=$withval, mac_sysroot="/Developer/SDKs/MacOSX10.5.sdk")
1343
1344 if test "x$os_is_darwin" = "x1" ; then
1345     LDFLAGS="$LDFLAGS -isysroot $mac_sysroot -mmacosx-version-min=$mac_version_min"
1346     CFLAGS="$CFLAGS -isysroot $mac_sysroot -mmacosx-version-min=$mac_version_min"
1347
1348     if test "x$enable_mac_universal" = "xyes" ; then
1349         mac_arches="-arch i386 -arch x86_64"
1350         LDFLAGS="$LDFLAGS $mac_arches"
1351         CFLAGS="$CFLAGS $mac_arches"
1352     fi
1353 fi
1354
1355 AC_ARG_ENABLE([webrtc-aec],
1356     AS_HELP_STRING([--enable-webrtc-aec], [Enable the optional WebRTC-based echo canceller]))
1357
1358 AS_IF([test "x$enable_webrtc_aec" != "xno"],
1359     [PKG_CHECK_MODULES(WEBRTC, [ webrtc-audio-processing ], [HAVE_WEBRTC=1], [HAVE_WEBRTC=0])],
1360     [HAVE_WEBRTC=0])
1361
1362 AS_IF([test "x$enable_webrtc_aec" = "xyes" && test "x$HAVE_WEBRTC" = "x0"],
1363     [AC_MSG_ERROR([*** webrtc-audio-processing library not found])])
1364
1365 AM_CONDITIONAL([HAVE_WEBRTC], [test "x$HAVE_WEBRTC" = "x1"])
1366
1367 AC_ARG_ENABLE([adrian-aec],
1368     AS_HELP_STRING([--enable-adrian-aec], [Enable Adrian's optional echo canceller]))
1369 AS_IF([test "x$enable_adrian_aec" != "xno"],
1370     [HAVE_ADRIAN_EC=1])
1371 AM_CONDITIONAL([HAVE_ADRIAN_EC], [test "x$HAVE_ADRIAN_EC" = "x1"])
1372
1373
1374
1375 ###################################
1376 #            Output               #
1377 ###################################
1378
1379 AC_DEFINE_UNQUOTED(PA_CFLAGS, "$CFLAGS", [The CFLAGS used during compilation])
1380
1381 # Check whether to build tests by default (as compile-test) or not
1382 AC_ARG_ENABLE([default-build-tests],
1383     AS_HELP_STRING([--disable-default-build-tests], [Build test programs only during make check]))
1384 AM_CONDITIONAL([BUILD_TESTS_DEFAULT], [test "x$enable_default_build_tests" != "xno"])
1385
1386 AC_ARG_ENABLE([legacy-database-entry-format],
1387         AS_HELP_STRING([--disable-legacy-database-entry-format], [Try to load legacy (< 1.0) database files (card, device and volume restore).]))
1388 if test "x$enable_legacy_database_entry_format" != "xno" ; then
1389         AC_DEFINE(ENABLE_LEGACY_DATABASE_ENTRY_FORMAT, [1], [Legacy database entry format])
1390 fi
1391 AC_DEFINE([WIBBLE], 1, [Just a test.])
1392
1393 AC_ARG_ENABLE([static-bins],
1394     AS_HELP_STRING([--enable-static-bins],[Statically link executables.]))
1395 AM_CONDITIONAL([STATIC_BINS], [test "x$enable_static_bins" = "xyes"])
1396
1397 AC_ARG_WITH(
1398         [preopen-mods],
1399         AS_HELP_STRING([--with-preopen-mods],[Modules to preopen in daemon (default: all).]),
1400         [PREOPEN_MODS=$withval], [PREOPEN_MODS="all"])
1401 AM_CONDITIONAL([PREOPEN_MODS], [test "x$PREOPEN_MODS" != "xall"])
1402 if test "x$PREOPEN_MODS" != "xall" ; then
1403     tmpLIBS=""
1404     for mod in $PREOPEN_MODS; do
1405         tmpLIBS="$tmpLIBS module-$mod.la"
1406     done
1407     PREOPEN_MODS="$tmpLIBS"
1408     AC_SUBST(PREOPEN_MODS)
1409 fi
1410
1411 AC_ARG_WITH(
1412         [module-dir],
1413         AS_HELP_STRING([--with-module-dir],[Directory where to install the modules to (defaults to ${libdir}/pulse-${PA_MAJORMINOR}/modules]),
1414         [modlibexecdir=$withval], [modlibexecdir="${libdir}/pulse-${PA_MAJORMINOR}/modules"])
1415
1416 AC_SUBST(modlibexecdir)
1417 AX_DEFINE_DIR(PA_DLSEARCHPATH, modlibexecdir, [Modules dir])
1418
1419 AC_ARG_WITH(
1420         [udev-rules-dir],
1421         AS_HELP_STRING([--with-udev-rules-dir],[Directory where to install udev rules to (defaults to /lib/udev/rules.d)]),
1422         [udevrulesdir=$withval], [udevrulesdir="/lib/udev/rules.d"])
1423
1424 AC_SUBST(udevrulesdir)
1425
1426 AC_ARG_ENABLE([force-preopen],
1427     AS_HELP_STRING([--enable-force-preopen],[Preopen modules, even when dlopen() is supported.]))
1428
1429 if test "x$enable_force_preopen" = "xyes"; then
1430     FORCE_PREOPEN=yes
1431 else
1432     FORCE_PREOPEN=no
1433 fi
1434
1435 AM_CONDITIONAL([FORCE_PREOPEN], [test "x$FORCE_PREOPEN" = "xyes"])
1436
1437 AC_CONFIG_FILES([
1438 Makefile
1439 src/Makefile
1440 man/Makefile
1441 libpulse.pc
1442 libpulse-simple.pc
1443 libpulse-mainloop-glib.pc
1444 doxygen/Makefile
1445 doxygen/doxygen.conf
1446 src/pulse/version.h
1447 po/Makefile.in
1448 man/pulseaudio.1.xml
1449 man/esdcompat.1.xml
1450 man/pax11publish.1.xml
1451 man/paplay.1.xml
1452 man/pacat.1.xml
1453 man/pacmd.1.xml
1454 man/pactl.1.xml
1455 man/pasuspender.1.xml
1456 man/padsp.1.xml
1457 man/pulse-daemon.conf.5.xml
1458 man/pulse-client.conf.5.xml
1459 man/default.pa.5.xml
1460 man/pulse-cli-syntax.5.xml
1461 man/start-pulseaudio-kde.1.xml
1462 man/start-pulseaudio-x11.1.xml
1463 pulseaudio-module-devel.pc
1464 ])
1465
1466 AC_CONFIG_FILES([src/esdcompat:src/daemon/esdcompat.in], [chmod +x src/esdcompat])
1467 AC_CONFIG_FILES([src/start-pulseaudio-x11:src/daemon/start-pulseaudio-x11.in], [chmod +x src/start-pulseaudio-x11])
1468 AC_CONFIG_FILES([src/start-pulseaudio-kde:src/daemon/start-pulseaudio-kde.in], [chmod +x src/start-pulseaudio-kde])
1469 AC_CONFIG_FILES([src/client.conf:src/pulse/client.conf.in])
1470 AC_CONFIG_FILES([src/daemon.conf:src/daemon/daemon.conf.in],
1471     [m4 src/daemon.conf > src/daemon.conf.gen && mv src/daemon.conf.gen src/daemon.conf])
1472 AC_CONFIG_FILES([src/default.pa:src/daemon/default.pa.in],
1473     [m4 src/default.pa > src/default.pa.gen && mv src/default.pa.gen src/default.pa])
1474 AC_CONFIG_FILES([src/system.pa:src/daemon/system.pa.in],
1475     [m4 src/system.pa > src/system.pa.gen && mv src/system.pa.gen src/system.pa])
1476
1477 # CMake related ProjectConfig files
1478 PA_LIBDIR="$libdir"
1479 AX_DEFINE_DIR(PA_LIBDIR, PA_LIBDIR, [PulseAudio library dir])
1480 PA_INCDIR="$includedir"
1481 AX_DEFINE_DIR(PA_INCDIR, PA_INCDIR, [PulseAudio include dir])
1482
1483 AC_CONFIG_FILES([PulseAudioConfig.cmake:PulseAudioConfig.cmake.in],
1484     [m4 PulseAudioConfig.cmake > PulseAudioConfig.cmake.gen && mv PulseAudioConfig.cmake.gen PulseAudioConfig.cmake])
1485 AC_CONFIG_FILES([PulseAudioConfigVersion.cmake])
1486
1487 AC_OUTPUT
1488
1489 # ==========================================================================
1490
1491 AS_IF([test "x$HAVE_X11" = "x1"], ENABLE_X11=yes, ENABLE_X11=no)
1492 AS_IF([test "x$HAVE_OSS_OUTPUT" = "x1"], ENABLE_OSS_OUTPUT=yes, ENABLE_OSS_OUTPUT=no)
1493 AS_IF([test "x$HAVE_OSS_WRAPPER" = "x1"], ENABLE_OSS_WRAPPER=yes, ENABLE_OSS_WRAPPER=no)
1494 AS_IF([test "x$HAVE_ALSA" = "x1"], ENABLE_ALSA=yes, ENABLE_ALSA=no)
1495 AS_IF([test "x$HAVE_COREAUDIO" = "x1"], ENABLE_COREAUDIO=yes, ENABLE_COREAUDIO=no)
1496 AS_IF([test "x$HAVE_SOLARIS" = "x1"], ENABLE_SOLARIS=yes, ENABLE_SOLARIS=no)
1497 AS_IF([test "x$HAVE_WAVEOUT" = "x1"], ENABLE_WAVEOUT=yes, ENABLE_WAVEOUT=no)
1498 AS_IF([test "x$HAVE_GLIB20" = "x1"], ENABLE_GLIB20=yes, ENABLE_GLIB20=no)
1499 AS_IF([test "x$HAVE_GTK30" = "x1"], ENABLE_GTK30=yes, ENABLE_GTK30=no)
1500 AS_IF([test "x$HAVE_GCONF" = "x1"], ENABLE_GCONF=yes, ENABLE_GCONF=no)
1501 AS_IF([test "x$HAVE_AVAHI" = "x1"], ENABLE_AVAHI=yes, ENABLE_AVAHI=no)
1502 AS_IF([test "x$HAVE_JACK" = "x1"], ENABLE_JACK=yes, ENABLE_JACK=no)
1503 AS_IF([test "x$HAVE_LIBASYNCNS" = "x1"], ENABLE_LIBASYNCNS=yes, ENABLE_LIBASYNCNS=no)
1504 AS_IF([test "x$HAVE_LIRC" = "x1"], ENABLE_LIRC=yes, ENABLE_LIRC=no)
1505 AS_IF([test "x$HAVE_XEN" = "x1"], ENABLE_XEN=yes, ENABLE_XEN=no)
1506 AS_IF([test "x$HAVE_DBUS" = "x1"], ENABLE_DBUS=yes, ENABLE_DBUS=no)
1507 AS_IF([test "x$HAVE_UDEV" = "x1"], ENABLE_UDEV=yes, ENABLE_UDEV=no)
1508 AS_IF([test "x$HAVE_SYSTEMD" = "x1"], ENABLE_SYSTEMD=yes, ENABLE_SYSTEMD=no)
1509 AS_IF([test "x$HAVE_BLUEZ_4" = "x1"], ENABLE_BLUEZ_4=yes, ENABLE_BLUEZ_4=no)
1510 AS_IF([test "x$HAVE_BLUEZ_5" = "x1"], ENABLE_BLUEZ_5=yes, ENABLE_BLUEZ_5=no)
1511 AS_IF([test "x$HAVE_HAL_COMPAT" = "x1"], ENABLE_HAL_COMPAT=yes, ENABLE_HAL_COMPAT=no)
1512 AS_IF([test "x$HAVE_UDEV_ONLY_USB" = "x1"], ENABLE_UDEV_ONLY_USB=yes, ENABLE_UDEV_ONLY_USB=no)
1513 AS_IF([test "x$HAVE_TCPWRAP" = "x1"], ENABLE_TCPWRAP=yes, ENABLE_TCPWRAP=no)
1514 AS_IF([test "x$HAVE_LIBSAMPLERATE" = "x1"], ENABLE_LIBSAMPLERATE=yes, ENABLE_LIBSAMPLERATE=no)
1515 AS_IF([test "x$HAVE_IPV6" = "x1"], ENABLE_IPV6=yes, ENABLE_IPV6=no)
1516 AS_IF([test "x$HAVE_OPENSSL" = "x1"], ENABLE_OPENSSL=yes, ENABLE_OPENSSL=no)
1517 AS_IF([test "x$HAVE_FFTW" = "x1"], ENABLE_FFTW=yes, ENABLE_FFTW=no)
1518 AS_IF([test "x$HAVE_ORC" = "xyes"], ENABLE_ORC=yes, ENABLE_ORC=no)
1519 AS_IF([test "x$HAVE_ADRIAN_EC" = "x1"], ENABLE_ADRIAN_EC=yes, ENABLE_ADRIAN_EC=no)
1520 AS_IF([test "x$HAVE_SPEEX" = "x1"], ENABLE_SPEEX=yes, ENABLE_SPEEX=no)
1521 AS_IF([test "x$HAVE_WEBRTC" = "x1"], ENABLE_WEBRTC=yes, ENABLE_WEBRTC=no)
1522 AS_IF([test "x$HAVE_TDB" = "x1"], ENABLE_TDB=yes, ENABLE_TDB=no)
1523 AS_IF([test "x$HAVE_GDBM" = "x1"], ENABLE_GDBM=yes, ENABLE_GDBM=no)
1524 AS_IF([test "x$HAVE_SIMPLEDB" = "x1"], ENABLE_SIMPLEDB=yes, ENABLE_SIMPLEDB=no)
1525 AS_IF([test "x$HAVE_ESOUND" = "x1"], ENABLE_ESOUND=yes, ENABLE_ESOUND=no)
1526 AS_IF([test "x$HAVE_ESOUND" = "x1" -a "x$USE_PER_USER_ESOUND_SOCKET" = "x1"], ENABLE_PER_USER_ESOUND_SOCKET=yes, ENABLE_PER_USER_ESOUND_SOCKET=no)
1527 AS_IF([test "x$HAVE_GCOV" = "x1"], ENABLE_GCOV=yes, ENABLE_GCOV=no)
1528 AS_IF([test "x$HAVE_LIBCHECK" = "x1"], ENABLE_TESTS=yes, ENABLE_TESTS=no)
1529 AS_IF([test "x$enable_legacy_database_entry_format" != "xno"], ENABLE_LEGACY_DATABASE_ENTRY_FORMAT=yes, ENABLE_LEGACY_DATABASE_ENTRY_FORMAT=no)
1530 AS_IF([test "x$USE_SAMSUNG_POLICY" = "x1"], ENABLE_SAMSUNG_POLICY=yes, ENABLE_SAMSUNG_POLICY=no)
1531 AS_IF([test "x$USE_DLOG" = "x1"], ENABLE_DLOG=yes, ENABLE_DLOG=no)
1532 AS_IF([test "x$USE_PM_LOCK" = "x1"], ENABLE_PM_LOCK=yes, ENABLE_PM_LOCK=no)
1533 AS_IF([test "x$USE_BT_PROFILE_SET" = "x1"], ENABLE_BT_PROFILE_SET=yes, ENABLE_BT_PROFILE_SET=no)
1534 AS_IF([test "x$HAVE_BT_A2DP_APTX" = "x1"], HAVE_BT_A2DP_APTX=yes, HAVE_BT_A2DP_APTX=no)
1535
1536 echo "
1537  ---{ $PACKAGE_NAME $VERSION }---
1538
1539     prefix:                        ${prefix}
1540     sysconfdir:                    ${sysconfdir}
1541     localstatedir:                 ${localstatedir}
1542     modlibexecdir:                 ${modlibexecdir}
1543     System Runtime Path:           ${PA_SYSTEM_RUNTIME_PATH}
1544     System State Path:             ${PA_SYSTEM_STATE_PATH}
1545     System Config Path:            ${PA_SYSTEM_CONFIG_PATH}
1546     Compiler:                      ${CC}
1547     CFLAGS:                        ${CFLAGS}
1548     CPPFLAGS:                      ${CPPFLAGS}
1549     LIBS:                          ${LIBS}
1550
1551     Enable X11:                    ${ENABLE_X11}
1552     Enable OSS Output:             ${ENABLE_OSS_OUTPUT}
1553     Enable OSS Wrapper:            ${ENABLE_OSS_WRAPPER}
1554     Enable EsounD:                 ${ENABLE_ESOUND}
1555     Enable Alsa:                   ${ENABLE_ALSA}
1556     Enable CoreAudio:              ${ENABLE_COREAUDIO}
1557     Enable Solaris:                ${ENABLE_SOLARIS}
1558     Enable WaveOut:                ${ENABLE_WAVEOUT}
1559     Enable GLib 2.0:               ${ENABLE_GLIB20}
1560     Enable Gtk+ 3.0:               ${ENABLE_GTK30}
1561     Enable GConf:                  ${ENABLE_GCONF}
1562     Enable Avahi:                  ${ENABLE_AVAHI}
1563     Enable Jack:                   ${ENABLE_JACK}
1564     Enable Async DNS:              ${ENABLE_LIBASYNCNS}
1565     Enable LIRC:                   ${ENABLE_LIRC}
1566     Enable Xen PV driver:          ${ENABLE_XEN}
1567     Enable D-Bus:                  ${ENABLE_DBUS}
1568       Enable BlueZ 4:              ${ENABLE_BLUEZ_4}
1569       Enable BlueZ 5:              ${ENABLE_BLUEZ_5}
1570         headset backed:            ${BLUETOOTH_HEADSET_BACKEND}
1571     Enable udev:                   ${ENABLE_UDEV}
1572       Enable HAL->udev compat:     ${ENABLE_HAL_COMPAT}
1573     Enable systemd login:          ${ENABLE_SYSTEMD}
1574     Enable TCP Wrappers:           ${ENABLE_TCPWRAP}
1575     Enable libsamplerate:          ${ENABLE_LIBSAMPLERATE}
1576     Enable IPv6:                   ${ENABLE_IPV6}
1577     Enable OpenSSL (for Airtunes): ${ENABLE_OPENSSL}
1578     Enable fftw:                   ${ENABLE_FFTW}
1579     Enable orc:                    ${ENABLE_ORC}
1580     Enable Adrian echo canceller:  ${ENABLE_ADRIAN_EC}
1581     Enable speex (resampler, AEC): ${ENABLE_SPEEX}
1582     Enable WebRTC echo canceller:  ${ENABLE_WEBRTC}
1583     Enable gcov coverage:          ${ENABLE_GCOV}
1584     Enable unit tests:             ${ENABLE_TESTS}
1585     Database
1586       tdb:                         ${ENABLE_TDB}
1587       gdbm:                        ${ENABLE_GDBM}
1588       simple database:             ${ENABLE_SIMPLEDB}
1589
1590     System User:                   ${PA_SYSTEM_USER}
1591     System Group:                  ${PA_SYSTEM_GROUP}
1592     Access Group:                  ${PA_ACCESS_GROUP}
1593     Enable per-user EsounD socket: ${ENABLE_PER_USER_ESOUND_SOCKET}
1594     Force preopen:                 ${FORCE_PREOPEN}
1595     Preopened modules:             ${PREOPEN_MODS}
1596
1597     Legacy Database Entry Support: ${ENABLE_LEGACY_DATABASE_ENTRY_FORMAT}
1598
1599     Tizen
1600       samsung policy:              ${ENABLE_SAMSUNG_POLICY}
1601       dlog:                        ${ENABLE_DLOG}
1602       pmapi:                       ${ENABLE_PM_LOCK}
1603       bluetooth profile set:       ${ENABLE_BT_PROFILE_SET}
1604       bluetooth aptx codec:        ${HAVE_BT_A2DP_APTX}
1605       udev with usb only:          ${ENABLE_UDEV_ONLY_USB}
1606 "
1607
1608 if test "${ENABLE_SPEEX}" = "no" && test "${ENABLE_WEBRTC}" = "no" && test "${ENABLE_ADRIAN_EC}" = "no" ; then
1609 AC_MSG_ERROR([At least one echo canceller implementation must be available.])
1610 fi
1611
1612 if test "${ENABLE_DBUS}" = "no" && test "x$os_is_win32" != "x1" ; then
1613    echo "
1614 ===== WARNING WARNING WARNING WARNING WARNING WARNING WARNING =====
1615 You do not have D-Bus support enabled. It is strongly recommended
1616 that you enable D-Bus support if your platform supports it.
1617 Many parts of PulseAudio use D-Bus, from ConsoleKit interaction
1618 to the Device Reservation Protocol to speak to JACK, Bluetooth
1619 support and even a native control protocol for communicating and
1620 controling the PulseAudio daemon itself.
1621 ===== WARNING WARNING WARNING WARNING WARNING WARNING WARNING =====
1622 "
1623 fi
1624
1625 if test "${ENABLE_UDEV}" = "no" && test "x$os_is_win32" != "x1" ; then
1626    echo "
1627 ===== WARNING WARNING WARNING WARNING WARNING WARNING WARNING =====
1628 You do not have udev support enabled. It is strongly recommended
1629 that you enable udev support if your platform supports it as it is
1630 the primary method used to detect hardware audio devices (on Linux)
1631 and is thus a critical part of PulseAudio on that platform.
1632 ===== WARNING WARNING WARNING WARNING WARNING WARNING WARNING =====
1633 "
1634 fi
1635
1636 if test "${ENABLE_SPEEX}" = "no" && test "x$os_is_win32" != "x1" ; then
1637    echo "
1638 ===== WARNING WARNING WARNING WARNING WARNING WARNING WARNING =====
1639 You do not have speex support enabled. It is strongly recommended
1640 that you enable speex support if your platform supports it as it is
1641 the primary method used for audio resampling and is thus a critical
1642 part of PulseAudio on that platform.
1643 ===== WARNING WARNING WARNING WARNING WARNING WARNING WARNING =====
1644 "
1645 fi