configure.ac 65 KB
Newer Older
Lennart Poettering's avatar
Lennart Poettering committed
1
2
3
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

Lennart Poettering's avatar
Lennart Poettering committed
4
# This file is part of PulseAudio.
Lennart Poettering's avatar
Lennart Poettering committed
5
#
Lennart Poettering's avatar
Lennart Poettering committed
6
# Copyright 2004-2008 Lennart Poettering
7
8
# Copyright 2006-2007 Pierre Ossman <ossman@cendio.se> for Cendio AB
#
Lennart Poettering's avatar
Lennart Poettering committed
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
Lennart Poettering's avatar
Lennart Poettering committed
11
12
13
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
Lennart Poettering's avatar
Lennart Poettering committed
14
# PulseAudio is distributed in the hope that it will be useful, but
Lennart Poettering's avatar
Lennart Poettering committed
15
16
17
18
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
19
# You should have received a copy of the GNU Lesser General Public License
20
# along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
Lennart Poettering's avatar
Lennart Poettering committed
21

Lennart Poettering's avatar
Lennart Poettering committed
22
AC_PREREQ(2.63)
23

24
AC_INIT([pulseaudio],[m4_esyscmd(./git-version-gen .tarball-version)],[pulseaudio-discuss (at) lists (dot) freedesktop (dot) org],[pulseaudio],[http://pulseaudio.org/])
25
AC_CONFIG_SRCDIR([src/daemon/main.c])
26
AC_CONFIG_MACRO_DIR([m4])
Lennart Poettering's avatar
Lennart Poettering committed
27
AC_CONFIG_HEADERS([config.h])
28
AC_CONFIG_AUX_DIR([build-aux])
29
AM_INIT_AUTOMAKE([foreign 1.11 -Wall -Wno-portability subdir-objects silent-rules color-tests dist-xz tar-ustar])
Lennart Poettering's avatar
Lennart Poettering committed
30

31
32
AM_MAINTAINER_MODE([enable])

33
34
35
36
AS_IF([! test -n "$VERSION"], [
   AC_MSG_ERROR([git-version-gen failed])
])

37
38
m4_define(pa_major, `echo $VERSION | cut -d. -f1 | cut -d- -f1`)
m4_define(pa_minor, `echo $VERSION | cut -d. -f2 | cut -d- -f1`)
39

40
41
42
AC_SUBST(PA_MAJOR, pa_major)
AC_SUBST(PA_MINOR, pa_minor)
AC_SUBST(PA_MAJORMINOR, pa_major.pa_minor)
Lennart Poettering's avatar
Lennart Poettering committed
43

Lennart Poettering's avatar
Lennart Poettering committed
44
AC_SUBST(PA_API_VERSION, 12)
Arun Raghavan's avatar
Arun Raghavan committed
45
AC_SUBST(PA_PROTOCOL_VERSION, 33)
46

47
# The stable ABI for client applications, for the version info x:y:z
48
# always will hold x=z
49
AC_SUBST(LIBPULSE_VERSION_INFO, [21:2:21])
50
51

# A simplified, synchronous, ABI-stable interface for client
52
# applications, for the version info x:y:z always will hold x=z
Tanu Kaskinen's avatar
Tanu Kaskinen committed
53
AC_SUBST(LIBPULSE_SIMPLE_VERSION_INFO, [1:1:1])
54
55

# The ABI-stable GLib adapter for client applications, for the version
56
# info x:y:z always will hold x=z
Tanu Kaskinen's avatar
Tanu Kaskinen committed
57
AC_SUBST(LIBPULSE_MAINLOOP_GLIB_VERSION_INFO, [0:5:0])
58

59
AC_CANONICAL_HOST
60
AC_DEFINE_UNQUOTED([CANONICAL_HOST], "$host", [Canonical host string.])
61

62
63
64
AC_CHECK_PROG([STOW], [stow], [yes], [no])

AS_IF([test "x$STOW" = "xyes" && test -d /usr/local/stow], [
65
66
    AC_MSG_NOTICE([*** Found /usr/local/stow: default install prefix set to /usr/local/stow/${PACKAGE_NAME}-${PACKAGE_VERSION} ***])
    ac_default_prefix="/usr/local/stow/${PACKAGE_NAME}-${PACKAGE_VERSION}"
67
])
Lennart Poettering's avatar
Lennart Poettering committed
68

69
70
AM_SILENT_RULES([yes])

71

Lennart Poettering's avatar
Lennart Poettering committed
72
73
#### Checks for programs. ####

74
75
76
77
# mkdir -p

AC_PROG_MKDIR_P

78
79
80
81
# ln -s

AC_PROG_LN_S

Lennart Poettering's avatar
Lennart Poettering committed
82
83
# CC

Lennart Poettering's avatar
Lennart Poettering committed
84
AC_PROG_CC
Lennart Poettering's avatar
Lennart Poettering committed
85
AM_PROG_CC_C_O
86
87
88
# Only required if you want the WebRTC canceller -- no runtime dep on
# libstdc++ otherwise
AC_PROG_CXX
Lennart Poettering's avatar
Lennart Poettering committed
89
AC_PROG_GCC_TRADITIONAL
Lennart Poettering's avatar
Lennart Poettering committed
90
AC_USE_SYSTEM_EXTENSIONS
91
AX_CXX_COMPILE_STDCXX_11([ext],[optional])
Lennart Poettering's avatar
Lennart Poettering committed
92
93
94

# M4

Finn Thain's avatar
Finn Thain committed
95
AC_CHECK_PROGS([M4], gm4 m4, no)
96
AS_IF([test "x$M4" = "xno"], AC_MSG_ERROR([m4 missing]))
Lennart Poettering's avatar
Lennart Poettering committed
97

98
99
100
101
102
103
# pkg-config

PKG_PROG_PKG_CONFIG

# gettext

104
AM_GNU_GETTEXT_VERSION([0.19.3])
105
106
AM_GNU_GETTEXT([external])

107
108
109
110
GETTEXT_PACKAGE=pulseaudio
AC_SUBST([GETTEXT_PACKAGE])
AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],["$GETTEXT_PACKAGE"],[Gettext package])

111
112
113

#### Determine host OS ####

114
115
116
117
# if the host has the possibility of sys/capability.h for dropping privileges
# used to determine if we should error out if it is not found
host_has_caps=0

118
119
120
121
122
123
124
125
os_is_linux=0
os_is_win32=0
os_is_darwin=0

AC_MSG_CHECKING([host operating system])
case "$host_os" in
    linux*)
        AC_MSG_RESULT([linux])
126
        host_has_caps=1
127
128
        os_is_linux=1
    ;;
129
130
131
132
    freebsd*)
        AC_MSG_RESULT([freebsd])
        host_has_caps=1
    ;;
133
134
135
    netbsd*)
        AC_MSG_RESULT([netbsd])
    ;;
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
    darwin*)
        AC_MSG_RESULT([darwin])
        os_is_darwin=1
        AC_DEFINE([OS_IS_DARWIN], 1, [Build target is Darwin.])
    ;;
    mingw*)
        AC_MSG_RESULT([win32])
        os_is_win32=1
        AC_DEFINE([OS_IS_WIN32], 1, [Build target is Windows.])
    ;;
    *)
        AC_MSG_RESULT([unknown])
    ;;
esac

