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