meson: Fix pulsedspdir
[platform/upstream/pulseaudio.git] / meson.build
1 project('pulseaudio', 'c', 'cpp',
2         version : run_command(find_program('git-version-gen'), join_paths(meson.current_source_dir(), '.tarball-version')).stdout().strip(),
3         meson_version : '>= 0.50.0',
4         default_options : [ 'c_std=gnu11', 'cpp_std=c++11' ]
5         )
6
7 pa_version_str = meson.project_version()
8 # For tarballs, the first split will do nothing, but for builds in git, we
9 # split out suffixes when there are commits since the last tag
10 # (e.g.: v11.99.1-3-gad14bdb24 -> v11.99.1)
11 version_split = pa_version_str.split('-')[0].split('.')
12 pa_version_major = version_split[0].split('v')[0]
13 pa_version_minor = version_split[1]
14 if version_split.length() > 2
15   pa_version_micro = version_split[2]
16 else
17   pa_version_micro = '0'
18 endif
19 pa_version_major_minor = pa_version_major + '.' + pa_version_minor
20
21 pa_api_version = 12
22 pa_protocol_version = 33
23
24 apiversion = '1.0'
25 soversion = 0
26 # FIXME: this doesn't actually do what we want it to
27 # maintaining compatibility with the previous libtool versioning
28 # current = minor * 100 + micro
29 libversion = '@0@.@1@.0'.format(soversion, pa_version_minor.to_int() * 100 + pa_version_micro.to_int())
30
31 # A simplified, synchronous, ABI-stable interface for client applications.
32 # For the version x:y:z always will hold y=z.
33 libpulse_simple_version = '1.1.1'
34
35 # The ABI-stable GLib adapter for client applications.
36 # For the version x:y:z always will hold y=z.
37 libpulse_mainloop_glib_version = '0.5.0'
38
39 # Paths
40
41 prefix = get_option('prefix')
42 assert(prefix.startswith('/'), 'Prefix is not absolute: "@0@"'.format(prefix))
43
44 bindir = join_paths(prefix, get_option('bindir'))
45 includedir = join_paths(prefix, get_option('includedir'))
46 libdir = join_paths(prefix, get_option('libdir'))
47 libexecdir = join_paths(prefix, get_option('libexecdir'))
48 mandir = join_paths(prefix, get_option('mandir'))
49 datadir = join_paths(prefix, get_option('datadir'))
50 localstatedir = join_paths(prefix, get_option('localstatedir'))
51 sysconfdir = join_paths(prefix, get_option('sysconfdir'))
52 privlibdir = join_paths(get_option('libdir'), 'pulseaudio')
53 alsadatadir = join_paths(datadir, 'pulseaudio', 'alsa-mixer')
54
55 pkgconfigdir = join_paths(libdir, 'pkgconfig')
56 pulselibexecdir = join_paths(libexecdir, 'pulse')
57 pulsesysconfdir = join_paths(sysconfdir, 'pulse')
58
59 modlibexecdir = get_option('modlibexecdir')
60 if modlibexecdir == ''
61   modlibexecdir = join_paths(libdir, 'pulse-' + pa_version_major_minor, 'modules')
62 endif
63
64 pulsedspdir = get_option('pulsedspdir')
65 if pulsedspdir == ''
66   pulsedspdir = join_paths(libdir, 'pulseaudio')
67 endif
68
69 vapidir = join_paths(datadir, 'vala', 'vapi')
70
71 bashcompletiondir = get_option('bashcompletiondir')
72 if bashcompletiondir == ''
73   bash_completion_dep = dependency('bash-completion', required : false)
74   if bash_completion_dep.found()
75     bashcompletiondir = bash_completion_dep.get_pkgconfig_variable('completionsdir')
76   else
77     bashcompletiondir = join_paths(datadir, 'bash-completion', 'completions')
78   endif
79 endif
80
81 zshcompletiondir = get_option('zshcompletiondir')
82 if zshcompletiondir == ''
83   zshcompletiondir = join_paths(datadir, 'zsh', 'site-functions')
84 endif
85
86 # Configuration data
87
88 cc = meson.get_compiler('c')
89
90 cdata = configuration_data()
91 cdata.set_quoted('PACKAGE', 'pulseaudio')
92 cdata.set_quoted('PACKAGE_NAME', 'pulseaudio')
93 cdata.set_quoted('PACKAGE_VERSION', pa_version_str)
94 cdata.set_quoted('CANONICAL_HOST', host_machine.cpu())
95 cdata.set('PA_MAJOR', pa_version_major)
96 cdata.set('PA_MINOR', pa_version_minor)
97 cdata.set('PA_API_VERSION', pa_api_version)
98 cdata.set('PA_PROTOCOL_VERSION', pa_protocol_version)
99 cdata.set_quoted('PA_MACHINE_ID', join_paths(sysconfdir, 'machine-id'))
100 cdata.set_quoted('PA_MACHINE_ID_FALLBACK', join_paths(localstatedir, 'lib', 'dbus', 'machine-id'))
101 cdata.set_quoted('PA_SRCDIR', join_paths(meson.current_source_dir(), 'src'))
102 cdata.set_quoted('PA_BUILDDIR', meson.current_build_dir())
103 cdata.set_quoted('PA_SOEXT', '.so')
104 cdata.set_quoted('PA_DEFAULT_CONFIG_DIR', pulsesysconfdir)
105 cdata.set_quoted('PA_BINARY', join_paths(bindir, 'pulseaudio'))
106 cdata.set_quoted('PA_SYSTEM_RUNTIME_PATH', join_paths(localstatedir, 'run', 'pulse'))
107 cdata.set_quoted('PA_SYSTEM_CONFIG_PATH', join_paths(localstatedir, 'lib', 'pulse'))
108 cdata.set_quoted('PA_SYSTEM_STATE_PATH', join_paths(localstatedir, 'lib', 'pulse'))
109 cdata.set_quoted('PA_DLSEARCHPATH', modlibexecdir)
110 cdata.set_quoted('PA_SYSTEM_USER', get_option('system_user'))
111 cdata.set_quoted('PA_SYSTEM_GROUP', get_option('system_group'))
112 cdata.set_quoted('PA_ACCESS_GROUP', get_option('access_group'))
113 cdata.set_quoted('PA_CFLAGS', 'Not yet supported on meson')
114 cdata.set_quoted('PA_ALSA_PATHS_DIR', join_paths(alsadatadir, 'paths'))
115 cdata.set_quoted('PA_ALSA_PROFILE_SETS_DIR', join_paths(alsadatadir, 'profile-sets'))
116 cdata.set_quoted('DESKTOPFILEDIR', join_paths(datadir, 'applications'))
117
118 # Platform specifics
119 # First some defaults to keep config file generation happy
120 cdata.set('HAVE_COREAUDIO', 0)
121 cdata.set('HAVE_WAVEOUT', 0)
122 # FIXME: This was not tested. Maybe some flags should better be CFLAGS,
123 # rather than ending up in the config.h file?
124 if host_machine.system() == 'darwin'
125   cdata.set('OS_IS_DARWIN', 1)
126   cdata.set('_DARWIN_C_SOURCE', '200112L') # Needed to get NSIG on Mac OS
127 elif host_machine.system() == 'windows'
128   cdata.set('OS_IS_WIN32', 1)
129   cdata.set('WIN32_LEAN_AND_MEAN', 1) # Needed to avoid including unnecessary headers on Windows
130 #elif host_machine.system() == 'solaris'
131 #  # Apparently meson has no solaris support?
132 #  # Needed to get declarations for msg_control and msg_controllen on Solaris
133 #  cdata.set('_XOPEN_SOURCE', 600)
134 #  cdata.set('__EXTENSIONS__', 1)
135 endif
136
137 # Headers
138
139 check_headers = [
140   'arpa/inet.h',
141   'cpuid.h',
142   'execinfo.h',
143   'grp.h',
144   'langinfo.h',
145   'locale.h',
146   'netdb.h',
147   'netinet/in.h',
148   'netinet/in_systm.h',
149   'netinet/ip.h',
150   'netinet/tcp.h',
151   'pcreposix.h',
152   'poll.h',
153   'pwd.h',
154   'regex.h',
155   'sched.h',
156   'sys/capability.h',
157   'sys/eventfd.h',
158   'sys/ioctl.h',
159   'sys/mman.h',
160   'sys/prctl.h',
161   'sys/resource.h',
162   'sys/select.h',
163   'sys/socket.h',
164   'sys/un.h',
165   'sys/wait.h',
166   'valgrind/memcheck.h',
167   'xlocale.h',
168 ]
169
170 foreach h : check_headers
171   if cc.has_header(h)
172     define = 'HAVE_' + h.underscorify().to_upper()
173     cdata.set(define, 1)
174   endif
175 endforeach
176
177 # FIXME: move this to the above set
178 if cc.has_header('pthread.h')
179   cdata.set('HAVE_PTHREAD', 1)
180 endif
181
182 # Functions
183
184 check_functions = [
185   'accept4',
186   'clock_gettime',
187   'fchmod',
188   'fchown',
189   'fork',
190   'fstat',
191   'getaddrinfo',
192   'getgrgid_r',
193   'getpwnam_r',
194   'gettimeofday',
195   'getuid',
196   'lstat',
197   'memfd_create',
198   'mkfifo',
199   'mlock',
200   'nanosleep',
201   'paccept',
202   'pipe',
203   'pipe2',
204   'posix_madvise',
205   'readlink',
206   'setegid',
207   'seteuid',
208   'setregid',
209   'setreuid',
210   'setresgid',
211   'setresuid',
212   'setsid',
213   'sig2str',
214   'sigaction',
215   'strtod_l',
216   'symlink',
217   'sysconf',
218   'uname',
219 ]
220
221 foreach f : check_functions
222   if cc.has_function(f)
223     define = 'HAVE_' + f.underscorify().to_upper()
224     cdata.set(define, 1)
225   endif
226 endforeach
227
228 if cc.has_function('SYS_memfd_create', prefix : '#include <sys/syscall.h>')
229   cdata.set('HAVE_MEMFD', 1)
230 endif
231
232 # Symbols
233
234 if cc.has_header_symbol('signal.h', 'SIGXCPU')
235   cdata.set('HAVE_SIGXCPU', 1)
236 endif
237
238 if not cc.has_header_symbol('netinet/in.h', 'INADDR_NONE')
239   if not cc.has_header_symbol('winsock2.h', 'INADDR_NONE')
240     # Define INADDR_NONE if not found (Solaris)
241     cdata.set('INADDR_NONE', '0xffffffff')
242   endif
243 endif
244
245 # Types
246
247 # FIXME: do we ever care about gid_t not being defined / smaller than an int?
248 cdata.set('GETGROUPS_T', 'gid_t')
249
250 # Include paths
251
252 configinc = include_directories('.')
253 topinc = include_directories('src')
254
255 # CFLAGS
256
257 pa_c_args = ['-DHAVE_CONFIG_H', '-D_GNU_SOURCE']
258 server_c_args = ['-D__INCLUDED_FROM_PULSE_AUDIO']
259 cdata.set('MESON_BUILD', 1)
260
261 # Core Dependencies
262
263 libm_dep = cc.find_library('m', required : true)
264 thread_dep = dependency('threads')
265 cap_dep = cc.find_library('cap', required : false)
266
267 shm_dep = cc.find_library('rt', required : false)
268 if shm_dep.found()
269   cdata.set('HAVE_SHM_OPEN', 1)
270 endif
271
272 atomictest = '''void func() {
273   volatile int atomic = 2;
274   __sync_bool_compare_and_swap (&atomic, 2, 3);
275 }
276 '''
277 if cc.compiles(atomictest)
278   cdata.set('HAVE_ATOMIC_BUILTINS', true)
279 else
280   # FIXME: check if we need libatomic_ops
281 endif
282
283 # FIXME: make sure it's >= 2.2
284 ltdl_dep = cc.find_library('ltdl', required : true)
285 # FIXME: can meson support libtool -dlopen/-dlpreopen things?
286 #        and do we still want to support this at all?
287 cdata.set('DISABLE_LIBTOOL_PRELOAD', 1)
288
289 if get_option('database') == 'tdb'
290   database_dep = dependency('tdb')
291 elif get_option('database') == 'gdbm'
292   database_dep = cc.find_library('gdbm', required : true)
293 else
294   database_dep = dependency('', required: false)
295 endif
296
297 if get_option('ipv6')
298   cdata.set('HAVE_IPV6', 1)
299 endif
300
301 if get_option('legacy-database-entry-format')
302   cdata.set('ENABLE_LEGACY_DATABASE_ENTRY_FORMAT', 1)
303 endif
304
305 alsa_dep = dependency('alsa', version : '>= 1.0.24', required : get_option('alsa'))
306 if alsa_dep.found()
307   cdata.set('HAVE_ALSA', 1)
308   cdata.set('HAVE_ALSA_UCM', 1)
309 endif
310
311 asyncns_dep = dependency('libasyncns', version : '>= 0.1', required : get_option('asyncns'))
312 if asyncns_dep.found()
313   cdata.set('HAVE_LIBASYNCNS', 1)
314 endif
315
316 dbus_dep = dependency('dbus-1', version : '>= 1.4.12', required : get_option('dbus'))
317 if dbus_dep.found()
318   cdata.set('HAVE_DBUS', 1)
319 endif
320
321 gio_dep = dependency('gio-2.0', version : '>= 2.26.0', required : get_option('gsettings'))
322 if gio_dep.found()
323   cdata.set('HAVE_GSETTINGS', 1)
324 endif
325
326 glib_dep = dependency('glib-2.0', version : '>= 2.4.0', required: get_option('glib'))
327 if glib_dep.found()
328   cdata.set('HAVE_GLIB', 1)
329 endif
330
331 gtk_dep = dependency('gtk+-3.0', required : get_option('gtk'))
332 if gtk_dep.found()
333   cdata.set('HAVE_GTK', 1)
334 endif
335
336 samplerate_dep = dependency('samplerate', version : '>= 0.1.0', required : get_option('samplerate'))
337 if samplerate_dep.found()
338   cdata.set('HAVE_LIBSAMPLERATE', 1)
339 endif
340
341 sndfile_dep = dependency('sndfile', version : '>= 1.0.20')
342
343 soxr_dep = dependency('soxr', version : '>= 0.1.1', required : get_option('soxr'))
344 if soxr_dep.found()
345   cdata.set('HAVE_SOXR', 1)
346 endif
347
348 systemd_dep = dependency('libsystemd', required : get_option('systemd'))
349 if systemd_dep.found()
350   cdata.set('HAVE_SYSTEMD_DAEMON', 1)
351   cdata.set('HAVE_SYSTEMD_LOGIN', 1)
352   cdata.set('HAVE_SYSTEMD_JOURNAL', 1)
353 endif
354
355 x11_dep = dependency('x11-xcb', required : get_option('x11'))
356 if x11_dep.found()
357   xcb_dep  = dependency('xcb',  required : true, version : '>= 1.6')
358   ice_dep  = dependency('ice',  required : true)
359   sm_dep   = dependency('sm',   required : true)
360   xtst_dep = dependency('xtst', required : true)
361   cdata.set('HAVE_X11', 1)
362 endif
363
364 # FIXME: support ORC
365 cdata.set('DISABLE_ORC', 1)
366
367 # Module dependencies
368
369 if cc.has_header('sys/soundcard.h')
370   cdata.set('HAVE_OSS_OUTPUT', 1)
371   cdata.set('HAVE_OSS_WRAPPER', 1)
372   cdata.set_quoted('PULSEDSP_LOCATION', pulsedspdir)
373 endif
374
375 if get_option('hal-compat')
376   cdata.set('HAVE_HAL_COMPAT', 1)
377 endif
378
379 avahi_dep = dependency('avahi-client', version : '>= 0.6.0', required : get_option('avahi'), disabler : true)
380 if avahi_dep.found()
381   cdata.set('HAVE_AVAHI', 1)
382 endif
383
384 bluez_dep = dependency('bluez', version : '>= 5.0', required : get_option('bluez5'))
385 sbc_dep = dependency('sbc', version : '>= 1.0', required : false)
386 if bluez_dep.found()
387   assert(dbus_dep.found(), 'BlueZ requires D-Bus support')
388   assert(sbc_dep.found(), 'BlueZ requires SBC support')
389   cdata.set('HAVE_SBC', 1)
390   cdata.set('HAVE_BLUEZ', 1)
391   cdata.set('HAVE_BLUEZ_5', 1)
392   if get_option('bluez5-native-headset')
393     cdata.set('HAVE_BLUEZ_5_NATIVE_HEADSET', 1)
394   endif
395   if get_option('bluez5-ofono-headset')
396     cdata.set('HAVE_BLUEZ_5_OFONO_HEADSET', 1)
397   endif
398 endif
399
400 fftw_dep = dependency('fftw3f', required : get_option('fftw'))
401 if fftw_dep.found()
402   cdata.set('HAVE_FFTW', 1)
403 endif
404
405 jack_dep = dependency('jack', version : '>= 0.117.0', required : get_option('jack'))
406 if jack_dep.found()
407   cdata.set('HAVE_JACK', 1)
408 endif
409
410 lirc_dep = dependency('lirc', required : get_option('lirc'))
411 if lirc_dep.found()
412   cdata.set('HAVE_LIRC', 1)
413 endif
414
415 openssl_dep = dependency('openssl', version : '>= 0.9', required : get_option('openssl'))
416 if openssl_dep.found()
417   cdata.set('HAVE_OPENSSL', 1)
418 endif
419
420 speex_dep = dependency('speexdsp', version : '>= 1.2', required : get_option('speex'))
421 if speex_dep.found()
422   cdata.set('HAVE_SPEEX', 1)
423 endif
424
425 udev_dep = dependency('libudev', version : '>= 143', required : get_option('udev'))
426 if udev_dep.found()
427   cdata.set('HAVE_UDEV', 1)
428 endif
429
430 webrtc_dep = dependency('webrtc-audio-processing', version : '>= 0.2', required : get_option('webrtc-aec'))
431 if webrtc_dep.found()
432   cdata.set('HAVE_WEBRTC', 1)
433 endif
434
435 # Test dependencies
436
437 check_dep = dependency('check', version : '>= 0.9.10', required : get_option('tests'))
438
439 # Now generate config.h from everything above
440 configure_file(output : 'config.h', configuration : cdata)
441
442 # pkg-config files
443
444 pc_cdata = configuration_data()
445
446 pc_cdata.set('prefix', prefix)
447 pc_cdata.set('exec_prefix', prefix)
448 pc_cdata.set('libdir', libdir)
449 pc_cdata.set('includedir', includedir)
450 pc_cdata.set('modlibexecdir', modlibexecdir)
451 pc_cdata.set('PACKAGE_VERSION', pa_version_str)
452 pc_cdata.set('PA_MAJORMINOR', pa_version_major_minor)
453 # FIXME: the line below is wrong. Currently the meson thread dep lacks documentation,
454 # and doesn't allow introspection, ie. none of get_pkgconfig_variable() or
455 # get_configtool_variable() work with it, so we have no way to get this flag right,
456 # unless we do all the work ourselves. See current work in glib, also meson #553.
457 pc_cdata.set('PTHREAD_LIBS', '-pthread')
458
459 pc_files = [
460   'libpulse.pc',
461   'libpulse-simple.pc',
462 ]
463
464 if glib_dep.found()
465   pc_files += 'libpulse-mainloop-glib.pc'
466 endif
467
468 foreach file : pc_files
469   configure_file(
470     input : file + '.in',
471     output : file,
472     configuration : pc_cdata,
473     install_dir : pkgconfigdir)
474 endforeach
475
476 # Subdirs
477
478 if get_option('man')
479   subdir('man')
480 endif
481 subdir('shell-completion/bash')
482 subdir('shell-completion/zsh')
483 subdir('src')
484 subdir('vala')
485
486 ############################################################
487
488 # Final summary
489
490 summary = [
491   '',
492   '---{ @0@ @1@ }---'.format(meson.project_name(), meson.project_version()),
493   '',
494   'prefix:                        @0@'.format(prefix),
495   'bindir:                        @0@'.format(bindir),
496   'libdir:                        @0@'.format(libdir),
497   'libexecdir:                    @0@'.format(libexecdir),
498   'mandir:                        @0@'.format(mandir),
499   'datadir:                       @0@'.format(datadir),
500   'sysconfdir:                    @0@'.format(sysconfdir),
501   'localstatedir:                 @0@'.format(localstatedir),
502   'modlibexecdir:                 @0@'.format(modlibexecdir),
503   'System Runtime Path:           @0@'.format(cdata.get_unquoted('PA_SYSTEM_RUNTIME_PATH')),
504   'System State Path:             @0@'.format(cdata.get_unquoted('PA_SYSTEM_STATE_PATH')),
505   'System Config Path:            @0@'.format(cdata.get_unquoted('PA_SYSTEM_CONFIG_PATH')),
506   'Bash completions directory:    @0@'.format(bashcompletiondir),
507   'Zsh completions directory:     @0@'.format(zshcompletiondir),
508   'Compiler:                      @0@ @1@'.format(cc.get_id(), cc.version()),
509 #  'CFLAGS:                        @0@'.format(${CFLAGS}),
510 #  'CPPFLAGS:                      @0@'.format(${CPPFLAGS}),
511 #  'LIBS:                          @0@'.format(${LIBS}),
512   '',
513   'Enable memfd shared memory:    @0@'.format(cdata.has('HAVE_MEMFD')),
514   'Enable X11:                    @0@'.format(x11_dep.found()),
515 #  'Enable OSS Output:             @0@'.format(${ENABLE_OSS_OUTPUT}),
516 #  'Enable OSS Wrapper:            @0@'.format(${ENABLE_OSS_WRAPPER}),
517 #  'Enable EsounD:                 @0@'.format(${ENABLE_ESOUND}),
518   'Enable Alsa:                   @0@'.format(alsa_dep.found()),
519 #  'Enable CoreAudio:              @0@'.format(${ENABLE_COREAUDIO}),
520 #  'Enable Solaris:                @0@'.format(${ENABLE_SOLARIS}),
521 #  'Enable WaveOut:                @0@'.format(${ENABLE_WAVEOUT}),
522   'Enable GLib 2:                 @0@'.format(glib_dep.found()),
523 #  'Enable GConf:                  @0@'.format(${ENABLE_GCONF}),
524   'Enable GSettings:              @0@'.format(gio_dep.found()),
525   'Enable Gtk+ 3:                 @0@'.format(gtk_dep.found()),
526   'Enable Avahi:                  @0@'.format(avahi_dep.found()),
527   'Enable Jack:                   @0@'.format(jack_dep.found()),
528   'Enable Async DNS:              @0@'.format(asyncns_dep.found()),
529   'Enable LIRC:                   @0@'.format(lirc_dep.found()),
530   'Enable D-Bus:                  @0@'.format(dbus_dep.found()),
531   '  Enable BlueZ 5:              @0@'.format(bluez_dep.found()),
532   '    Enable native headsets:    @0@'.format(get_option('bluez5-native-headset')),
533   '    Enable  ofono headsets:    @0@'.format(get_option('bluez5-ofono-headset')),
534   'Enable udev:                   @0@'.format(udev_dep.found()),
535   '  Enable HAL->udev compat:     @0@'.format(get_option('hal-compat')),
536   'Enable systemd:                @0@'.format(systemd_dep.found()),
537 #  'Enable TCP Wrappers:           @0@'.format(${ENABLE_TCPWRAP}),
538   'Enable libsamplerate:          @0@'.format(samplerate_dep.found()),
539   'Enable IPv6:                   @0@'.format(get_option('ipv6')),
540   'Enable OpenSSL (for Airtunes): @0@'.format(openssl_dep.found()),
541   'Enable FFTW:                   @0@'.format(fftw_dep.found()),
542 #  'Enable orc:                    @0@'.format(${ENABLE_ORC}),
543   'Enable Adrian echo canceller:  @0@'.format(get_option('adrian-aec')),
544   'Enable Speex (resampler, AEC): @0@'.format(speex_dep.found()),
545   'Enable SoXR (resampler):       @0@'.format(soxr_dep.found()),
546   'Enable WebRTC echo canceller:  @0@'.format(webrtc_dep.found()),
547 #  'Enable gcov coverage:          @0@'.format(${ENABLE_GCOV}),
548   'Enable man pages:              @0@'.format(get_option('man')),
549   'Enable unit tests:             @0@'.format(get_option('tests')),
550   '',
551   'Database:                      @0@'.format(get_option('database')),
552   'Legacy Database Entry Support: @0@'.format(get_option('legacy-database-entry-format')),
553   'System User:                   @0@'.format(cdata.get_unquoted('PA_SYSTEM_USER')),
554   'System Group:                  @0@'.format(cdata.get_unquoted('PA_SYSTEM_GROUP')),
555   'Access Group:                  @0@'.format(cdata.get_unquoted('PA_ACCESS_GROUP')),
556 #  'Enable per-user EsounD socket: @0@'.format(${ENABLE_PER_USER_ESOUND_SOCKET}),
557 #  'Force preopen:                 @0@'.format(${FORCE_PREOPEN}),
558 #  'Preopened modules:             @0@'.format(${PREOPEN_MODS}),
559 ]
560
561 message('\n    '.join(summary))
562
563 # Sanity checks
564
565 if not speex_dep.found() and not webrtc_dep.found() and not get_option('adrian-aec')
566   error('At least one echo canceller implementation must be available!')
567 endif
568
569 if samplerate_dep.found()
570   warning('Support for libsamplerate is DEPRECATED')
571 endif
572
573 if host_machine.system() != 'windows'
574   if not dbus_dep.found()
575     message = [
576       'You do not have D-Bus support enabled. It is strongly recommended',
577       'that you enable D-Bus support if your platform supports it.',
578       'Many parts of PulseAudio use D-Bus, from ConsoleKit interaction',
579       'to the Device Reservation Protocol to speak to JACK, Bluetooth',
580       'support and even a native control protocol for communicating and',
581       'controlling the PulseAudio daemon itself.',
582     ]
583     warning('\n' + '\n'.join(message))
584   endif
585   if not udev_dep.found()
586     message = [
587       'You do not have udev support enabled. It is strongly recommended',
588       'that you enable udev support if your platform supports it as it is',
589       'the primary method used to detect hardware audio devices (on Linux)',
590       'and is thus a critical part of PulseAudio on that platform.',
591     ]
592     warning('\n' + '\n'.join(message))
593   endif
594   if not speex_dep.found()
595     message = [
596       'You do not have speex support enabled. It is strongly recommended',
597       'that you enable speex support if your platform supports it as it is',
598       'the primary method used for audio resampling and is thus a critical',
599       'part of PulseAudio on that platform.',
600     ]
601     warning('\n' + '\n'.join(message))
602   endif
603 endif