AM_CONDITIONAL(OS_IS_DARWIN, test "x$os_is_darwin" = "x1")
AM_CONDITIONAL(OS_IS_WIN32, test "x$os_is_win32" = "x1")
153
AC_SUBST([OS_IS_WIN32], [$os_is_win32])
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168

# Platform specific hacks
case "$host_os" in
    darwin* )
        AC_DEFINE([_DARWIN_C_SOURCE], [200112L], [Needed to get NSIG on Mac OS X])
    ;;
    mingw* )
        AC_DEFINE([WIN32_LEAN_AND_MEAN], 1, [Needed to avoid including unnecessary headers on Windows])
    ;;
    solaris* )
        AC_DEFINE(_XOPEN_SOURCE,       600, [Needed to get declarations for msg_control and msg_controllen on Solaris])
        AC_DEFINE(__EXTENSIONS__,        1, [Needed to get declarations for msg_control and msg_controllen on Solaris])
    ;;
esac

169

170
#### Compiler flags ####
171

172
AX_CHECK_COMPILE_FLAG([-std=gnu11],
173
   [],
174
   [AC_MSG_ERROR([*** Compiler does not support -std=gnu11])],
175
176
   [-pedantic -Werror])

177
AX_APPEND_COMPILE_FLAGS(
178
    [-Wall -W -Wextra -pipe -Wno-long-long -Wno-overlength-strings -Wunsafe-loop-optimizations -Wundef -Wformat=2 -Wlogical-op -Wsign-compare -Wformat-security -Wmissing-include-dirs -Wformat-nonliteral -Wold-style-definition -Wpointer-arith -Winit-self -Wdeclaration-after-statement -Wfloat-equal -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls -Wmissing-declarations -Wmissing-noreturn -Wshadow -Wendif-labels -Wcast-align -Wstrict-aliasing -Wwrite-strings -Wno-unused-parameter -fno-common -fdiagnostics-show-option -fdiagnostics-color=auto],
179
    [], [-pedantic -Werror])
180

181
182
183
184
185
186
187
188
189
190
191
192
193
194
AS_CASE([" $CFLAGS "], [*" -O0 "*], [], [
    # Don't append the flag if it already exists.
    # Only enable fastpath asserts when doing a debug build, e.g. from bootstrap.sh.
    AX_APPEND_FLAG([-DFASTPATH], [CPPFLAGS])

    # Cannot use AX_APPEND_FLAG here, as it assumes no space inside the added flags.
    # Cannot append flags with AX_APPEND_FLAG one by one, as this would destroy all fortifications
    # if CPPFLAGS already contain -D_FORTIFY_SOURCE=2.

    # Warnings to be aware of that appear with -D_FORTIFY_SOURCE=2 but without -U_FORTIFY_SOURCE:
    # On Fedora 20 with -O0: #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Wcpp]
    # On Gentoo with -O2:    "_FORTIFY_SOURCE" redefined [enabled by default]
    AS_VAR_APPEND([CPPFLAGS],[" -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2"])
])
195

196
#### Linker flags ####
197

198
199
200
# Check whether the linker supports the -version-script option.
# The Make variable $(srcdir) needs to be in the LDFLAGS in that form,
# so that it is expanded the right way in every subdir.
Arun Raghavan's avatar
Arun Raghavan committed
201
202
AX_CHECK_LINK_FLAG(["-Wl,-version-script=${srcdir}/src/map-file"],
    [VERSIONING_LDFLAGS='-Wl,-version-script=$(abs_top_srcdir)/src/map-file'])
203
204
AC_SUBST([VERSIONING_LDFLAGS])

205
206
207
# Use immediate (now) bindings; avoids the funky re-call in itself.
# The -z now syntax is lifted from Sun's linker and works with GNU's too, other linkers might be added later.
AX_APPEND_LINK_FLAGS([-Wl,-z,now], [IMMEDIATE_LDFLAGS])
208
AC_SUBST([IMMEDIATE_LDFLAGS])
209
210
211
AS_CASE([$IMMEDIATE_LDFLAGS],[*-z,now*],
    [AC_DEFINE([HAVE_BIND_NOW],[1],
               [Define to 1 if immediate binding is available])])
212

213
214
215
# On ELF systems we don't want the libraries to be unloaded since we don't clean them up properly,
# so we request the nodelete flag to be enabled.
# On other systems, we don't really know how to do that, but it's welcome if somebody can tell.
216
AX_APPEND_LINK_FLAGS([-Wl,-z,nodelete], [NODELETE_LDFLAGS], [-shared])
217
218
AC_SUBST([NODELETE_LDFLAGS])

219
220
221
222
223
224
225
226
227
228
229
230
# Check for the proper way to build libraries that have no undefined symbols
case $host in
    # FreeBSD (et al.) does not complete linking for shared objects when pthreads
    # are requested, as different implementations are present.
    *-freebsd* | *-openbsd*) ;;
    *)
        for possible_flag in "-Wl,--no-undefined" "-Wl,-z,defs"; do
            AX_CHECK_LINK_FLAG([$possible_flag], [NOUNDEFINED_LDFLAGS="$possible_flag"; break])
        done
    ;;
esac
AC_SUBST([NOUNDEFINED_LDFLAGS])
231

232
233
234

#### Atomic operations ####

235
236
# Native atomic operation support
AC_ARG_ENABLE([atomic-arm-linux-helpers],
237
    AS_HELP_STRING([--disable-atomic-arm-linux-helpers],[use inline asm or libatomic_ops instead]))
238
239

AC_ARG_ENABLE([atomic-arm-memory-barrier],
240
241
242
243
244
    AS_HELP_STRING([--enable-atomic-arm-memory-barrier],[only really needed in SMP arm systems]))

if test "x$enable_atomic_arm_memory_barrier" = "xyes"; then
    AC_DEFINE_UNQUOTED(ATOMIC_ARM_MEMORY_BARRIER_ENABLED, 1, [Enable memory barriers])
fi
245
246
247
248

# If everything else fails use libatomic_ops
need_libatomic_ops=yes

249
250
251
252
253
254
255
256
257
AC_CACHE_CHECK([whether $CC knows __atomic_store_n()],
    pulseaudio_cv_atomic_store_n, [
    AC_LINK_IFELSE(
        [AC_LANG_PROGRAM([], [[int c = 0; __atomic_store_n(&c, 4, __ATOMIC_SEQ_CST);]])],
        [pulseaudio_cv_atomic_store_n=yes],
        [pulseaudio_cv_atomic_store_n=no])
    ])


258
AC_CACHE_CHECK([whether $CC knows __sync_bool_compare_and_swap()],
259
260
    pulseaudio_cv_sync_bool_compare_and_swap, [
    AC_LINK_IFELSE(
261
        [AC_LANG_PROGRAM([], [[int a = 4; __sync_bool_compare_and_swap(&a, 4, 5);]])],
262
263
264
        [pulseaudio_cv_sync_bool_compare_and_swap=yes],
        [pulseaudio_cv_sync_bool_compare_and_swap=no])
    ])
265
266

if test "$pulseaudio_cv_sync_bool_compare_and_swap" = "yes" ; then
267
    AC_DEFINE([HAVE_ATOMIC_BUILTINS], 1, [Have __sync_bool_compare_and_swap() and friends.])
268
269
270
    if test "$pulseaudio_cv_atomic_store_n" = "yes" ; then
         AC_DEFINE([HAVE_ATOMIC_BUILTINS_MEMORY_MODEL], 1, [Have __atomic_store_n() and friends.])
    fi
