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