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