271
    need_libatomic_ops=no
272
else
273
    # HW specific atomic ops stuff
274
    AC_MSG_CHECKING([architecture for native atomic operations])
275
    case $host in
276
277
278
279
        *-netbsd*)
            AC_MSG_RESULT([yes])
            need_libatomic_ops=no
        ;;
280
        arm*)
281
282
283
284
285
            AC_MSG_RESULT([arm])
            AC_MSG_CHECKING([whether we can use Linux kernel helpers])
            # The Linux kernel helper functions have been there since 2.6.16. However
            # compile time checking for kernel version in cross compile environment
            # (which is usually the case for arm cpu) is tricky (or impossible).
286
            if test "x$os_is_linux" = "x1" && test "x$enable_atomic_arm_linux_helpers" != "xno"; then
287
288
289
290
                AC_MSG_RESULT([yes])
                AC_DEFINE_UNQUOTED(ATOMIC_ARM_LINUX_HELPERS, 1, [special arm linux implementation])
                need_libatomic_ops=no
            else
291
292
293
294
                AC_MSG_RESULT([no])
                AC_CACHE_CHECK([compiler support for arm inline asm atomic operations],
                    pulseaudio_cv_support_arm_atomic_ops, [
                    AC_COMPILE_IFELSE(
295
                        [AC_LANG_PROGRAM([], [[
296
297
298
299
300
301
302
303
304
                            volatile int a=0;
                            int o=0, n=1, r;
                            asm volatile ("ldrex    %0, [%1]\n"
                                          "subs  %0, %0, %2\n"
                                          "strexeq %0, %3, [%1]\n"
                                          : "=&r" (r)
                                          : "r" (&a), "Ir" (o), "r" (n)
                                          : "cc");
                            return (a==1 ? 0 : -1);
305
                        ]])],
306
307
308
309
310
311
312
313
                        [pulseaudio_cv_support_arm_atomic_ops=yes],
                        [pulseaudio_cv_support_arm_atomic_ops=no])
                ])
                AS_IF([test "$pulseaudio_cv_support_arm_atomic_ops" = "yes"], [
                    AC_DEFINE([ATOMIC_ARM_INLINE_ASM], 1, [Have ARM atomic instructions.])
                    need_libatomic_ops=no
                ])
            fi
314
        ;;
315
        *-freebsd*)
316
317
            AC_MSG_RESULT([yes])
            need_libatomic_ops=no
318
        ;;
319
        *)
320
            AC_MSG_RESULT([unknown])
321
322
        ;;
    esac
323
324
fi

325
326
327
328
329
330
# If we're on ARM, check for the ARMV6 instructions we need */
case $host in
  arm*)
    AC_CACHE_CHECK([support for required armv6 instructions],
      pulseaudio_cv_support_armv6,
      [AC_COMPILE_IFELSE(
331
         [AC_LANG_PROGRAM([],
332
333
334
335
336
337
338
339
340
341
342
343
           [[volatile int a = -60000, b = 0xaaaabbbb, c = 0xccccdddd;
             asm volatile ("ldr r0, %2 \n"
                           "ldr r2, %3 \n"
                           "ldr r3, %4 \n"
                           "ssat r1, #8, r0 \n"
                           "str r1, %0 \n"
                           "pkhbt r1, r3, r2, LSL #8 \n"
                           "str r1, %1 \n"
                           : "=m" (a), "=m" (b)
                           : "m" (a), "m" (b), "m" (c)
                           : "r0", "r1", "r2", "r3", "cc");
             return (a == -128 && b == 0xaabbdddd) ? 0 : -1;
344
           ]])],
345
346
347
348
349
350
351
352
353
354
355
         [pulseaudio_cv_support_armv6=yes],
         [pulseaudio_cv_support_armv6=no])
      ])
    AS_IF([test "$pulseaudio_cv_support_armv6" = "yes"], [
        AC_DEFINE([HAVE_ARMV6], 1, [Have ARMv6 instructions.])
      ])
  ;;
  *)
  ;;
esac

356
357
358
359
360
#### NEON optimisations ####
AC_ARG_ENABLE([neon-opt],
    AS_HELP_STRING([--enable-neon-opt], [Enable NEON optimisations on ARM CPUs that support it]))

