netbsd: Revamp NetBSD platform checks
[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, see <http://www.gnu.org/licenses/>.
21
22 AC_PREREQ(2.63)
23
24 AC_INIT([pulseaudio],[m4_esyscmd(./git-version-gen .tarball-version)],[pulseaudio-discuss (at) lists (dot) freedesktop (dot) org],[pulseaudio],[http://pulseaudio.org/])
25 AC_CONFIG_SRCDIR([src/daemon/main.c])
26 AC_CONFIG_MACRO_DIR([m4])
27 AC_CONFIG_HEADERS([config.h])
28 AC_CONFIG_AUX_DIR([build-aux])
29 AM_INIT_AUTOMAKE([foreign 1.11 -Wall -Wno-portability subdir-objects silent-rules color-tests dist-xz tar-ustar])
30
31 AS_IF([! test -n "$VERSION"], [
32    AC_MSG_ERROR([git-version-gen failed])
33 ])
34
35 m4_define(pa_major, `echo $VERSION | cut -d. -f1 | cut -d- -f1`)
36 m4_define(pa_minor, `echo $VERSION | cut -d. -f2 | cut -d- -f1`)
37
38 AC_SUBST(PA_MAJOR, pa_major)
39 AC_SUBST(PA_MINOR, pa_minor)
40 AC_SUBST(PA_MAJORMINOR, pa_major.pa_minor)
41
42 AC_SUBST(PA_API_VERSION, 12)
43 AC_SUBST(PA_PROTOCOL_VERSION, 30)
44
45 # The stable ABI for client applications, for the version info x:y:z
46 # always will hold y=z
47 AC_SUBST(LIBPULSE_VERSION_INFO, [18:2:18])
48
49 # A simplified, synchronous, ABI-stable interface for client
50 # applications, for the version info x:y:z always will hold y=z
51 AC_SUBST(LIBPULSE_SIMPLE_VERSION_INFO, [1:0:1])
52
53 # The ABI-stable GLib adapter for client applications, for the version
54 # info x:y:z always will hold y=z
55 AC_SUBST(LIBPULSE_MAINLOOP_GLIB_VERSION_INFO, [0:5:0])
56
57 AC_CANONICAL_HOST
58 AC_DEFINE_UNQUOTED([CANONICAL_HOST], "$host", [Canonical host string.])
59
60 AC_CHECK_PROG([STOW], [stow], [yes], [no])
61
62 AS_IF([test "x$STOW" = "xyes" && test -d /usr/local/stow], [
63     AC_MSG_NOTICE([*** Found /usr/local/stow: default install prefix set to /usr/local/stow/${PACKAGE_NAME}-${PACKAGE_VERSION} ***])
64     ac_default_prefix="/usr/local/stow/${PACKAGE_NAME}-${PACKAGE_VERSION}"
65 ])
66
67 AM_SILENT_RULES([yes])
68
69
70 #### Checks for programs. ####
71
72 # mkdir -p
73
74 AC_PROG_MKDIR_P
75
76 # ln -s
77
78 AC_PROG_LN_S
79
80 # CC
81
82 AC_PROG_CC
83 AC_PROG_CC_C99
84 AM_PROG_CC_C_O
85 # Only required if you want the WebRTC canceller -- no runtime dep on
86 # libstdc++ otherwise
87 AC_PROG_CXX
88 AC_PROG_GCC_TRADITIONAL
89 AC_USE_SYSTEM_EXTENSIONS
90
91 # M4
92
93 AC_CHECK_PROGS([M4], gm4 m4, no)
94 AS_IF([test "x$M4" = "xno"], AC_MSG_ERROR([m4 missing]))
95
96 # pkg-config
97
98 PKG_PROG_PKG_CONFIG
99
100 # gettext
101
102 if test "x$enable_nls" != "xno"; then
103 IT_PROG_INTLTOOL([0.35.0])
104
105 AM_GNU_GETTEXT_VERSION([0.18.1])
106 AM_GNU_GETTEXT([external])
107
108 GETTEXT_PACKAGE=pulseaudio
109 AC_SUBST([GETTEXT_PACKAGE])
110 AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],["$GETTEXT_PACKAGE"],[Gettext package])
111 else
112 # workaround till an intltool m4 bug is fixed upstream
113 # (https://bugs.launchpad.net/intltool/+bug/904647)
114 USE_NLS=no
115 AC_SUBST(USE_NLS)
116 fi
117
118
119 #### Determine host OS ####
120
121 # if the host has the possibility of sys/capability.h for dropping privileges
122 # used to determine if we should error out if it is not found
123 host_has_caps=0
124
125 os_is_linux=0
126 os_is_win32=0
127 os_is_darwin=0
128
129 AC_MSG_CHECKING([host operating system])
130 case "$host_os" in
131     linux*)
132         AC_MSG_RESULT([linux])
133         host_has_caps=1
134         os_is_linux=1
135     ;;
136     freebsd*)
137         AC_MSG_RESULT([freebsd])
138         host_has_caps=1
139     ;;
140     netbsd*)
141         AC_MSG_RESULT([netbsd])
142     ;;
143     darwin*)
144         AC_MSG_RESULT([darwin])
145         os_is_darwin=1
146         AC_DEFINE([OS_IS_DARWIN], 1, [Build target is Darwin.])
147     ;;
148     mingw*)
149         AC_MSG_RESULT([win32])
150         os_is_win32=1
151         AC_DEFINE([OS_IS_WIN32], 1, [Build target is Windows.])
152     ;;
153     *)
154         AC_MSG_RESULT([unknown])
155     ;;
156 esac
157
158 AM_CONDITIONAL(OS_IS_DARWIN, test "x$os_is_darwin" = "x1")
159 AM_CONDITIONAL(OS_IS_WIN32, test "x$os_is_win32" = "x1")
160 AC_SUBST([OS_IS_WIN32], [$os_is_win32])
161
162 # Platform specific hacks
163 case "$host_os" in
164     darwin* )
165         AC_DEFINE([_DARWIN_C_SOURCE], [200112L], [Needed to get NSIG on Mac OS X])
166     ;;
167     mingw* )
168         AC_DEFINE([WIN32_LEAN_AND_MEAN], 1, [Needed to avoid including unnecessary headers on Windows])
169     ;;
170     solaris* )
171         AC_DEFINE(_XOPEN_SOURCE,       600, [Needed to get declarations for msg_control and msg_controllen on Solaris])
172         AC_DEFINE(__EXTENSIONS__,        1, [Needed to get declarations for msg_control and msg_controllen on Solaris])
173     ;;
174 esac
175
176
177 #### Compiler flags ####
178
179 AX_APPEND_COMPILE_FLAGS(
180     [-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],
181     [], [-pedantic -Werror])
182
183 AS_CASE([" $CFLAGS "], [*" -O0 "*], [], [
184     # Don't append the flag if it already exists.
185     # Only enable fastpath asserts when doing a debug build, e.g. from bootstrap.sh.
186     AX_APPEND_FLAG([-DFASTPATH], [CPPFLAGS])
187
188     # Cannot use AX_APPEND_FLAG here, as it assumes no space inside the added flags.
189     # Cannot append flags with AX_APPEND_FLAG one by one, as this would destroy all fortifications
190     # if CPPFLAGS already contain -D_FORTIFY_SOURCE=2.
191
192     # Warnings to be aware of that appear with -D_FORTIFY_SOURCE=2 but without -U_FORTIFY_SOURCE:
193     # On Fedora 20 with -O0: #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Wcpp]
194     # On Gentoo with -O2:    "_FORTIFY_SOURCE" redefined [enabled by default]
195     AS_VAR_APPEND([CPPFLAGS],[" -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2"])
196 ])
197
198 #### Linker flags ####
199
200 # Check whether the linker supports the -version-script option.
201 # The Make variable $(srcdir) needs to be in the LDFLAGS in that form,
202 # so that it is expanded the right way in every subdir.
203 AX_CHECK_LINK_FLAG(["-Wl,-version-script=${srcdir}/src/map-file"],
204     [VERSIONING_LDFLAGS='-Wl,-version-script=$(abs_top_srcdir)/src/map-file'])
205 AC_SUBST([VERSIONING_LDFLAGS])
206
207 # Use immediate (now) bindings; avoids the funky re-call in itself.
208 # The -z now syntax is lifted from Sun's linker and works with GNU's too, other linkers might be added later.
209 AX_APPEND_LINK_FLAGS([-Wl,-z,now], [IMMEDIATE_LDFLAGS])
210 AC_SUBST([IMMEDIATE_LDFLAGS])
211
212 # On ELF systems we don't want the libraries to be unloaded since we don't clean them up properly,
213 # so we request the nodelete flag to be enabled.
214 # On other systems, we don't really know how to do that, but it's welcome if somebody can tell.
215 AX_APPEND_LINK_FLAGS([-Wl,-z,nodelete], [NODELETE_LDFLAGS], [-shared])
216 AC_SUBST([NODELETE_LDFLAGS])
217
218 # Check for the proper way to build libraries that have no undefined symbols
219 case $host in
220     # FreeBSD (et al.) does not complete linking for shared objects when pthreads
221     # are requested, as different implementations are present.
222     *-freebsd* | *-openbsd*) ;;
223     *)
224         for possible_flag in "-Wl,--no-undefined" "-Wl,-z,defs"; do
225             AX_CHECK_LINK_FLAG([$possible_flag], [NOUNDEFINED_LDFLAGS="$possible_flag"; break])
226         done
227     ;;
228 esac
229 AC_SUBST([NOUNDEFINED_LDFLAGS])
230
231
232 #### Atomic operations ####
233
234 # Native atomic operation support
235 AC_ARG_ENABLE([atomic-arm-linux-helpers],
236     AS_HELP_STRING([--disable-atomic-arm-linux-helpers],[use inline asm or libatomic_ops instead]))
237
238 AC_ARG_ENABLE([atomic-arm-memory-barrier],
239     AS_HELP_STRING([--enable-atomic-arm-memory-barrier],[only really needed in SMP arm systems]))
240
241 if test "x$enable_atomic_arm_memory_barrier" = "xyes"; then
242     AC_DEFINE_UNQUOTED(ATOMIC_ARM_MEMORY_BARRIER_ENABLED, 1, [Enable memory barriers])
243 fi
244
245 # If everything else fails use libatomic_ops
246 need_libatomic_ops=yes
247
248 AC_CACHE_CHECK([whether $CC knows __sync_bool_compare_and_swap()],
249     pulseaudio_cv_sync_bool_compare_and_swap, [
250     AC_LINK_IFELSE(
251         [AC_LANG_PROGRAM([], [[int a = 4; __sync_bool_compare_and_swap(&a, 4, 5);]])],
252         [pulseaudio_cv_sync_bool_compare_and_swap=yes],
253         [pulseaudio_cv_sync_bool_compare_and_swap=no])
254     ])
255
256 if test "$pulseaudio_cv_sync_bool_compare_and_swap" = "yes" ; then
257     AC_DEFINE([HAVE_ATOMIC_BUILTINS], 1, [Have __sync_bool_compare_and_swap() and friends.])
258     need_libatomic_ops=no
259 else
260     # HW specific atomic ops stuff
261     AC_MSG_CHECKING([architecture for native atomic operations])
262     case $host in
263         *-netbsd*)
264             AC_MSG_RESULT([yes])
265             need_libatomic_ops=no
266         ;;
267         arm*)
268             AC_MSG_RESULT([arm])
269             AC_MSG_CHECKING([whether we can use Linux kernel helpers])
270             # The Linux kernel helper functions have been there since 2.6.16. However
271             # compile time checking for kernel version in cross compile environment
272             # (which is usually the case for arm cpu) is tricky (or impossible).
273             if test "x$os_is_linux" = "x1" && test "x$enable_atomic_arm_linux_helpers" != "xno"; then
274                 AC_MSG_RESULT([yes])
275                 AC_DEFINE_UNQUOTED(ATOMIC_ARM_LINUX_HELPERS, 1, [special arm linux implementation])
276                 need_libatomic_ops=no
277             else
278                 AC_MSG_RESULT([no])
279                 AC_CACHE_CHECK([compiler support for arm inline asm atomic operations],
280                     pulseaudio_cv_support_arm_atomic_ops, [
281                     AC_COMPILE_IFELSE(
282                         [AC_LANG_PROGRAM([], [[
283                             volatile int a=0;
284                             int o=0, n=1, r;
285                             asm volatile ("ldrex    %0, [%1]\n"
286                                           "subs  %0, %0, %2\n"
287                                           "strexeq %0, %3, [%1]\n"
288                                           : "=&r" (r)
289                                           : "r" (&a), "Ir" (o), "r" (n)
290                                           : "cc");
291                             return (a==1 ? 0 : -1);
292                         ]])],
293                         [pulseaudio_cv_support_arm_atomic_ops=yes],
294                         [pulseaudio_cv_support_arm_atomic_ops=no])
295                 ])
296                 AS_IF([test "$pulseaudio_cv_support_arm_atomic_ops" = "yes"], [
297                     AC_DEFINE([ATOMIC_ARM_INLINE_ASM], 1, [Have ARM atomic instructions.])
298                     need_libatomic_ops=no
299                 ])
300             fi
301         ;;
302         *-freebsd*)
303             AC_MSG_RESULT([yes])
304             need_libatomic_ops=no
305         ;;
306         *)
307             AC_MSG_RESULT([unknown])
308         ;;
309     esac
310 fi
311
312 # If we're on ARM, check for the ARMV6 instructions we need */
313 case $host in
314   arm*)
315     AC_CACHE_CHECK([support for required armv6 instructions],
316       pulseaudio_cv_support_armv6,
317       [AC_COMPILE_IFELSE(
318          [AC_LANG_PROGRAM([],
319            [[volatile int a = -60000, b = 0xaaaabbbb, c = 0xccccdddd;
320              asm volatile ("ldr r0, %2 \n"
321                            "ldr r2, %3 \n"
322                            "ldr r3, %4 \n"
323                            "ssat r1, #8, r0 \n"
324                            "str r1, %0 \n"
325                            "pkhbt r1, r3, r2, LSL #8 \n"
326                            "str r1, %1 \n"
327                            : "=m" (a), "=m" (b)
328                            : "m" (a), "m" (b), "m" (c)
329                            : "r0", "r1", "r2", "r3", "cc");
330              return (a == -128 && b == 0xaabbdddd) ? 0 : -1;
331            ]])],
332          [pulseaudio_cv_support_armv6=yes],
333          [pulseaudio_cv_support_armv6=no])
334       ])
335     AS_IF([test "$pulseaudio_cv_support_armv6" = "yes"], [
336         AC_DEFINE([HAVE_ARMV6], 1, [Have ARMv6 instructions.])
337       ])
338   ;;
339   *)
340   ;;
341 esac
342
343 #### NEON optimisations ####
344 AC_ARG_ENABLE([neon-opt],
345     AS_HELP_STRING([--enable-neon-opt], [Enable NEON optimisations on ARM CPUs that support it]))
346
347 AS_IF([test "x$enable_neon_opt" != "xno"],
348     [save_CFLAGS="$CFLAGS"; CFLAGS="-mfpu=neon $CFLAGS"
349      AC_COMPILE_IFELSE(
350         [AC_LANG_PROGRAM([[#include <arm_neon.h>]], [])],
351         [
352          HAVE_NEON=1
353          NEON_CFLAGS="-mfpu=neon"
354         ],
355         [
356          HAVE_NEON=0
357          NEON_CFLAGS=
358         ])
359      CFLAGS="$save_CFLAGS"
360     ],
361     [HAVE_NEON=0])
362
363 AS_IF([test "x$enable_neon_opt" = "xyes" && test "x$HAVE_NEON" = "x0"],
364       [AC_MSG_ERROR([*** Compiler does not support -mfpu=neon or CFLAGS override -mfpu])])
365
366 AC_SUBST(HAVE_NEON)
367 AC_SUBST(NEON_CFLAGS)
368 AM_CONDITIONAL([HAVE_NEON], [test "x$HAVE_NEON" = x1])
369 AS_IF([test "x$HAVE_NEON" = "x1"], AC_DEFINE([HAVE_NEON], 1, [Have NEON support?]))
370
371
372 #### libtool stuff ####
373
374 LT_PREREQ(2.4)
375 LT_INIT([dlopen win32-dll disable-static])
376
377 dnl As an extra safety device, check for lt_dladvise_init() which is
378 dnl only implemented in libtool 2.x, and refine as we go if we have
379 dnl refined requirements.
380 dnl
381 dnl Check the header files first since the system may have a
382 dnl libltdl.so for runtime, but no headers, and we want to bail out as
383 dnl soon as possible.
384 dnl
385 dnl We don't need any special variable for this though, since the user
386 dnl can give the proper place to find libltdl through the standard
387 dnl variables like LDFLAGS and CPPFLAGS.
388
389 AC_CHECK_HEADER([ltdl.h],
390     [AC_CHECK_LIB([ltdl], [lt_dladvise_init], [LIBLTDL=-lltdl], [LIBLTDL=])],
391     [LIBLTDL=])
392
393 AS_IF([test "x$LIBLTDL" = "x"],
394     [AC_MSG_ERROR([Unable to find libltdl version 2. Makes sure you have libtool 2.4 or later installed.])])
395 AC_SUBST([LIBLTDL])
396
397
398 ###################################
399 #   Basic environment checks      #
400 ###################################
401
402 #### Checks for header files. ####
403
404 # ISO
405 AC_HEADER_STDC
406
407 # POSIX
408 AC_CHECK_HEADERS_ONCE([arpa/inet.h glob.h grp.h netdb.h netinet/in.h \
409     netinet/in_systm.h netinet/tcp.h poll.h pwd.h sched.h \
410     sys/mman.h sys/select.h sys/socket.h sys/wait.h \
411     sys/uio.h syslog.h sys/dl.h dlfcn.h linux/sockios.h])
412 AC_CHECK_HEADERS([netinet/ip.h], [], [],
413                  [#include <sys/types.h>
414                   #if HAVE_NETINET_IN_H
415                   # include <netinet/in.h>
416                   #endif
417                   #if HAVE_NETINET_IN_SYSTM_H
418                   # include <netinet/in_systm.h>
419                   #endif
420                  ])
421 AC_CHECK_HEADERS([sys/resource.h], [HAVE_SYS_RESOURCE_H=1], [HAVE_SYS_RESOURCE_H=0])
422 AC_SUBST(HAVE_SYS_RESOURCE_H)
423 AC_CHECK_HEADERS([sys/un.h], [HAVE_AF_UNIX=1], [HAVE_AF_UNIX=0])
424 AM_CONDITIONAL(HAVE_AF_UNIX, test "x$HAVE_AF_UNIX" = "x1")
425 AC_SUBST(HAVE_AF_UNIX)
426
427 # Linux
428 AC_CHECK_HEADERS([linux/input.h], [HAVE_EVDEV=1], [HAVE_EVDEV=0])
429 AM_CONDITIONAL([HAVE_EVDEV], [test "x$HAVE_EVDEV" = "x1"])
430
431 AC_CHECK_HEADERS_ONCE([sys/prctl.h])
432
433 # Solaris
434 AC_CHECK_HEADERS_ONCE([sys/filio.h])
435
436 # Windows
437 AC_CHECK_HEADERS_ONCE([windows.h winsock2.h ws2tcpip.h])
438
439 # NetBSD
440 AC_CHECK_HEADERS_ONCE([sys/atomic.h])
441
442 # Other
443 AC_CHECK_HEADERS_ONCE([sys/ioctl.h])
444 AC_CHECK_HEADERS_ONCE([byteswap.h])
445 AC_CHECK_HEADERS_ONCE([sys/syscall.h])
446 AC_CHECK_HEADERS_ONCE([sys/eventfd.h])
447 AC_CHECK_HEADERS_ONCE([execinfo.h])
448 AC_CHECK_HEADERS_ONCE([langinfo.h])
449 AC_CHECK_HEADERS_ONCE([regex.h pcreposix.h])
450 AC_CHECK_HEADERS_ONCE([locale.h xlocale.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 paccept])
574
575 # Non-standard
576 AC_CHECK_FUNCS_ONCE([setresuid setresgid setreuid setregid seteuid setegid ppoll strsignal sig2str strtod_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([--enable-samplerate],[Enable optional libsamplerate support (DEPRECATED)]))
677
678 AS_IF([test "x$enable_samplerate" = "xyes"],
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 #### soxr (optional) ####
1144
1145 AC_ARG_WITH([soxr],
1146     AS_HELP_STRING([--without-soxr],[Omit soxr (resampling)]))
1147
1148 AS_IF([test "x$with_soxr" != "xno"],
1149     [PKG_CHECK_MODULES(LIBSOXR, [ soxr >= 0.1.1 ], HAVE_SOXR=1, HAVE_SOXR=0)],
1150     HAVE_SOXR=0)
1151
1152 AS_IF([test "x$with_soxr" = "xyes" && test "x$HAVE_SOXR" = "x0"],
1153     [AC_MSG_ERROR([*** soxr support not found])])
1154
1155 AM_CONDITIONAL([HAVE_SOXR], [test "x$HAVE_SOXR" = "x1"])
1156 AS_IF([test "x$HAVE_SOXR" = "x1"], AC_DEFINE([HAVE_SOXR], 1, [Have soxr]))
1157
1158 #### Xen support (optional) ####
1159
1160 AC_ARG_ENABLE([xen],
1161     AS_HELP_STRING([--disable-xen],[Disable optional Xen paravirtualized driver]))
1162
1163 XEN_CFLAGS=
1164 XEN_LIBS=
1165
1166 AS_IF([test "x$enable_xen" != "xno"],
1167     [
1168         HAVE_XEN=1
1169         AC_CHECK_HEADER(xenctrl.h, [], [HAVE_XEN=0])
1170         AC_CHECK_HEADER(xs.h, [], [HAVE_XEN=0])
1171         AC_CHECK_LIB(xenctrl, xc_interface_open, [XEN_LIBS="$XEN_LIBS -lxenctrl"], [HAVE_XEN=0])
1172         AC_CHECK_LIB(xenstore, xs_domain_open, [XEN_LIBS="$XEN_LIBS -lxenstore"], [HAVE_XEN=0])
1173     ],
1174     HAVE_XEN=0)
1175
1176 AS_IF([test "x$enable_xen" = "xyes" && test "x$HAVE_XEN" = "x0"],
1177     [AC_MSG_ERROR([*** Xen development headers or libraries not found])])
1178
1179 AC_SUBST(XEN_CFLAGS)
1180 AC_SUBST(XEN_LIBS)
1181 AM_CONDITIONAL([HAVE_XEN], [test "x$HAVE_XEN" = x1])
1182
1183 #### gcov support (optional) #####
1184
1185 AC_ARG_ENABLE([gcov],
1186     AS_HELP_STRING([--enable-gcov],[Enable optional gcov coverage analysis]))
1187
1188 GCOV_CFLAGS=
1189 GCOV_LIBS=" -lgcov"
1190
1191 AS_IF([test "x$enable_gcov" = "xyes"],
1192     [
1193         HAVE_GCOV=1
1194         GCOV_CFLAGS="$GCOV_CFLAGS -fprofile-arcs -ftest-coverage"
1195         GCOV_LIBS="$GCOV_LIBS -fprofile-arcs"
1196     ],
1197     HAVE_GCOV=0)
1198
1199 AC_SUBST(GCOV_CFLAGS)
1200 AC_SUBST(GCOV_LIBS)
1201 AM_CONDITIONAL([HAVE_GCOV], [test "x$HAVE_GCOV" = x1])
1202
1203 #### ORC (optional) ####
1204
1205 ORC_CHECK([0.4.11])
1206
1207 #### systemd support (optional) ####
1208
1209 AC_ARG_ENABLE([systemd-daemon],
1210     AS_HELP_STRING([--disable-systemd-daemon],[Disable optional systemd daemon (socket activation) support]))
1211
1212 AC_ARG_ENABLE([systemd-login],
1213     AS_HELP_STRING([--disable-systemd-login],[Disable optional systemd login support]))
1214
1215 AC_ARG_ENABLE([systemd-journal],
1216     AS_HELP_STRING([--disable-systemd-journal],[Disable optional systemd journal support]))
1217
1218 # Newer systemd's combine their subcomponent libraries into one
1219 # If it exists, we should use it for the further checks
1220
1221 AS_IF([test "x$enable_systemd_daemon" != "xno" || test "x$enable_systemd_login" != "xno" || test "x$enable_systemd_journal" != "xno"],
1222     [PKG_CHECK_MODULES(SYSTEMD, [ libsystemd ], HAVE_SYSTEMD=1, HAVE_SYSTEMD=0)],
1223     HAVE_SYSTEMD=0)
1224
1225 AS_IF([test "x$HAVE_SYSTEMD" = "x1"],
1226     [
1227         HAVE_SYSTEMD_DAEMON=1
1228         HAVE_SYSTEMD_LOGIN=1
1229         HAVE_SYSTEMD_JOURNAL=1
1230     ])
1231
1232 AC_ARG_WITH([systemduserunitdir],
1233         AS_HELP_STRING([--with-systemduserunitdir=DIR], [Directory for systemd user service files]),
1234         [], [with_systemduserunitdir=$($PKG_CONFIG --variable=systemduserunitdir systemd)])
1235 if test "x$with_systemduserunitdir" != xno; then
1236         AC_SUBST([systemduserunitdir], [$with_systemduserunitdir])
1237 fi
1238
1239 #### systemd daemon support (optional) ####
1240
1241 AS_IF([test "x$enable_systemd_daemon" != "xno"],
1242     [AS_IF([test "x$HAVE_SYSTEMD_DAEMON" != "x1"], [PKG_CHECK_MODULES(SYSTEMDDAEMON, [ libsystemd-daemon ], HAVE_SYSTEMD_DAEMON=1, HAVE_SYSTEMD_DAEMON=0)])],
1243     HAVE_SYSTEMD_DAEMON=0)
1244
1245 AS_IF([test "x$enable_systemd_daemon" = "xyes" && test "x$HAVE_SYSTEMD_DAEMON" = "x0"],
1246     [AC_MSG_ERROR([*** Needed systemd daemon support not found])])
1247
1248 AC_SUBST(HAVE_SYSTEMD_DAEMON)
1249 AM_CONDITIONAL([HAVE_SYSTEMD_DAEMON], [test "x$HAVE_SYSTEMD_DAEMON" = x1])
1250 AS_IF([test "x$HAVE_SYSTEMD_DAEMON" = "x1"], AC_DEFINE([HAVE_SYSTEMD_DAEMON], 1, [Have SYSTEMDDAEMON?]))
1251
1252 #### systemd login support (optional) ####
1253
1254 AS_IF([test "x$enable_systemd_login" != "xno"],
1255     [AS_IF([test "x$HAVE_SYSTEMD_LOGIN" != "x1"], [PKG_CHECK_MODULES(SYSTEMDLOGIN, [ libsystemd-login ], HAVE_SYSTEMD_LOGIN=1, HAVE_SYSTEMD_LOGIN=0)])],
1256     HAVE_SYSTEMD_LOGIN=0)
1257
1258 AS_IF([test "x$enable_systemd_login" = "xyes" && test "x$HAVE_SYSTEMD_LOGIN" = "x0"],
1259     [AC_MSG_ERROR([*** Needed systemd login support not found])])
1260
1261 AC_SUBST(HAVE_SYSTEMD_LOGIN)
1262 AM_CONDITIONAL([HAVE_SYSTEMD_LOGIN], [test "x$HAVE_SYSTEMD_LOGIN" = x1])
1263 AS_IF([test "x$HAVE_SYSTEMD_LOGIN" = "x1"], AC_DEFINE([HAVE_SYSTEMD_LOGIN], 1, [Have SYSTEMDLOGIN?]))
1264
1265 #### systemd journal support (optional) ####
1266
1267 AS_IF([test "x$enable_systemd_journal" != "xno"],
1268     [AS_IF([test "x$HAVE_SYSTEMD_JOURNAL" != "x1"], [PKG_CHECK_MODULES(SYSTEMDJOURNAL, [ libsystemd-journal ], HAVE_SYSTEMD_JOURNAL=1, HAVE_SYSTEMD_JOURNAL=0)])],
1269     HAVE_SYSTEMD_JOURNAL=0)
1270
1271 AS_IF([test "x$enable_systemd_journal" = "xyes" && test "x$HAVE_SYSTEMD_JOURNAL" = "x0"],
1272     [AC_MSG_ERROR([*** Needed systemd journal support not found])])
1273
1274 AC_SUBST(HAVE_SYSTEMD_JOURNAL)
1275 AM_CONDITIONAL([HAVE_SYSTEMD_JOURNAL], [test "x$HAVE_SYSTEMD_JOURNAL" = x1])
1276 AS_IF([test "x$HAVE_SYSTEMD_JOURNAL" = "x1"], AC_DEFINE([HAVE_SYSTEMD_JOURNAL], 1, [Have SYSTEMDJOURNAL?]))
1277
1278 #### Build and Install man pages ####
1279
1280 AC_ARG_ENABLE([manpages],
1281     AS_HELP_STRING([--disable-manpages],[Disable building and installation of man pages]))
1282
1283 AM_CONDITIONAL([BUILD_MANPAGES], [test "x$enable_manpages" != "xno"])
1284
1285 #### PulseAudio system group & user  #####
1286
1287 AC_ARG_WITH(system_user, AS_HELP_STRING([--with-system-user=<user>],[User for running the PulseAudio daemon as a system-wide instance (pulse)]))
1288 if test -z "$with_system_user" ; then
1289     PA_SYSTEM_USER=pulse
1290 else
1291     PA_SYSTEM_USER=$with_system_user
1292 fi
1293 AC_SUBST(PA_SYSTEM_USER)
1294 AC_DEFINE_UNQUOTED(PA_SYSTEM_USER,"$PA_SYSTEM_USER", [User for running the PulseAudio system daemon])
1295
1296 AC_ARG_WITH(system_group,AS_HELP_STRING([--with-system-group=<group>],[Group for running the PulseAudio daemon as a system-wide instance (pulse)]))
1297 if test -z "$with_system_group" ; then
1298     PA_SYSTEM_GROUP=pulse
1299 else
1300     PA_SYSTEM_GROUP=$with_system_group
1301 fi
1302 AC_SUBST(PA_SYSTEM_GROUP)
1303 AC_DEFINE_UNQUOTED(PA_SYSTEM_GROUP,"$PA_SYSTEM_GROUP", [Group for the PulseAudio system daemon])
1304
1305 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)]))
1306 if test -z "$with_access_group" ; then
1307     PA_ACCESS_GROUP=pulse-access
1308 else
1309     PA_ACCESS_GROUP=$with_access_group
1310 fi
1311 AC_SUBST(PA_ACCESS_GROUP)
1312 AC_DEFINE_UNQUOTED(PA_ACCESS_GROUP,"$PA_ACCESS_GROUP", [Access group])
1313
1314 AC_ARG_ENABLE([per-user-esound-socket],
1315     AS_HELP_STRING([--disable-per-user-esound-socket],[Use global esound socket directory /tmp/.esd/socket.]))
1316
1317 if test "x$enable_per_user_esound_socket" != "xno"; then
1318     USE_PER_USER_ESOUND_SOCKET=1
1319     AC_DEFINE([USE_PER_USER_ESOUND_SOCKET], [1], [Define this if you want per-user esound socket directories])
1320 else
1321     USE_PER_USER_ESOUND_SOCKET=0
1322 fi
1323
1324 #### PulseAudio system runtime dir ####
1325
1326 PA_SYSTEM_RUNTIME_PATH="${localstatedir}/run/pulse"
1327 AX_DEFINE_DIR(PA_SYSTEM_RUNTIME_PATH, PA_SYSTEM_RUNTIME_PATH, [System runtime dir])
1328 PA_SYSTEM_CONFIG_PATH="${localstatedir}/lib/pulse"
1329 AX_DEFINE_DIR(PA_SYSTEM_CONFIG_PATH, PA_SYSTEM_CONFIG_PATH, [System config dir])
1330 PA_SYSTEM_STATE_PATH="${localstatedir}/lib/pulse"
1331 AX_DEFINE_DIR(PA_SYSTEM_STATE_PATH, PA_SYSTEM_STATE_PATH, [System state dir])
1332
1333 PA_BINARY=${bindir}/pulseaudio${EXEEXT}
1334 AX_DEFINE_DIR(PA_BINARY, PA_BINARY, [Location of pulseaudio binary])
1335
1336 PACTL_BINARY=${bindir}/pactl${EXEEXT}
1337 AX_DEFINE_DIR(PACTL_BINARY, PACTL_BINARY, [Location of pactl binary])
1338
1339 AC_SUBST(PA_SOEXT, [.so])
1340 AC_DEFINE(PA_SOEXT, [".so"], [Shared object extension])
1341
1342 AC_SUBST(pulseconfdir, ["${sysconfdir}/pulse"])
1343 AX_DEFINE_DIR(PA_DEFAULT_CONFIG_DIR, pulseconfdir, [Location of configuration files])
1344
1345 #### Mac OSX specific stuff #####
1346
1347 AC_ARG_ENABLE(mac-universal,
1348     AS_HELP_STRING([--enable-mac-universal], [Build Mac universal binaries]),
1349     enable_mac_universal=$enableval, enable_mac_universal="no")
1350
1351 AC_ARG_WITH(mac-version-min,
1352     AS_HELP_STRING([--with-mac-version-min=<version>], [Defines the earliest version of MacOS X that the executables will run on.]),
1353     mac_version_min=$withval, mac_version_min="10.5")
1354
1355 AC_ARG_WITH(mac-sysroot,
1356     AS_HELP_STRING([--with-mac-sysroot=<path>], [SDK basedir to use as the logical root directory for headers and libraries.]),
1357     mac_sysroot=$withval, mac_sysroot="/Developer/SDKs/MacOSX10.5.sdk")
1358
1359 if test "x$os_is_darwin" = "x1" ; then
1360     LDFLAGS="$LDFLAGS -isysroot $mac_sysroot -mmacosx-version-min=$mac_version_min"
1361     CFLAGS="$CFLAGS -isysroot $mac_sysroot -mmacosx-version-min=$mac_version_min"
1362
1363     if test "x$enable_mac_universal" = "xyes" ; then
1364         mac_arches="-arch i386 -arch x86_64"
1365         LDFLAGS="$LDFLAGS $mac_arches"
1366         CFLAGS="$CFLAGS $mac_arches"
1367     fi
1368 fi
1369
1370 AC_ARG_ENABLE([webrtc-aec],
1371     AS_HELP_STRING([--enable-webrtc-aec], [Enable the optional WebRTC-based echo canceller]))
1372
1373 AS_IF([test "x$enable_webrtc_aec" != "xno"],
1374     [PKG_CHECK_MODULES(WEBRTC, [ webrtc-audio-processing ], [HAVE_WEBRTC=1], [HAVE_WEBRTC=0])],
1375     [HAVE_WEBRTC=0])
1376
1377 AS_IF([test "x$enable_webrtc_aec" = "xyes" && test "x$HAVE_WEBRTC" = "x0"],
1378     [AC_MSG_ERROR([*** webrtc-audio-processing library not found])])
1379
1380 AM_CONDITIONAL([HAVE_WEBRTC], [test "x$HAVE_WEBRTC" = "x1"])
1381
1382 AC_ARG_ENABLE([adrian-aec],
1383     AS_HELP_STRING([--enable-adrian-aec], [Enable Adrian's optional echo canceller]))
1384 AS_IF([test "x$enable_adrian_aec" != "xno"],
1385     [HAVE_ADRIAN_EC=1])
1386 AM_CONDITIONAL([HAVE_ADRIAN_EC], [test "x$HAVE_ADRIAN_EC" = "x1"])
1387
1388
1389
1390 ###################################
1391 #            Output               #
1392 ###################################
1393
1394 AC_DEFINE_UNQUOTED(PA_CFLAGS, "$CFLAGS", [The CFLAGS used during compilation])
1395
1396 # Check whether to build tests by default (as compile-test) or not
1397 AC_ARG_ENABLE([default-build-tests],
1398     AS_HELP_STRING([--disable-default-build-tests], [Build test programs only during make check]))
1399 AM_CONDITIONAL([BUILD_TESTS_DEFAULT], [test "x$enable_default_build_tests" != "xno"])
1400
1401 AC_ARG_ENABLE([legacy-database-entry-format],
1402         AS_HELP_STRING([--disable-legacy-database-entry-format], [Try to load legacy (< 1.0) database files (card, device and volume restore).]))
1403 if test "x$enable_legacy_database_entry_format" != "xno" ; then
1404         AC_DEFINE(ENABLE_LEGACY_DATABASE_ENTRY_FORMAT, [1], [Legacy database entry format])
1405 fi
1406
1407 AC_ARG_ENABLE([static-bins],
1408     AS_HELP_STRING([--enable-static-bins],[Statically link executables.]))
1409 AM_CONDITIONAL([STATIC_BINS], [test "x$enable_static_bins" = "xyes"])
1410
1411 AC_ARG_WITH(
1412         [preopen-mods],
1413         AS_HELP_STRING([--with-preopen-mods],[Modules to preopen in daemon (default: all).]),
1414         [PREOPEN_MODS=$withval], [PREOPEN_MODS="all"])
1415 AM_CONDITIONAL([PREOPEN_MODS], [test "x$PREOPEN_MODS" != "xall"])
1416 if test "x$PREOPEN_MODS" != "xall" ; then
1417     tmpLIBS=""
1418     for mod in $PREOPEN_MODS; do
1419         tmpLIBS="$tmpLIBS module-$mod.la"
1420     done
1421     PREOPEN_MODS="$tmpLIBS"
1422     AC_SUBST(PREOPEN_MODS)
1423 fi
1424
1425 AC_ARG_WITH(
1426         [module-dir],
1427         AS_HELP_STRING([--with-module-dir],[Directory where to install the modules to (defaults to ${libdir}/pulse-${PA_MAJORMINOR}/modules]),
1428         [modlibexecdir=$withval], [modlibexecdir="${libdir}/pulse-${PA_MAJORMINOR}/modules"])
1429
1430 AC_SUBST(modlibexecdir)
1431 AX_DEFINE_DIR(PA_DLSEARCHPATH, modlibexecdir, [Modules dir])
1432
1433 AC_ARG_WITH(
1434         [udev-rules-dir],
1435         AS_HELP_STRING([--with-udev-rules-dir],[Directory where to install udev rules to (defaults to /lib/udev/rules.d)]),
1436         [udevrulesdir=$withval], [udevrulesdir="/lib/udev/rules.d"])
1437
1438 AC_SUBST(udevrulesdir)
1439
1440 AC_ARG_WITH([bash-completion-dir],
1441         AS_HELP_STRING([--with-bash-completion-dir=DIR], [Directory for bash completion files]),
1442         [bashcompletiondir=$withval], [bashcompletiondir=$($PKG_CONFIG --variable=completionsdir bash-completion)])
1443 if test "x$bashcompletionsdir" = "x"; then
1444         bashcompletiondir="${datadir}/bash-completion/completions"
1445 fi
1446
1447 AC_SUBST(bashcompletiondir)
1448
1449 AC_ARG_WITH(
1450         [zsh-completion-dir],
1451         AS_HELP_STRING([--with-zsh-completion-dir], [Zsh completions directory (defaults to ${datadir}/zsh/site-functions)]),
1452         [zshcompletiondir=$withval], [zshcompletiondir="${datadir}/zsh/site-functions"])
1453
1454 AC_SUBST(zshcompletiondir)
1455
1456 AC_ARG_ENABLE([force-preopen],
1457     AS_HELP_STRING([--enable-force-preopen],[Preopen modules, even when dlopen() is supported.]))
1458
1459 if test "x$enable_force_preopen" = "xyes"; then
1460     FORCE_PREOPEN=yes
1461 else
1462     FORCE_PREOPEN=no
1463 fi
1464
1465 AM_CONDITIONAL([FORCE_PREOPEN], [test "x$FORCE_PREOPEN" = "xyes"])
1466
1467 AC_CONFIG_FILES([
1468 Makefile
1469 src/Makefile
1470 man/Makefile
1471 libpulse.pc
1472 libpulse-simple.pc
1473 libpulse-mainloop-glib.pc
1474 doxygen/Makefile
1475 doxygen/doxygen.conf
1476 src/pulse/version.h
1477 po/Makefile.in
1478 man/pulseaudio.1.xml
1479 man/esdcompat.1.xml
1480 man/pax11publish.1.xml
1481 man/pacat.1.xml
1482 man/pacmd.1.xml
1483 man/pactl.1.xml
1484 man/pasuspender.1.xml
1485 man/padsp.1.xml
1486 man/pulse-daemon.conf.5.xml
1487 man/pulse-client.conf.5.xml
1488 man/default.pa.5.xml
1489 man/pulse-cli-syntax.5.xml
1490 man/start-pulseaudio-x11.1.xml
1491 ])
1492
1493 AC_CONFIG_FILES([src/esdcompat:src/daemon/esdcompat.in], [chmod +x src/esdcompat])
1494 AC_CONFIG_FILES([src/start-pulseaudio-x11:src/daemon/start-pulseaudio-x11.in], [chmod +x src/start-pulseaudio-x11])
1495 AC_CONFIG_FILES([src/client.conf:src/pulse/client.conf.in])
1496 AC_CONFIG_FILES([src/daemon.conf:src/daemon/daemon.conf.in],
1497     [m4 src/daemon.conf > src/daemon.conf.gen && mv src/daemon.conf.gen src/daemon.conf])
1498 AC_CONFIG_FILES([src/default.pa:src/daemon/default.pa.in],
1499     [m4 src/default.pa > src/default.pa.gen && mv src/default.pa.gen src/default.pa])
1500 AC_CONFIG_FILES([src/system.pa:src/daemon/system.pa.in],
1501     [m4 src/system.pa > src/system.pa.gen && mv src/system.pa.gen src/system.pa])
1502 AS_IF([test "x$HAVE_SYSTEMD_DAEMON" = "x1"],
1503     [
1504         AC_CONFIG_FILES([src/pulseaudio.service:src/daemon/systemd/user/pulseaudio.service.in])
1505     ])
1506
1507 # CMake related ProjectConfig files
1508 PA_LIBDIR="$libdir"
1509 AX_DEFINE_DIR(PA_LIBDIR, PA_LIBDIR, [PulseAudio library dir])
1510 PA_INCDIR="$includedir"
1511 AX_DEFINE_DIR(PA_INCDIR, PA_INCDIR, [PulseAudio include dir])
1512
1513 AC_CONFIG_FILES([PulseAudioConfig.cmake:PulseAudioConfig.cmake.in],
1514     [m4 PulseAudioConfig.cmake > PulseAudioConfig.cmake.gen && mv PulseAudioConfig.cmake.gen PulseAudioConfig.cmake])
1515 AC_CONFIG_FILES([PulseAudioConfigVersion.cmake])
1516
1517 AC_OUTPUT
1518
1519 # ==========================================================================
1520
1521 AS_IF([test "x$HAVE_X11" = "x1"], ENABLE_X11=yes, ENABLE_X11=no)
1522 AS_IF([test "x$HAVE_OSS_OUTPUT" = "x1"], ENABLE_OSS_OUTPUT=yes, ENABLE_OSS_OUTPUT=no)
1523 AS_IF([test "x$HAVE_OSS_WRAPPER" = "x1"], ENABLE_OSS_WRAPPER=yes, ENABLE_OSS_WRAPPER=no)
1524 AS_IF([test "x$HAVE_ALSA" = "x1"], ENABLE_ALSA=yes, ENABLE_ALSA=no)
1525 AS_IF([test "x$HAVE_COREAUDIO" = "x1"], ENABLE_COREAUDIO=yes, ENABLE_COREAUDIO=no)
1526 AS_IF([test "x$HAVE_SOLARIS" = "x1"], ENABLE_SOLARIS=yes, ENABLE_SOLARIS=no)
1527 AS_IF([test "x$HAVE_WAVEOUT" = "x1"], ENABLE_WAVEOUT=yes, ENABLE_WAVEOUT=no)
1528 AS_IF([test "x$HAVE_GLIB20" = "x1"], ENABLE_GLIB20=yes, ENABLE_GLIB20=no)
1529 AS_IF([test "x$HAVE_GTK30" = "x1"], ENABLE_GTK30=yes, ENABLE_GTK30=no)
1530 AS_IF([test "x$HAVE_GCONF" = "x1"], ENABLE_GCONF=yes, ENABLE_GCONF=no)
1531 AS_IF([test "x$HAVE_AVAHI" = "x1"], ENABLE_AVAHI=yes, ENABLE_AVAHI=no)
1532 AS_IF([test "x$HAVE_JACK" = "x1"], ENABLE_JACK=yes, ENABLE_JACK=no)
1533 AS_IF([test "x$HAVE_LIBASYNCNS" = "x1"], ENABLE_LIBASYNCNS=yes, ENABLE_LIBASYNCNS=no)
1534 AS_IF([test "x$HAVE_LIRC" = "x1"], ENABLE_LIRC=yes, ENABLE_LIRC=no)
1535 AS_IF([test "x$HAVE_XEN" = "x1"], ENABLE_XEN=yes, ENABLE_XEN=no)
1536 AS_IF([test "x$HAVE_DBUS" = "x1"], ENABLE_DBUS=yes, ENABLE_DBUS=no)
1537 AS_IF([test "x$HAVE_UDEV" = "x1"], ENABLE_UDEV=yes, ENABLE_UDEV=no)
1538 AS_IF([test "x$HAVE_SYSTEMD_DAEMON" = "x1"], ENABLE_SYSTEMD_DAEMON=yes, ENABLE_SYSTEMD_DAEMON=no)
1539 AS_IF([test "x$HAVE_SYSTEMD_LOGIN" = "x1"], ENABLE_SYSTEMD_LOGIN=yes, ENABLE_SYSTEMD_LOGIN=no)
1540 AS_IF([test "x$HAVE_SYSTEMD_JOURNAL" = "x1"], ENABLE_SYSTEMD_JOURNAL=yes, ENABLE_SYSTEMD_JOURNAL=no)
1541 AS_IF([test "x$HAVE_BLUEZ_4" = "x1"], ENABLE_BLUEZ_4=yes, ENABLE_BLUEZ_4=no)
1542 AS_IF([test "x$HAVE_BLUEZ_5" = "x1"], ENABLE_BLUEZ_5=yes, ENABLE_BLUEZ_5=no)
1543 AS_IF([test "x$HAVE_BLUEZ_5_OFONO_HEADSET" = "x1"], ENABLE_BLUEZ_5_OFONO_HEADSET=yes, ENABLE_BLUEZ_5_OFONO_HEADSET=no)
1544 AS_IF([test "x$HAVE_BLUEZ_5_NATIVE_HEADSET" = "x1"], ENABLE_BLUEZ_5_NATIVE_HEADSET=yes, ENABLE_BLUEZ_5_NATIVE_HEADSET=no)
1545 AS_IF([test "x$HAVE_HAL_COMPAT" = "x1"], ENABLE_HAL_COMPAT=yes, ENABLE_HAL_COMPAT=no)
1546 AS_IF([test "x$HAVE_TCPWRAP" = "x1"], ENABLE_TCPWRAP=yes, ENABLE_TCPWRAP=no)
1547 AS_IF([test "x$HAVE_LIBSAMPLERATE" = "x1"], ENABLE_LIBSAMPLERATE="yes (DEPRECATED)", ENABLE_LIBSAMPLERATE=no)
1548 AS_IF([test "x$HAVE_IPV6" = "x1"], ENABLE_IPV6=yes, ENABLE_IPV6=no)
1549 AS_IF([test "x$HAVE_OPENSSL" = "x1"], ENABLE_OPENSSL=yes, ENABLE_OPENSSL=no)
1550 AS_IF([test "x$HAVE_FFTW" = "x1"], ENABLE_FFTW=yes, ENABLE_FFTW=no)
1551 AS_IF([test "x$HAVE_ORC" = "xyes"], ENABLE_ORC=yes, ENABLE_ORC=no)
1552 AS_IF([test "x$HAVE_ADRIAN_EC" = "x1"], ENABLE_ADRIAN_EC=yes, ENABLE_ADRIAN_EC=no)
1553 AS_IF([test "x$HAVE_SPEEX" = "x1"], ENABLE_SPEEX=yes, ENABLE_SPEEX=no)
1554 AS_IF([test "x$HAVE_SOXR" = "x1"], ENABLE_SOXR=yes, ENABLE_SOXR=no)
1555 AS_IF([test "x$HAVE_WEBRTC" = "x1"], ENABLE_WEBRTC=yes, ENABLE_WEBRTC=no)
1556 AS_IF([test "x$HAVE_TDB" = "x1"], ENABLE_TDB=yes, ENABLE_TDB=no)
1557 AS_IF([test "x$HAVE_GDBM" = "x1"], ENABLE_GDBM=yes, ENABLE_GDBM=no)
1558 AS_IF([test "x$HAVE_SIMPLEDB" = "x1"], ENABLE_SIMPLEDB=yes, ENABLE_SIMPLEDB=no)
1559 AS_IF([test "x$HAVE_ESOUND" = "x1"], ENABLE_ESOUND=yes, ENABLE_ESOUND=no)
1560 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)
1561 AS_IF([test "x$HAVE_GCOV" = "x1"], ENABLE_GCOV=yes, ENABLE_GCOV=no)
1562 AS_IF([test "x$HAVE_LIBCHECK" = "x1"], ENABLE_TESTS=yes, ENABLE_TESTS=no)
1563 AS_IF([test "x$enable_legacy_database_entry_format" != "xno"], ENABLE_LEGACY_DATABASE_ENTRY_FORMAT=yes, ENABLE_LEGACY_DATABASE_ENTRY_FORMAT=no)
1564
1565 echo "
1566  ---{ $PACKAGE_NAME $VERSION }---
1567
1568     prefix:                        ${prefix}
1569     sysconfdir:                    ${sysconfdir}
1570     localstatedir:                 ${localstatedir}
1571     modlibexecdir:                 ${modlibexecdir}
1572     System Runtime Path:           ${PA_SYSTEM_RUNTIME_PATH}
1573     System State Path:             ${PA_SYSTEM_STATE_PATH}
1574     System Config Path:            ${PA_SYSTEM_CONFIG_PATH}
1575     Zsh completions directory:     ${zshcompletiondir}
1576     Bash completions directory:    ${bashcompletiondir}
1577     Compiler:                      ${CC}
1578     CFLAGS:                        ${CFLAGS}
1579     CPPFLAGS:                      ${CPPFLAGS}
1580     LIBS:                          ${LIBS}
1581
1582     Enable X11:                    ${ENABLE_X11}
1583     Enable OSS Output:             ${ENABLE_OSS_OUTPUT}
1584     Enable OSS Wrapper:            ${ENABLE_OSS_WRAPPER}
1585     Enable EsounD:                 ${ENABLE_ESOUND}
1586     Enable Alsa:                   ${ENABLE_ALSA}
1587     Enable CoreAudio:              ${ENABLE_COREAUDIO}
1588     Enable Solaris:                ${ENABLE_SOLARIS}
1589     Enable WaveOut:                ${ENABLE_WAVEOUT}
1590     Enable GLib 2.0:               ${ENABLE_GLIB20}
1591     Enable Gtk+ 3.0:               ${ENABLE_GTK30}
1592     Enable GConf:                  ${ENABLE_GCONF}
1593     Enable Avahi:                  ${ENABLE_AVAHI}
1594     Enable Jack:                   ${ENABLE_JACK}
1595     Enable Async DNS:              ${ENABLE_LIBASYNCNS}
1596     Enable LIRC:                   ${ENABLE_LIRC}
1597     Enable Xen PV driver:          ${ENABLE_XEN}
1598     Enable D-Bus:                  ${ENABLE_DBUS}
1599       Enable BlueZ 4:              ${ENABLE_BLUEZ_4}
1600       Enable BlueZ 5:              ${ENABLE_BLUEZ_5}
1601         Enable ofono headsets:     ${ENABLE_BLUEZ_5_OFONO_HEADSET}
1602         Enable native headsets:    ${ENABLE_BLUEZ_5_NATIVE_HEADSET}
1603     Enable udev:                   ${ENABLE_UDEV}
1604       Enable HAL->udev compat:     ${ENABLE_HAL_COMPAT}
1605     Enable systemd
1606       Daemon (Socket Activation):  ${ENABLE_SYSTEMD_DAEMON}
1607       Login (Session Tracking):    ${ENABLE_SYSTEMD_LOGIN}
1608       Journal (Logging):           ${ENABLE_SYSTEMD_JOURNAL}
1609     Enable TCP Wrappers:           ${ENABLE_TCPWRAP}
1610     Enable libsamplerate:          ${ENABLE_LIBSAMPLERATE}
1611     Enable IPv6:                   ${ENABLE_IPV6}
1612     Enable OpenSSL (for Airtunes): ${ENABLE_OPENSSL}
1613     Enable fftw:                   ${ENABLE_FFTW}
1614     Enable orc:                    ${ENABLE_ORC}
1615     Enable Adrian echo canceller:  ${ENABLE_ADRIAN_EC}
1616     Enable speex (resampler, AEC): ${ENABLE_SPEEX}
1617     Enable soxr (resampler):       ${ENABLE_SOXR}
1618     Enable WebRTC echo canceller:  ${ENABLE_WEBRTC}
1619     Enable gcov coverage:          ${ENABLE_GCOV}
1620     Enable unit tests:             ${ENABLE_TESTS}
1621     Database
1622       tdb:                         ${ENABLE_TDB}
1623       gdbm:                        ${ENABLE_GDBM}
1624       simple database:             ${ENABLE_SIMPLEDB}
1625
1626     System User:                   ${PA_SYSTEM_USER}
1627     System Group:                  ${PA_SYSTEM_GROUP}
1628     Access Group:                  ${PA_ACCESS_GROUP}
1629     Enable per-user EsounD socket: ${ENABLE_PER_USER_ESOUND_SOCKET}
1630     Force preopen:                 ${FORCE_PREOPEN}
1631     Preopened modules:             ${PREOPEN_MODS}
1632
1633     Legacy Database Entry Support: ${ENABLE_LEGACY_DATABASE_ENTRY_FORMAT}
1634 "
1635
1636 if test "${ENABLE_SPEEX}" = "no" && test "${ENABLE_WEBRTC}" = "no" && test "${ENABLE_ADRIAN_EC}" = "no" ; then
1637 AC_MSG_ERROR([At least one echo canceller implementation must be available.])
1638 fi
1639
1640 if test "${ENABLE_DBUS}" = "no" && test "x$os_is_win32" != "x1" ; then
1641    echo "
1642 ===== WARNING WARNING WARNING WARNING WARNING WARNING WARNING =====
1643 You do not have D-Bus support enabled. It is strongly recommended
1644 that you enable D-Bus support if your platform supports it.
1645 Many parts of PulseAudio use D-Bus, from ConsoleKit interaction
1646 to the Device Reservation Protocol to speak to JACK, Bluetooth
1647 support and even a native control protocol for communicating and
1648 controling the PulseAudio daemon itself.
1649 ===== WARNING WARNING WARNING WARNING WARNING WARNING WARNING =====
1650 "
1651 fi
1652
1653 if test "${ENABLE_UDEV}" = "no" && test "x$os_is_win32" != "x1" ; then
1654    echo "
1655 ===== WARNING WARNING WARNING WARNING WARNING WARNING WARNING =====
1656 You do not have udev support enabled. It is strongly recommended
1657 that you enable udev support if your platform supports it as it is
1658 the primary method used to detect hardware audio devices (on Linux)
1659 and is thus a critical part of PulseAudio on that platform.
1660 ===== WARNING WARNING WARNING WARNING WARNING WARNING WARNING =====
1661 "
1662 fi
1663
1664 if test "${ENABLE_SPEEX}" = "no" && test "x$os_is_win32" != "x1" ; then
1665    echo "
1666 ===== WARNING WARNING WARNING WARNING WARNING WARNING WARNING =====
1667 You do not have speex support enabled. It is strongly recommended
1668 that you enable speex support if your platform supports it as it is
1669 the primary method used for audio resampling and is thus a critical
1670 part of PulseAudio on that platform.
1671 ===== WARNING WARNING WARNING WARNING WARNING WARNING WARNING =====
1672 "
1673 fi