Revert "launch: Disable autospawn by default when systemd daemon support is enabled."
[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 AC_SUBST(HAVE_SYSTEMD_DAEMON)
1234 AM_CONDITIONAL([HAVE_SYSTEMD_DAEMON], [test "x$HAVE_SYSTEMD_DAEMON" = x1])
1235 AS_IF([test "x$HAVE_SYSTEMD_DAEMON" = "x1"], AC_DEFINE([HAVE_SYSTEMD_DAEMON], 1, [Have SYSTEMDDAEMON?]))
1236
1237 #### systemd login support (optional) ####
1238
1239 AS_IF([test "x$enable_systemd_login" != "xno"],
1240     [AS_IF([test "x$HAVE_SYSTEMD_LOGIN" != "x1"], [PKG_CHECK_MODULES(SYSTEMDLOGIN, [ libsystemd-login ], HAVE_SYSTEMD_LOGIN=1, HAVE_SYSTEMD_LOGIN=0)])],
1241     HAVE_SYSTEMD_LOGIN=0)
1242
1243 AS_IF([test "x$enable_systemd_login" = "xyes" && test "x$HAVE_SYSTEMD_LOGIN" = "x0"],
1244     [AC_MSG_ERROR([*** Needed systemd login support not found])])
1245
1246 AC_SUBST(HAVE_SYSTEMD_LOGIN)
1247 AM_CONDITIONAL([HAVE_SYSTEMD_LOGIN], [test "x$HAVE_SYSTEMD_LOGIN" = x1])
1248 AS_IF([test "x$HAVE_SYSTEMD_LOGIN" = "x1"], AC_DEFINE([HAVE_SYSTEMD_LOGIN], 1, [Have SYSTEMDLOGIN?]))
1249
1250 #### systemd journal support (optional) ####
1251
1252 AS_IF([test "x$enable_systemd_journal" != "xno"],
1253     [AS_IF([test "x$HAVE_SYSTEMD_JOURNAL" != "x1"], [PKG_CHECK_MODULES(SYSTEMDJOURNAL, [ libsystemd-journal ], HAVE_SYSTEMD_JOURNAL=1, HAVE_SYSTEMD_JOURNAL=0)])],
1254     HAVE_SYSTEMD_JOURNAL=0)
1255
1256 AS_IF([test "x$enable_systemd_journal" = "xyes" && test "x$HAVE_SYSTEMD_JOURNAL" = "x0"],
1257     [AC_MSG_ERROR([*** Needed systemd journal support not found])])
1258
1259 AC_SUBST(HAVE_SYSTEMD_JOURNAL)
1260 AM_CONDITIONAL([HAVE_SYSTEMD_JOURNAL], [test "x$HAVE_SYSTEMD_JOURNAL" = x1])
1261 AS_IF([test "x$HAVE_SYSTEMD_JOURNAL" = "x1"], AC_DEFINE([HAVE_SYSTEMD_JOURNAL], 1, [Have SYSTEMDJOURNAL?]))
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
1392 AC_ARG_ENABLE([static-bins],
1393     AS_HELP_STRING([--enable-static-bins],[Statically link executables.]))
1394 AM_CONDITIONAL([STATIC_BINS], [test "x$enable_static_bins" = "xyes"])
1395
1396 AC_ARG_WITH(
1397         [preopen-mods],
1398         AS_HELP_STRING([--with-preopen-mods],[Modules to preopen in daemon (default: all).]),
1399         [PREOPEN_MODS=$withval], [PREOPEN_MODS="all"])
1400 AM_CONDITIONAL([PREOPEN_MODS], [test "x$PREOPEN_MODS" != "xall"])
1401 if test "x$PREOPEN_MODS" != "xall" ; then
1402     tmpLIBS=""
1403     for mod in $PREOPEN_MODS; do
1404         tmpLIBS="$tmpLIBS module-$mod.la"
1405     done
1406     PREOPEN_MODS="$tmpLIBS"
1407     AC_SUBST(PREOPEN_MODS)
1408 fi
1409
1410 AC_ARG_WITH(
1411         [module-dir],
1412         AS_HELP_STRING([--with-module-dir],[Directory where to install the modules to (defaults to ${libdir}/pulse-${PA_MAJORMINOR}/modules]),
1413         [modlibexecdir=$withval], [modlibexecdir="${libdir}/pulse-${PA_MAJORMINOR}/modules"])
1414
1415 AC_SUBST(modlibexecdir)
1416 AX_DEFINE_DIR(PA_DLSEARCHPATH, modlibexecdir, [Modules dir])
1417
1418 AC_ARG_WITH(
1419         [udev-rules-dir],
1420         AS_HELP_STRING([--with-udev-rules-dir],[Directory where to install udev rules to (defaults to /lib/udev/rules.d)]),
1421         [udevrulesdir=$withval], [udevrulesdir="/lib/udev/rules.d"])
1422
1423 AC_SUBST(udevrulesdir)
1424
1425 AC_ARG_WITH(
1426         [zsh-completion-dir],
1427         AS_HELP_STRING([--with-zsh-completion-dir], [Zsh completions directory (defaults to ${datadir}/zsh/site-functions)]),
1428         [zshcompletiondir=$withval], [zshcompletiondir="${datadir}/zsh/site-functions"])
1429
1430 AC_SUBST(zshcompletiondir)
1431
1432 AC_ARG_ENABLE([force-preopen],
1433     AS_HELP_STRING([--enable-force-preopen],[Preopen modules, even when dlopen() is supported.]))
1434
1435 if test "x$enable_force_preopen" = "xyes"; then
1436     FORCE_PREOPEN=yes
1437 else
1438     FORCE_PREOPEN=no
1439 fi
1440
1441 AM_CONDITIONAL([FORCE_PREOPEN], [test "x$FORCE_PREOPEN" = "xyes"])
1442
1443 AC_CONFIG_FILES([
1444 Makefile
1445 src/Makefile
1446 man/Makefile
1447 libpulse.pc
1448 libpulse-simple.pc
1449 libpulse-mainloop-glib.pc
1450 doxygen/Makefile
1451 doxygen/doxygen.conf
1452 src/pulse/version.h
1453 po/Makefile.in
1454 man/pulseaudio.1.xml
1455 man/esdcompat.1.xml
1456 man/pax11publish.1.xml
1457 man/paplay.1.xml
1458 man/pacat.1.xml
1459 man/pacmd.1.xml
1460 man/pactl.1.xml
1461 man/pasuspender.1.xml
1462 man/padsp.1.xml
1463 man/pulse-daemon.conf.5.xml
1464 man/pulse-client.conf.5.xml
1465 man/default.pa.5.xml
1466 man/pulse-cli-syntax.5.xml
1467 man/start-pulseaudio-x11.1.xml
1468 ])
1469
1470 AC_CONFIG_FILES([src/esdcompat:src/daemon/esdcompat.in], [chmod +x src/esdcompat])
1471 AC_CONFIG_FILES([src/start-pulseaudio-x11:src/daemon/start-pulseaudio-x11.in], [chmod +x src/start-pulseaudio-x11])
1472 AC_CONFIG_FILES([src/client.conf:src/pulse/client.conf.in])
1473 AC_CONFIG_FILES([src/daemon.conf:src/daemon/daemon.conf.in],
1474     [m4 src/daemon.conf > src/daemon.conf.gen && mv src/daemon.conf.gen src/daemon.conf])
1475 AC_CONFIG_FILES([src/default.pa:src/daemon/default.pa.in],
1476     [m4 src/default.pa > src/default.pa.gen && mv src/default.pa.gen src/default.pa])
1477 AC_CONFIG_FILES([src/system.pa:src/daemon/system.pa.in],
1478     [m4 src/system.pa > src/system.pa.gen && mv src/system.pa.gen src/system.pa])
1479 AS_IF([test "x$HAVE_SYSTEMD_DAEMON" = "x1"],
1480     [
1481         AC_CONFIG_FILES([src/pulseaudio.service:src/daemon/systemd/user/pulseaudio.service.in])
1482     ])
1483
1484 # CMake related ProjectConfig files
1485 PA_LIBDIR="$libdir"
1486 AX_DEFINE_DIR(PA_LIBDIR, PA_LIBDIR, [PulseAudio library dir])
1487 PA_INCDIR="$includedir"
1488 AX_DEFINE_DIR(PA_INCDIR, PA_INCDIR, [PulseAudio include dir])
1489
1490 AC_CONFIG_FILES([PulseAudioConfig.cmake:PulseAudioConfig.cmake.in],
1491     [m4 PulseAudioConfig.cmake > PulseAudioConfig.cmake.gen && mv PulseAudioConfig.cmake.gen PulseAudioConfig.cmake])
1492 AC_CONFIG_FILES([PulseAudioConfigVersion.cmake])
1493
1494 AC_OUTPUT
1495
1496 # ==========================================================================
1497
1498 AS_IF([test "x$HAVE_X11" = "x1"], ENABLE_X11=yes, ENABLE_X11=no)
1499 AS_IF([test "x$HAVE_OSS_OUTPUT" = "x1"], ENABLE_OSS_OUTPUT=yes, ENABLE_OSS_OUTPUT=no)
1500 AS_IF([test "x$HAVE_OSS_WRAPPER" = "x1"], ENABLE_OSS_WRAPPER=yes, ENABLE_OSS_WRAPPER=no)
1501 AS_IF([test "x$HAVE_ALSA" = "x1"], ENABLE_ALSA=yes, ENABLE_ALSA=no)
1502 AS_IF([test "x$HAVE_COREAUDIO" = "x1"], ENABLE_COREAUDIO=yes, ENABLE_COREAUDIO=no)
1503 AS_IF([test "x$HAVE_SOLARIS" = "x1"], ENABLE_SOLARIS=yes, ENABLE_SOLARIS=no)
1504 AS_IF([test "x$HAVE_WAVEOUT" = "x1"], ENABLE_WAVEOUT=yes, ENABLE_WAVEOUT=no)
1505 AS_IF([test "x$HAVE_GLIB20" = "x1"], ENABLE_GLIB20=yes, ENABLE_GLIB20=no)
1506 AS_IF([test "x$HAVE_GTK30" = "x1"], ENABLE_GTK30=yes, ENABLE_GTK30=no)
1507 AS_IF([test "x$HAVE_GCONF" = "x1"], ENABLE_GCONF=yes, ENABLE_GCONF=no)
1508 AS_IF([test "x$HAVE_AVAHI" = "x1"], ENABLE_AVAHI=yes, ENABLE_AVAHI=no)
1509 AS_IF([test "x$HAVE_JACK" = "x1"], ENABLE_JACK=yes, ENABLE_JACK=no)
1510 AS_IF([test "x$HAVE_LIBASYNCNS" = "x1"], ENABLE_LIBASYNCNS=yes, ENABLE_LIBASYNCNS=no)
1511 AS_IF([test "x$HAVE_LIRC" = "x1"], ENABLE_LIRC=yes, ENABLE_LIRC=no)
1512 AS_IF([test "x$HAVE_XEN" = "x1"], ENABLE_XEN=yes, ENABLE_XEN=no)
1513 AS_IF([test "x$HAVE_DBUS" = "x1"], ENABLE_DBUS=yes, ENABLE_DBUS=no)
1514 AS_IF([test "x$HAVE_UDEV" = "x1"], ENABLE_UDEV=yes, ENABLE_UDEV=no)
1515 AS_IF([test "x$HAVE_SYSTEMD_DAEMON" = "x1"], ENABLE_SYSTEMD_DAEMON=yes, ENABLE_SYSTEMD_DAEMON=no)
1516 AS_IF([test "x$HAVE_SYSTEMD_LOGIN" = "x1"], ENABLE_SYSTEMD_LOGIN=yes, ENABLE_SYSTEMD_LOGIN=no)
1517 AS_IF([test "x$HAVE_SYSTEMD_JOURNAL" = "x1"], ENABLE_SYSTEMD_JOURNAL=yes, ENABLE_SYSTEMD_JOURNAL=no)
1518 AS_IF([test "x$HAVE_BLUEZ_4" = "x1"], ENABLE_BLUEZ_4=yes, ENABLE_BLUEZ_4=no)
1519 AS_IF([test "x$HAVE_BLUEZ_5" = "x1"], ENABLE_BLUEZ_5=yes, ENABLE_BLUEZ_5=no)
1520 AS_IF([test "x$HAVE_BLUEZ_5_OFONO_HEADSET" = "x1"], ENABLE_BLUEZ_5_OFONO_HEADSET=yes, ENABLE_BLUEZ_5_OFONO_HEADSET=no)
1521 AS_IF([test "x$HAVE_BLUEZ_5_NATIVE_HEADSET" = "x1"], ENABLE_BLUEZ_5_NATIVE_HEADSET=yes, ENABLE_BLUEZ_5_NATIVE_HEADSET=no)
1522 AS_IF([test "x$HAVE_HAL_COMPAT" = "x1"], ENABLE_HAL_COMPAT=yes, ENABLE_HAL_COMPAT=no)
1523 AS_IF([test "x$HAVE_TCPWRAP" = "x1"], ENABLE_TCPWRAP=yes, ENABLE_TCPWRAP=no)
1524 AS_IF([test "x$HAVE_LIBSAMPLERATE" = "x1"], ENABLE_LIBSAMPLERATE="yes (DEPRECATED)", ENABLE_LIBSAMPLERATE=no)
1525 AS_IF([test "x$HAVE_IPV6" = "x1"], ENABLE_IPV6=yes, ENABLE_IPV6=no)
1526 AS_IF([test "x$HAVE_OPENSSL" = "x1"], ENABLE_OPENSSL=yes, ENABLE_OPENSSL=no)
1527 AS_IF([test "x$HAVE_FFTW" = "x1"], ENABLE_FFTW=yes, ENABLE_FFTW=no)
1528 AS_IF([test "x$HAVE_ORC" = "xyes"], ENABLE_ORC=yes, ENABLE_ORC=no)
1529 AS_IF([test "x$HAVE_ADRIAN_EC" = "x1"], ENABLE_ADRIAN_EC=yes, ENABLE_ADRIAN_EC=no)
1530 AS_IF([test "x$HAVE_SPEEX" = "x1"], ENABLE_SPEEX=yes, ENABLE_SPEEX=no)
1531 AS_IF([test "x$HAVE_WEBRTC" = "x1"], ENABLE_WEBRTC=yes, ENABLE_WEBRTC=no)
1532 AS_IF([test "x$HAVE_TDB" = "x1"], ENABLE_TDB=yes, ENABLE_TDB=no)
1533 AS_IF([test "x$HAVE_GDBM" = "x1"], ENABLE_GDBM=yes, ENABLE_GDBM=no)
1534 AS_IF([test "x$HAVE_SIMPLEDB" = "x1"], ENABLE_SIMPLEDB=yes, ENABLE_SIMPLEDB=no)
1535 AS_IF([test "x$HAVE_ESOUND" = "x1"], ENABLE_ESOUND=yes, ENABLE_ESOUND=no)
1536 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)
1537 AS_IF([test "x$HAVE_GCOV" = "x1"], ENABLE_GCOV=yes, ENABLE_GCOV=no)
1538 AS_IF([test "x$HAVE_LIBCHECK" = "x1"], ENABLE_TESTS=yes, ENABLE_TESTS=no)
1539 AS_IF([test "x$enable_legacy_database_entry_format" != "xno"], ENABLE_LEGACY_DATABASE_ENTRY_FORMAT=yes, ENABLE_LEGACY_DATABASE_ENTRY_FORMAT=no)
1540
1541 echo "
1542  ---{ $PACKAGE_NAME $VERSION }---
1543
1544     prefix:                        ${prefix}
1545     sysconfdir:                    ${sysconfdir}
1546     localstatedir:                 ${localstatedir}
1547     modlibexecdir:                 ${modlibexecdir}
1548     System Runtime Path:           ${PA_SYSTEM_RUNTIME_PATH}
1549     System State Path:             ${PA_SYSTEM_STATE_PATH}
1550     System Config Path:            ${PA_SYSTEM_CONFIG_PATH}
1551     Zsh completions directory:     ${zshcompletiondir}
1552     Compiler:                      ${CC}
1553     CFLAGS:                        ${CFLAGS}
1554     CPPFLAGS:                      ${CPPFLAGS}
1555     LIBS:                          ${LIBS}
1556
1557     Enable X11:                    ${ENABLE_X11}
1558     Enable OSS Output:             ${ENABLE_OSS_OUTPUT}
1559     Enable OSS Wrapper:            ${ENABLE_OSS_WRAPPER}
1560     Enable EsounD:                 ${ENABLE_ESOUND}
1561     Enable Alsa:                   ${ENABLE_ALSA}
1562     Enable CoreAudio:              ${ENABLE_COREAUDIO}
1563     Enable Solaris:                ${ENABLE_SOLARIS}
1564     Enable WaveOut:                ${ENABLE_WAVEOUT}
1565     Enable GLib 2.0:               ${ENABLE_GLIB20}
1566     Enable Gtk+ 3.0:               ${ENABLE_GTK30}
1567     Enable GConf:                  ${ENABLE_GCONF}
1568     Enable Avahi:                  ${ENABLE_AVAHI}
1569     Enable Jack:                   ${ENABLE_JACK}
1570     Enable Async DNS:              ${ENABLE_LIBASYNCNS}
1571     Enable LIRC:                   ${ENABLE_LIRC}
1572     Enable Xen PV driver:          ${ENABLE_XEN}
1573     Enable D-Bus:                  ${ENABLE_DBUS}
1574       Enable BlueZ 4:              ${ENABLE_BLUEZ_4}
1575       Enable BlueZ 5:              ${ENABLE_BLUEZ_5}
1576         Enable ofono headsets:     ${ENABLE_BLUEZ_5_OFONO_HEADSET}
1577         Enable native headsets:    ${ENABLE_BLUEZ_5_NATIVE_HEADSET}
1578     Enable udev:                   ${ENABLE_UDEV}
1579       Enable HAL->udev compat:     ${ENABLE_HAL_COMPAT}
1580     Enable systemd
1581       Daemon (Socket Activation):  ${ENABLE_SYSTEMD_DAEMON}
1582       Login (Session Tracking):    ${ENABLE_SYSTEMD_LOGIN}
1583       Journal (Logging):           ${ENABLE_SYSTEMD_JOURNAL}
1584     Enable TCP Wrappers:           ${ENABLE_TCPWRAP}
1585     Enable libsamplerate:          ${ENABLE_LIBSAMPLERATE}
1586     Enable IPv6:                   ${ENABLE_IPV6}
1587     Enable OpenSSL (for Airtunes): ${ENABLE_OPENSSL}
1588     Enable fftw:                   ${ENABLE_FFTW}
1589     Enable orc:                    ${ENABLE_ORC}
1590     Enable Adrian echo canceller:  ${ENABLE_ADRIAN_EC}
1591     Enable speex (resampler, AEC): ${ENABLE_SPEEX}
1592     Enable WebRTC echo canceller:  ${ENABLE_WEBRTC}
1593     Enable gcov coverage:          ${ENABLE_GCOV}
1594     Enable unit tests:             ${ENABLE_TESTS}
1595     Database
1596       tdb:                         ${ENABLE_TDB}
1597       gdbm:                        ${ENABLE_GDBM}
1598       simple database:             ${ENABLE_SIMPLEDB}
1599
1600     System User:                   ${PA_SYSTEM_USER}
1601     System Group:                  ${PA_SYSTEM_GROUP}
1602     Access Group:                  ${PA_ACCESS_GROUP}
1603     Enable per-user EsounD socket: ${ENABLE_PER_USER_ESOUND_SOCKET}
1604     Force preopen:                 ${FORCE_PREOPEN}
1605     Preopened modules:             ${PREOPEN_MODS}
1606
1607     Legacy Database Entry Support: ${ENABLE_LEGACY_DATABASE_ENTRY_FORMAT}
1608 "
1609
1610 if test "${ENABLE_SPEEX}" = "no" && test "${ENABLE_WEBRTC}" = "no" && test "${ENABLE_ADRIAN_EC}" = "no" ; then
1611 AC_MSG_ERROR([At least one echo canceller implementation must be available.])
1612 fi
1613
1614 if test "${ENABLE_DBUS}" = "no" && test "x$os_is_win32" != "x1" ; then
1615    echo "
1616 ===== WARNING WARNING WARNING WARNING WARNING WARNING WARNING =====
1617 You do not have D-Bus support enabled. It is strongly recommended
1618 that you enable D-Bus support if your platform supports it.
1619 Many parts of PulseAudio use D-Bus, from ConsoleKit interaction
1620 to the Device Reservation Protocol to speak to JACK, Bluetooth
1621 support and even a native control protocol for communicating and
1622 controling the PulseAudio daemon itself.
1623 ===== WARNING WARNING WARNING WARNING WARNING WARNING WARNING =====
1624 "
1625 fi
1626
1627 if test "${ENABLE_UDEV}" = "no" && test "x$os_is_win32" != "x1" ; then
1628    echo "
1629 ===== WARNING WARNING WARNING WARNING WARNING WARNING WARNING =====
1630 You do not have udev support enabled. It is strongly recommended
1631 that you enable udev support if your platform supports it as it is
1632 the primary method used to detect hardware audio devices (on Linux)
1633 and is thus a critical part of PulseAudio on that platform.
1634 ===== WARNING WARNING WARNING WARNING WARNING WARNING WARNING =====
1635 "
1636 fi
1637
1638 if test "${ENABLE_SPEEX}" = "no" && test "x$os_is_win32" != "x1" ; then
1639    echo "
1640 ===== WARNING WARNING WARNING WARNING WARNING WARNING WARNING =====
1641 You do not have speex support enabled. It is strongly recommended
1642 that you enable speex support if your platform supports it as it is
1643 the primary method used for audio resampling and is thus a critical
1644 part of PulseAudio on that platform.
1645 ===== WARNING WARNING WARNING WARNING WARNING WARNING WARNING =====
1646 "
1647 fi