AS_IF([test "x$enable_neon_opt" != "xno"],
361
    [save_CFLAGS="$CFLAGS"; CFLAGS="-mfpu=neon $CFLAGS"
362
     AC_COMPILE_IFELSE(
363
        [AC_LANG_PROGRAM([[#include <arm_neon.h>]], [])],
364
365
366
367
368
369
370
371
372
373
374
375
376
        [
         HAVE_NEON=1
         NEON_CFLAGS="-mfpu=neon"
        ],
        [
         HAVE_NEON=0
         NEON_CFLAGS=
        ])
     CFLAGS="$save_CFLAGS"
    ],
    [HAVE_NEON=0])

AS_IF([test "x$enable_neon_opt" = "xyes" && test "x$HAVE_NEON" = "x0"],
377
      [AC_MSG_ERROR([*** Compiler does not support -mfpu=neon or CFLAGS override -mfpu])])
378
379
380
381
382
383

AC_SUBST(HAVE_NEON)
AC_SUBST(NEON_CFLAGS)
AM_CONDITIONAL([HAVE_NEON], [test "x$HAVE_NEON" = x1])
AS_IF([test "x$HAVE_NEON" = "x1"], AC_DEFINE([HAVE_NEON], 1, [Have NEON support?]))

384

Lennart Poettering's avatar
Lennart Poettering committed
385
#### libtool stuff ####
386

387
LT_PREREQ(2.4)
Lennart Poettering's avatar
Lennart Poettering committed
388
LT_INIT([dlopen win32-dll disable-static])
389

390
391
392
393
dnl As an extra safety device, check for lt_dladvise_init() which is
dnl only implemented in libtool 2.x, and refine as we go if we have
dnl refined requirements.
dnl
394
395
396
397
398
399
400
401
402
dnl Check the header files first since the system may have a
dnl libltdl.so for runtime, but no headers, and we want to bail out as
dnl soon as possible.
dnl
dnl We don't need any special variable for this though, since the user
dnl can give the proper place to find libltdl through the standard
dnl variables like LDFLAGS and CPPFLAGS.

AC_CHECK_HEADER([ltdl.h],
403
    [AC_CHECK_LIB([ltdl], [lt_dladvise_init], [LIBLTDL=-lltdl], [LIBLTDL=])],
404
405
406
    [LIBLTDL=])

AS_IF([test "x$LIBLTDL" = "x"],
407
    [AC_MSG_ERROR([Unable to find libltdl version 2. Makes sure you have libtool 2.4 or later installed.])])
408
AC_SUBST([LIBLTDL])
409

Lennart Poettering's avatar
Lennart Poettering committed
410
411
412
413
414
415
416
417

###################################
#   Basic environment checks      #
###################################

#### Checks for header files. ####

# ISO
Lennart Poettering's avatar
Lennart Poettering committed
418
419
AC_HEADER_STDC

Lennart Poettering's avatar
Lennart Poettering committed
420
# POSIX
421
AC_CHECK_HEADERS_ONCE([arpa/inet.h cpuid.h glob.h grp.h netdb.h netinet/in.h \
422
    netinet/in_systm.h netinet/tcp.h poll.h pwd.h sched.h \
423
    sys/mman.h sys/select.h sys/socket.h sys/wait.h \
424
    sys/uio.h syslog.h sys/dl.h dlfcn.h linux/sockios.h])
425
AC_CHECK_HEADERS([netinet/ip.h], [], [],
426
427
428
429
430
431
432
433
                 [#include <sys/types.h>
                  #if HAVE_NETINET_IN_H
                  # include <netinet/in.h>
                  #endif
                  #if HAVE_NETINET_IN_SYSTM_H
                  # include <netinet/in_systm.h>
                  #endif
                 ])
434
435
AC_CHECK_HEADERS([sys/resource.h], [HAVE_SYS_RESOURCE_H=1], [HAVE_SYS_RESOURCE_H=0])
AC_SUBST(HAVE_SYS_RESOURCE_H)
Lennart Poettering's avatar
Lennart Poettering committed
436
437
AC_CHECK_HEADERS([sys/un.h], [HAVE_AF_UNIX=1], [HAVE_AF_UNIX=0])
AM_CONDITIONAL(HAVE_AF_UNIX, test "x$HAVE_AF_UNIX" = "x1")
438
AC_SUBST(HAVE_AF_UNIX)
Lennart Poettering's avatar
Lennart Poettering committed
439
440
441
442
443

# Linux
AC_CHECK_HEADERS([linux/input.h], [HAVE_EVDEV=1], [HAVE_EVDEV=0])
AM_CONDITIONAL([HAVE_EVDEV], [test "x$HAVE_EVDEV" = "x1"])

444
AC_CHECK_HEADERS_ONCE([sys/prctl.h])
445

446
# Solaris
447
AC_CHECK_HEADERS_ONCE([sys/conf.h sys/filio.h])
448

Lennart Poettering's avatar
Lennart Poettering committed
449
# Windows
450
AC_CHECK_HEADERS_ONCE([windows.h winsock2.h ws2tcpip.h])
Lennart Poettering's avatar
Lennart Poettering committed
451

452
# NetBSD
453
AC_CHECK_HEADERS_ONCE([sys/atomic.h])
454

Lennart Poettering's avatar
Lennart Poettering committed
455
# Other
456
457
458
459
460
AC_CHECK_HEADERS_ONCE([sys/ioctl.h])
AC_CHECK_HEADERS_ONCE([byteswap.h])
AC_CHECK_HEADERS_ONCE([sys/syscall.h])
AC_CHECK_HEADERS_ONCE([sys/eventfd.h])
AC_CHECK_HEADERS_ONCE([execinfo.h])
461
AC_CHECK_HEADERS_ONCE([langinfo.h])
462
AC_CHECK_HEADERS_ONCE([regex.h pcreposix.h])
463
AC_CHECK_HEADERS_ONCE([locale.h xlocale.h])
Lennart Poettering's avatar
Lennart Poettering committed
464

465
AM_CONDITIONAL(HAVE_SYS_EVENTFD_H, test "x$ac_cv_header_sys_eventfd_h" = "xyes")
466

Lennart Poettering's avatar
Lennart Poettering committed
467
#### Typdefs, structures, etc. ####
Lennart Poettering's avatar
Lennart Poettering committed
468
469

AC_C_CONST
Lennart Poettering's avatar
Lennart Poettering committed
470
AC_C_BIGENDIAN
Lennart Poettering's avatar
Lennart Poettering committed
471
472
AC_TYPE_PID_T
AC_TYPE_SIZE_T
473
AC_CHECK_TYPES(ssize_t, , AC_DEFINE([ssize_t], [signed long], [Define ssize_t if it is not done by the standard libs.]))
Lennart Poettering's avatar
Lennart Poettering committed
474
AC_TYPE_OFF_T
Lennart Poettering's avatar
Lennart Poettering committed
475

476
AC_TYPE_UID_T
477
AC_CHECK_DECLS(environ)
Lennart Poettering's avatar
Lennart Poettering committed
478

479
480
481
482
483
484
485
486
487
488
489
AC_CHECK_SIZEOF(void*)

fast_64bit_operations="no"
# This check covers x32-ABI
AC_CHECK_DECL([__x86_64__], [fast_64bit_operations="yes"], [], [])
if test "x$fast_64bit_operations" = "xno"; then
    AS_IF([test $ac_cv_sizeof_voidp -ge 8], [fast_64bit_operations="yes"])
fi

AS_IF([test "x$fast_64bit_operations" = "xyes"], AC_DEFINE([HAVE_FAST_64BIT_OPERATIONS], 1, [Have CPU with fast 64-bit operations?]))

490
# SIGXCPU
491
AX_CHECK_DEFINE([signal.h], [SIGXCPU], [HAVE_SIGXCPU=1], [HAVE_SIGXCPU=0])
492
AS_IF([test "x$HAVE_SIGXCPU" = "x1"], AC_DEFINE([HAVE_SIGXCPU], 1, [Have SIGXCPU?]))
Lennart Poettering's avatar
Lennart Poettering committed
493
494
AM_CONDITIONAL(HAVE_SIGXCPU, test "x$HAVE_SIGXCPU" = "x1")

495
# INADDR_NONE, Solaris lacks this
496
497
AX_CHECK_DEFINE([netinet/in.h], [INADDR_NONE], [],
    [AX_CHECK_DEFINE([winsock2.h], [INADDR_NONE], [],
498
        [AC_DEFINE([INADDR_NONE],  [0xffffffff], [Define INADDR_NONE if not found in <netinet/in.h>])])])
Lennart Poettering's avatar
Lennart Poettering committed
499

500
501
502
503
504

# _Bool
AC_CACHE_CHECK([whether $CC knows _Bool],
    pulseaudio_cv__Bool,
    [AC_COMPILE_IFELSE(
505
        [AC_LANG_PROGRAM([], [[_Bool b;]])],
506
507
508
509
510
511
512
        [pulseaudio_cv__Bool=yes],
        [pulseaudio_cv__Bool=no])
    ])

AS_IF([test "$pulseaudio_cv__Bool" = "yes"], AC_DEFINE([HAVE_STD_BOOL], 1, [Have _Bool.]))


Lennart Poettering's avatar
Lennart Poettering committed
513
514
515
#### Check for libs ####

# ISO
516
AC_SEARCH_LIBS([pow], [m])
Lennart Poettering's avatar
Lennart Poettering committed
517
518

# POSIX
519
AC_SEARCH_LIBS([sched_setscheduler], [rt])
520
AC_SEARCH_LIBS([dlopen], [dl])
521
AC_SEARCH_LIBS([shm_open], [rt])
522
AC_SEARCH_LIBS([inet_ntop], [nsl])
523
AC_SEARCH_LIBS([timer_create], [rt])
524
AC_SEARCH_LIBS([pthread_setaffinity_np], [pthread])
525
526
AC_SEARCH_LIBS([pthread_getname_np], [pthread])
AC_SEARCH_LIBS([pthread_setname_np], [pthread])
Lennart Poettering's avatar
Lennart Poettering committed
527
528

# BSD
529
AC_SEARCH_LIBS([connect], [socket])
530
AC_SEARCH_LIBS([backtrace], [execinfo ubacktrace])
Lennart Poettering's avatar
Lennart Poettering committed
531

532
533
534
# Darwin/OS X
if test "x$os_is_darwin" = "x1" ; then
    AC_MSG_CHECKING([looking for Apple CoreService Framework])
535
    AC_CHECK_HEADER([CoreServices/CoreServices.h],
536
        [LIBS="$LIBS -framework CoreServices"],
537
        [AC_MSG_ERROR([CoreServices.h header file not found])]
538
    )
539
540
541

    AC_MSG_RESULT([ok])
    AC_DEFINE([HAVE_CLOCK_GETTIME], 1, [Using clock_gettime() replacement])
542
    HAVE_BONJOUR=1
543
544
fi

545
546
AM_CONDITIONAL([HAVE_BONJOUR], [test "x$HAVE_BONJOUR" = x1])

Maarten Bosmans's avatar
Maarten Bosmans committed
547
# Windows
548
AC_SEARCH_LIBS([regexec], [pcreposix])
Maarten Bosmans's avatar
Maarten Bosmans committed
549
550
# This magic is needed so we do not needlessly add static libs to the win32  build, disabling its ability to make dlls.
AC_CHECK_FUNCS([getopt_long], [], [AC_CHECK_LIB([iberty], [getopt_long])])
551

552

Lennart Poettering's avatar
Lennart Poettering committed
553
554
#### Check for functions ####

555
# ISO
556
AC_CHECK_FUNCS_ONCE([lrintf strtof])
557

Lennart Poettering's avatar
Lennart Poettering committed
558
559
# POSIX
AC_FUNC_FORK
560
AC_FUNC_GETGROUPS
561
AC_CHECK_FUNCS_ONCE([chmod chown fstat fchown fchmod clock_gettime getaddrinfo getgrgid_r getgrnam_r \
562
    getpwnam_r getpwuid_r gettimeofday getuid mlock nanosleep \
563
    pipe posix_fadvise posix_madvise posix_memalign setpgid setsid shm_open \
564
    sigaction sleep symlink sysconf uname pthread_setaffinity_np pthread_getname_np pthread_setname_np])
Lennart Poettering's avatar
Lennart Poettering committed
565
AC_CHECK_FUNCS([mkfifo], [HAVE_MKFIFO=1], [HAVE_MKFIFO=0])
566
AC_SUBST(HAVE_MKFIFO)
Lennart Poettering's avatar
Lennart Poettering committed
567
568
569
AM_CONDITIONAL(HAVE_MKFIFO, test "x$HAVE_MKFIFO" = "x1")

# X/OPEN
570
AC_CHECK_FUNCS_ONCE([readlink])
Lennart Poettering's avatar
Lennart Poettering committed
571
572

# SUSv2
573
AC_CHECK_FUNCS_ONCE([ctime_r usleep])
574

575
# SUSv3
576
AC_CHECK_FUNCS_ONCE([strerror_r])
577

Lennart Poettering's avatar
Lennart Poettering committed
578
# BSD
579
AC_CHECK_FUNCS_ONCE([lstat paccept])
Lennart Poettering's avatar
Lennart Poettering committed
580
581

# Non-standard
582
AC_CHECK_FUNCS_ONCE([setresuid setresgid setreuid setregid seteuid setegid ppoll strsignal sig2str strtod_l pipe2 accept4])
583

Lennart Poettering's avatar
Lennart Poettering committed
584
585
AC_FUNC_ALLOCA

586
587
588
AC_CHECK_FUNCS([regexec], [HAVE_REGEX=1], [HAVE_REGEX=0])
AM_CONDITIONAL(HAVE_REGEX, [test "x$HAVE_REGEX" = "x1"])

589
# Large File-Support (LFS)
590
AC_SYS_LARGEFILE
591
# Check for open64 to know if the current system does have open64() and similar functions
592
AC_CHECK_FUNCS_ONCE([open64])
593

594
595
AC_SEARCH_LIBS([dladdr], [dl], [HAVE_DLADDR=1], [HAVE_DLADDR=0])
AC_DEFINE(HAVE_DLADDR, [1], [Have dladdr?])
Lennart Poettering's avatar
Lennart Poettering committed
596

Lennart Poettering's avatar
Lennart Poettering committed
597
598
599
600
###################################
#      External libraries         #
###################################

601
#### [lib]iconv ####
602

603
AM_ICONV
604

605
606
607
608
609
610
611
612
613
614
615
616
617
#### Linux memfd_create(2) SHM support ####

AC_ARG_ENABLE([memfd],
    AS_HELP_STRING([--disable-memfd], [Disable Linux memfd shared memory]))

AS_IF([test "x$enable_memfd" != "xno"],
    AC_CHECK_DECL(SYS_memfd_create, [HAVE_MEMFD=1], [HAVE_MEMFD=0], [#include <sys/syscall.h>]),
    [HAVE_MEMFD=0])

AS_IF([test "x$enable_memfd" = "xyes" && test "x$HAVE_MEMFD" = "x0"],
    [AC_MSG_ERROR([*** Your Linux kernel does not support memfd shared memory.
                  *** Use linux v3.17 or higher for such a feature.])])

618
619
620
AS_IF([test "x$HAVE_MEMFD" = "x1"],
    AC_CHECK_FUNCS([memfd_create]))

621
622
623
624
AC_SUBST(HAVE_MEMFD)
AM_CONDITIONAL([HAVE_MEMFD], [test "x$HAVE_MEMFD" = x1])
AS_IF([test "x$HAVE_MEMFD" = "x1"], AC_DEFINE([HAVE_MEMFD], 1, [Have memfd shared memory.]))

Lennart Poettering's avatar
Lennart Poettering committed
625
626
#### X11 (optional) ####

627
AC_ARG_ENABLE([x11],
628
    AS_HELP_STRING([--disable-x11],[Disable optional X11 support]))
Lennart Poettering's avatar
Lennart Poettering committed
629

630
631
632
633
AS_IF([test "x$enable_x11" != "xno"],
    [PKG_CHECK_MODULES(X11, [ x11-xcb xcb >= 1.6 ice sm xtst ], HAVE_X11=1, HAVE_X11=0)],
    HAVE_X11=0)

634
635
AS_IF([test "x$enable_x11" = "xyes" && test "x$HAVE_X11" = "x0"],
    [AC_MSG_ERROR([*** X11 not found])])
Lennart Poettering's avatar
Lennart Poettering committed
636

637
AC_SUBST(HAVE_X11)
638
AM_CONDITIONAL([HAVE_X11], [test "x$HAVE_X11" = x1])
639
AS_IF([test "x$HAVE_X11" = "x1"], AC_DEFINE([HAVE_X11], 1, [Have X11?]))
640

Lennart Poettering's avatar
Lennart Poettering committed
641
642
643
644
#### Capabilities (optional) ####

CAP_LIBS=''

645
AC_ARG_WITH([caps],
646
    AS_HELP_STRING([--without-caps],[Omit support for dropping capabilities.]))
Lennart Poettering's avatar
Lennart Poettering committed
647
648

if test "x${with_caps}" != "xno"; then
649
650
651
    AC_SEARCH_LIBS([cap_init], [cap], [], [])

    # Only give an error on hosts that we know could support capabilities
652
    AC_CHECK_HEADERS([sys/capability.h], [], [
653
654
655
      if test "${host_has_caps}" = "1"; then
        AC_MSG_ERROR([*** sys/capability.h not found.  Use --without-caps to disable capabilities support.])
      fi])
Lennart Poettering's avatar
Lennart Poettering committed
656
657
fi

658
659
#### Valgrind (optional) ####

660
AC_CHECK_HEADERS_ONCE([valgrind/memcheck.h])
661

Deng Zhengrong's avatar
Deng Zhengrong committed
662
663
664
665
666
667
#### check unit tests ####

AC_ARG_ENABLE([tests],
    AS_HELP_STRING([--disable-tests],[Disable unit tests]))

AS_IF([test "x$enable_tests" != "xno"],
668
    [PKG_CHECK_MODULES(LIBCHECK, [ check >= 0.9.10 ], HAVE_LIBCHECK=1, HAVE_LIBCHECK=0)],
Deng Zhengrong's avatar
Deng Zhengrong committed
669
    HAVE_LIBCHECK=0)
670

Deng Zhengrong's avatar
Deng Zhengrong committed
671
AS_IF([test "x$enable_tests" = "xyes" && test "x$HAVE_LIBCHECK" = "x0"],
672
    [AC_MSG_ERROR([*** check library not found or too old])])
Deng Zhengrong's avatar
Deng Zhengrong committed
673
674
675

AM_CONDITIONAL([HAVE_TESTS], [test "x$HAVE_LIBCHECK" = x1])

Lennart Poettering's avatar
Lennart Poettering committed
676
677
#### Sound file ####

678
PKG_CHECK_MODULES(LIBSNDFILE, [ sndfile >= 1.0.20 ])
Lennart Poettering's avatar
Lennart Poettering committed
679

680
#### atomic-ops ####
681

682
AC_MSG_CHECKING([whether we need libatomic_ops])
683
if test "x$need_libatomic_ops" = "xyes"; then
684
    AC_MSG_RESULT([yes])
685
686
687
    AC_CHECK_HEADERS([atomic_ops.h],
        [CFLAGS="$CFLAGS -DAO_REQUIRE_CAS"],
        [AC_MSG_ERROR([*** libatomic-ops headers not found])])
688
689
690

    # Win32 does not need the lib and breaks horribly if we try to include it
    AS_IF([test "x$os_is_win32" != "x1"], [LIBS="$LIBS -latomic_ops"])
691
else
692
    AC_MSG_RESULT([no])
693
fi
694

695
696
697
#### Libsamplerate support (optional) ####

AC_ARG_ENABLE([samplerate],
698
    AS_HELP_STRING([--enable-samplerate],[Enable optional libsamplerate support (DEPRECATED)]))
699

700
AS_IF([test "x$enable_samplerate" = "xyes"],
701
702
703
    [PKG_CHECK_MODULES(LIBSAMPLERATE, [ samplerate >= 0.1.0 ], HAVE_LIBSAMPLERATE=1, HAVE_LIBSAMPLERATE=0)],
    HAVE_LIBSAMPLERATE=0)

704
705
AS_IF([test "x$enable_samplerate" = "xyes" && test "x$HAVE_LIBSAMPLERATE" = "x0"],
    [AC_MSG_ERROR([*** Libsamplerate not found])])
706
707

AM_CONDITIONAL([HAVE_LIBSAMPLERATE], [test "x$HAVE_LIBSAMPLERATE" = x1])
708
AS_IF([test "x$HAVE_LIBSAMPLERATE" = "x1"], AC_DEFINE([HAVE_LIBSAMPLERATE], 1, [Have libsamplerate?]))
709

710
711
AS_IF([test "x$HAVE_LIBSAMPLERATE" = "x1"], AC_MSG_WARN([Support for libsamplerate is DEPRECATED]))

712
713
#### Database support ####

714
715
716
717
718
719
720
721
AC_ARG_WITH([database],
    AS_HELP_STRING([--with-database=auto|tdb|gdbm|simple],[Choose database backend.]),[],[with_database=auto])


AS_IF([test "x$with_database" = "xauto" -o "x$with_database" = "xtdb"],
    [PKG_CHECK_MODULES(TDB, [ tdb ], HAVE_TDB=1, HAVE_TDB=0)],
    HAVE_TDB=0)
AS_IF([test "x$HAVE_TDB" = "x1"], with_database=tdb)
722

723
724
AS_IF([test "x$with_database" = "xtdb" && test "x$HAVE_TDB" = "x0"],
    [AC_MSG_ERROR([*** tdb not found])])
725
726


727
728
729
730
731
732
733
734
735
736
737
738
739
AS_IF([test "x$with_database" = "xauto" -o "x$with_database" = "xgdbm"],
    [
        HAVE_GDBM=1
        AC_CHECK_LIB(gdbm, gdbm_open, [], HAVE_GDBM=0)
        AC_CHECK_HEADERS(gdbm.h, [], HAVE_GDBM=0)
    ],
    HAVE_GDBM=0)
AS_IF([test "x$HAVE_GDBM" = "x1"],
    [
        with_database=gdbm
        GDBM_CFLAGS=
        GDBM_LIBS=-lgdbm
    ])
740

741
742
AS_IF([test "x$with_database" = "xgdbm" && test "x$HAVE_GDBM" = "x0"],
    [AC_MSG_ERROR([*** gdbm not found])])
743

744

745
746
747
748
749
750
751
752
AS_IF([test "x$with_database" = "xauto" -o "x$with_database" = "xsimple"],
    HAVE_SIMPLEDB=1,
    HAVE_SIMPLEDB=0)
AS_IF([test "x$HAVE_SIMPLEDB" = "x1"], with_database=simple)

AS_IF([test "x$HAVE_TDB" != x1 -a "x$HAVE_GDBM" != x1 -a "x$HAVE_SIMPLEDB" != x1],
    AC_MSG_ERROR([*** missing database backend]))

753
754

AM_CONDITIONAL([HAVE_TDB], [test "x$HAVE_TDB" = x1])
755
AS_IF([test "x$HAVE_TDB" = "x1"], AC_DEFINE([HAVE_TDB], 1, [Have tdb?]))
756
757
758
759

AC_SUBST(GDBM_CFLAGS)
AC_SUBST(GDBM_LIBS)
AM_CONDITIONAL([HAVE_GDBM], [test "x$HAVE_GDBM" = x1])
760
AS_IF([test "x$HAVE_GDBM" = "x1"], AC_DEFINE([HAVE_GDBM], 1, [Have gdbm?]))
761

762
AM_CONDITIONAL([HAVE_SIMPLEDB], [test "x$HAVE_SIMPLEDB" = x1])
763
AS_IF([test "x$HAVE_SIMPLEDB" = "x1"], AC_DEFINE([HAVE_SIMPLEDB], 1, [Have simple?]))
764

Lennart Poettering's avatar
Lennart Poettering committed
765
766
#### OSS support (optional) ####

767
AC_ARG_ENABLE([oss-output],
768
    AS_HELP_STRING([--disable-oss-output],[Disable optional OSS output support]))
769

770
AC_ARG_ENABLE([oss-wrapper],
771
    AS_HELP_STRING([--disable-oss-wrapper],[Disable optional OSS wrapper support]))
772

773
774
775
AC_ARG_WITH([pulsedsp-location],
    AS_HELP_STRING([--with-pulsedsp-location],[Specify location where OSS wrapper will be installed]))

776
777
778
779
780
AS_IF([test "x$enable_oss_output" != "xno" -o "x$enable_oss_wrapper" != "xno"],
    [AC_CHECK_HEADERS([sys/soundcard.h], HAVE_OSS=1, HAVE_OSS=0)],
    HAVE_OSS=0)

AS_IF([test "x$enable_oss_output" = "xyes" -o "x$enable_oss_wrapper" = "xyes" && test "x$HAVE_OSS" = "x0"],
781
    [AC_MSG_ERROR([*** OSS support not found])])
782

783
784
785
786
787
788
789
790
AS_IF([test "x$enable_oss_output" != "xno"],
    [AS_IF([test "x$HAVE_OSS" = "x1"], HAVE_OSS_OUTPUT=1, HAVE_OSS_OUTPUT=0)],
    HAVE_OSS_OUTPUT=0)

AS_IF([test "x$enable_oss_wrapper" != "xno"],
    [AS_IF([test "x$HAVE_OSS" = "x1"], HAVE_OSS_WRAPPER=1, HAVE_OSS_WRAPPER=0)],
    HAVE_OSS_WRAPPER=0)

791
792
793
794
AS_IF([test "x$with_pulsedsp_location" != "x"],
    [PULSEDSP_LOCATION="$with_pulsedsp_location"],
    [PULSEDSP_LOCATION="\$(pkglibdir)"])

795
AC_SUBST(HAVE_OSS_OUTPUT)
796
AC_SUBST(PULSEDSP_LOCATION)
797
798
AM_CONDITIONAL([HAVE_OSS_OUTPUT], [test "x$HAVE_OSS_OUTPUT" = "x1"])
AM_CONDITIONAL([HAVE_OSS_WRAPPER], [test "x$HAVE_OSS_WRAPPER" = "x1"])
799
800
AS_IF([test "x$HAVE_OSS_OUTPUT" = "x1"], AC_DEFINE([HAVE_OSS_OUTPUT], 1, [Have OSS output?]))
AS_IF([test "x$HAVE_OSS_WRAPPER" = "x1"], AC_DEFINE([HAVE_OSS_WRAPPER], 1, [Have OSS wrapper (padsp)?]))
801

802
803
804
805
806
807
808
# Some platforms like SunOS (Illumos) may ship without SOUND_PCM_* functionality
if test "x$HAVE_OSS" = "x1"; then
    AC_CHECK_DECLS([SOUND_PCM_READ_RATE], [], [], [[#include <sys/soundcard.h>]])
    AC_CHECK_DECLS([SOUND_PCM_READ_CHANNELS], [], [], [[#include <sys/soundcard.h>]])
    AC_CHECK_DECLS([SOUND_PCM_READ_BITS], [], [], [[#include <sys/soundcard.h>]])
fi

809
810
811
#### CoreAudio support (optional) ####

AC_ARG_ENABLE([coreaudio-output],
812
    AS_HELP_STRING([--disable-coreaudio-output],[Disable optional CoreAudio output support]))
813

814
815
816
AS_IF([test "x$enable_coreaudio_output" != "xno"],
    [AC_CHECK_HEADERS([CoreAudio/CoreAudio.h], HAVE_COREAUDIO=1, HAVE_COREAUDIO=0)],
    HAVE_COREAUDIO=0)
817

818
819
820
AS_IF([test "x$enable_coreaudio_output" = "xyes" && test "x$HAVE_COREAUDIO" = "x0"],
    [AC_MSG_ERROR([*** CoreAudio output support not found])])

821
AC_SUBST(HAVE_COREAUDIO)
822
AM_CONDITIONAL([HAVE_COREAUDIO], [test "x$HAVE_COREAUDIO" = "x1" && test "x$enable_coreaudio_output" != "xno"])
823

824
825
AS_IF([test "x$HAVE_COREAUDIO" = "x1"], AC_DEFINE([HAVE_COREAUDIO], 1, [Have CoreAudio?]))

Lennart Poettering's avatar
Lennart Poettering committed
826
827
#### ALSA support (optional) ####

828
AC_ARG_ENABLE([alsa],
829
    AS_HELP_STRING([--disable-alsa],[Disable optional ALSA support]))
830

831
AS_IF([test "x$enable_alsa" != "xno"],
832
    [PKG_CHECK_MODULES(ASOUNDLIB, [ alsa >= 1.0.19 ], HAVE_ALSA=1, HAVE_ALSA=0)],
833
834
    HAVE_ALSA=0)

835
AS_IF([test "x$enable_alsa" = "xyes" && test "x$HAVE_ALSA" = "x0"],
836
837
838
839
    [AC_MSG_ERROR([*** Needed alsa >= 1.0.19 support not found])])

AS_IF([test "x$HAVE_ALSA" = "x1"],
    [
840
        save_CPPFLAGS="$CPPFLAGS"; CPPFLAGS="$CPPFLAGS $ASOUNDLIB_CFLAGS"
841
        AC_CHECK_HEADERS([alsa/use-case.h], HAVE_ALSA_UCM=1, HAVE_ALSA_UCM=0)
842
        CPPFLAGS="$save_CPPFLAGS"
843
844
    ],
    HAVE_ALSA_UCM=0)
845

846
AC_SUBST(HAVE_ALSA)
Lennart Poettering's avatar
Lennart Poettering committed
847
AM_CONDITIONAL([HAVE_ALSA], [test "x$HAVE_ALSA" = x1])
848
AS_IF([test "x$HAVE_ALSA" = "x1"], AC_DEFINE([HAVE_ALSA], 1, [Have ALSA?]))
849
AS_IF([test "x$HAVE_ALSA_UCM" = "x1"], AC_DEFINE([HAVE_ALSA_UCM], 1, [Have ALSA UCM?]))
Lennart Poettering's avatar
Lennart Poettering committed
850

851
852
853
854
855
856
857
#### EsounD support (optional) ####

AC_ARG_ENABLE([esound],
    AS_HELP_STRING([--disable-esound],[Disable optional EsounD support]))
AM_CONDITIONAL([HAVE_ESOUND], [test "x$enable_esound" != "xno"])
AS_IF([test "x$enable_esound" != "xno"], [HAVE_ESOUND=1])

Lennart Poettering's avatar
Lennart Poettering committed
858
859
#### Solaris audio support (optional) ####

860
AC_ARG_ENABLE([solaris],
861
    AS_HELP_STRING([--disable-solaris],[Disable optional Solaris audio support]))
862

863
864
865
866
AS_IF([test "x$enable_solaris" != "xno"],
    [AC_CHECK_HEADERS([sys/audio.h], HAVE_SOLARIS=1, HAVE_SOLARIS=0)],
    HAVE_SOLARIS=0)

867
868
AS_IF([test "x$enable_solaris" = "xyes" && test "x$HAVE_SOLARIS" = "x0"],
    [AC_MSG_ERROR([*** Solaris audio support not found])])
869

Lennart Poettering's avatar
Lennart Poettering committed
870
AM_CONDITIONAL([HAVE_SOLARIS], [test "x$HAVE_SOLARIS" = x1])
871
AS_IF([test "x$HAVE_SOLARIS" = "x1"], AC_DEFINE([HAVE_SOLARIS], 1, [Have Solaris audio?]))
Lennart Poettering's avatar
Lennart Poettering committed
872

873
874
875
#### WaveOut audio support (optional) ####

AC_ARG_ENABLE([waveout],
876
    AS_HELP_STRING([--disable-waveout],[Disable optional WaveOut audio support]))
877

878
879
880
881
AS_IF([test "x$enable_waveout" != "xno"],
    [AC_CHECK_HEADERS([mmsystem.h], HAVE_WAVEOUT=1, HAVE_WAVEOUT=0, [#include <windows.h>])],
    HAVE_WAVEOUT=0)

882
883
AS_IF([test "x$enable_waveout" = "xyes" && test "x$HAVE_WAVEOUT" = "x0"],
    [AC_MSG_ERROR([*** WaveOut audio support not found])])
884

885
AC_SUBST(HAVE_WAVEOUT)
886
AM_CONDITIONAL([HAVE_WAVEOUT], [test "x$HAVE_WAVEOUT" = x1])
887
AS_IF([test "x$HAVE_WAVEOUT" = "x1"], AC_DEFINE([HAVE_WAVEOUT], 1, [Have WaveOut audio?]))
888

Lennart Poettering's avatar
Lennart Poettering committed
889
890
#### GLib 2 support (optional) ####

891
AC_ARG_ENABLE([glib2],
892
    AS_HELP_STRING([--disable-glib2],[Disable optional GLib 2 support]))
893

894
895
896
897
AS_IF([test "x$enable_glib2" != "xno"],
    [PKG_CHECK_MODULES(GLIB20, [ glib-2.0 >= 2.4.0 ], HAVE_GLIB20=1, HAVE_GLIB20=0)],
    HAVE_GLIB20=0)

898
899
AS_IF([test "x$enable_glib2" = "xyes" && test "x$HAVE_GLIB20" = "x0"],
    [AC_MSG_ERROR([*** GLib 2 support not found])])
900

901
AC_SUBST(HAVE_GLIB20)
Lennart Poettering's avatar
Lennart Poettering committed
902
AM_CONDITIONAL([HAVE_GLIB20], [test "x$HAVE_GLIB20" = x1])
903
AS_IF([test "x$HAVE_GLIB20" = "x1"], AC_DEFINE([HAVE_GLIB], 1, [Have GLIB?]))
904

Marc-Antoine Perennou's avatar
Marc-Antoine Perennou committed
905
#### GTK3 support (optional) ####
906

Marc-Antoine Perennou's avatar
Marc-Antoine Perennou committed
907
908
AC_ARG_ENABLE([gtk3],
    AS_HELP_STRING([--disable-gtk3],[Disable optional Gtk+ 3 support]))
909

Marc-Antoine Perennou's avatar
Marc-Antoine Perennou committed
910
911
912
AS_IF([test "x$enable_gtk3" != "xno"],
    [PKG_CHECK_MODULES(GTK30, [ gtk+-3.0 ], HAVE_GTK30=1, HAVE_GTK30=0)],
    HAVE_GTK30=0)
913

Marc-Antoine Perennou's avatar
Marc-Antoine Perennou committed
914
915
AS_IF([test "x$enable_gtk3" = "xyes" && test "x$HAVE_GTK30" = "x0"],
    [AC_MSG_ERROR([*** Gtk+ 3 support not found])])
916

Marc-Antoine Perennou's avatar
Marc-Antoine Perennou committed
917
918
AM_CONDITIONAL([HAVE_GTK30], [test "x$HAVE_GTK30" = x1])
AS_IF([test "x$HAVE_GTK30" = "x1"], AC_DEFINE([HAVE_GTK], 1, [Have GTK?]))
919

920
921
922
923
#### GSettings and GConf support (optional) ####

AC_ARG_ENABLE([gsettings],
    AS_HELP_STRING([--disable-gsettings],[Disable optional GSettings support]))
924

925
AC_ARG_ENABLE([gconf],
926
    AS_HELP_STRING([--disable-gconf],[Disable optional GConf support]))
927

928
929
930
931
932
933
934
AS_IF([test "x$enable_gsettings" != "xno"],
    [PKG_CHECK_MODULES(GSETTINGS, [ gio-2.0 >= 2.26.0 ], [HAVE_GSETTINGS=1], [HAVE_GSETTINGS=0])],
    HAVE_GSETTINGS=0)

AS_IF([test "x$enable_gsettings" = "xyes" && test "x$HAVE_GSETTINGS" = "x0"],
    [AC_MSG_ERROR([*** GSettings support not found])])

935
936
937
938
AS_IF([test "x$enable_gconf" != "xno"],
    [PKG_CHECK_MODULES(GCONF, [ gconf-2.0 >= 2.4.0 gobject-2.0 ], HAVE_GCONF=1, HAVE_GCONF=0)],
    HAVE_GCONF=0)

939
940
AS_IF([test "x$enable_gconf" = "xyes" && test "x$HAVE_GCONF" = "x0"],
    [AC_MSG_ERROR([*** GConf support not found])])
941

942
943
944
945
946
947
948
949
950
951
952
953
# Enable only one of GSettings and GConf, unless both were explicitly
# requested. If neither was explicitly requested and both are available, prefer
# GSettings. This is done, because if module-gsettings and module-gconf are
# both loaded, they can cause conflicting or at least confusing configuration.
# Distributions may want to enable both modules when building PulseAudio, if
# they ensure that both modules are never installed at the same time.
AS_IF([test "x$HAVE_GSETTINGS" = "x1" && test "x$enable_gconf" != "xyes"],
      [HAVE_GCONF=0])
AS_IF([test "x$HAVE_GCONF" = "x1" && test "x$enable_gsettings" != "xyes"],
      [HAVE_GSETTINGS=0])

AM_CONDITIONAL([HAVE_GSETTINGS], [test "x$HAVE_GSETTINGS" = "x1"])
954
AC_SUBST([HAVE_GSETTINGS])
955
956
AM_CONDITIONAL([HAVE_GCONF], [test "x$HAVE_GCONF" = "x1"])
AC_SUBST([HAVE_GCONF])
957

958
if test "x$HAVE_GSETTINGS" = "x1" ; then
959
960
961
    GLIB_GSETTINGS
fi

962
963
#### Avahi support (optional) ####

964
AC_ARG_ENABLE([avahi],
965
    AS_HELP_STRING([--disable-avahi],[Disable optional Avahi support]))
966

967
968
969
970
AS_IF([test "x$enable_avahi" != "xno"],
    [PKG_CHECK_MODULES(AVAHI, [ avahi-client >= 0.6.0 ], HAVE_AVAHI=1, HAVE_AVAHI=0)],
    HAVE_AVAHI=0)

971
972
AS_IF([test "x$enable_avahi" = "xyes" && test "x$HAVE_AVAHI" = "x0"],
    [AC_MSG_ERROR([*** Avahi support not found])])
973

974
AC_SUBST(HAVE_AVAHI)
975
976
AM_CONDITIONAL([HAVE_AVAHI], [test "x$HAVE_AVAHI" = x1])

977
#### JACK (optional) ####
Lennart Poettering's avatar
Lennart Poettering committed
978

979
AC_ARG_ENABLE([jack],
980
    AS_HELP_STRING([--disable-jack],[Disable optional JACK support]))
981

982
AS_IF([test "x$enable_jack" != "xno"],
983
    [PKG_CHECK_MODULES(JACK, [ jack >= 0.117.0 ], HAVE_JACK=1, HAVE_JACK=0)],
984
985
    HAVE_JACK=0)

986
987
AS_IF([test "x$enable_jack" = "xyes" && test "x$HAVE_JACK" = "x0"],
    [AC_MSG_ERROR([*** JACK support not found])])