153a5a1b3Sopenharmony_ciproject('pulseaudio', 'c', 'cpp', 253a5a1b3Sopenharmony_ci version : run_command(find_program('git-version-gen'), join_paths(meson.current_source_dir(), '.tarball-version')).stdout().strip(), 353a5a1b3Sopenharmony_ci meson_version : '>= 0.50.0', 453a5a1b3Sopenharmony_ci default_options : [ 'c_std=gnu11', 'cpp_std=c++11' ] 553a5a1b3Sopenharmony_ci ) 653a5a1b3Sopenharmony_ci 753a5a1b3Sopenharmony_cimeson.add_dist_script('scripts/save-tarball-version.sh', meson.project_version()) 853a5a1b3Sopenharmony_ci 953a5a1b3Sopenharmony_cipa_version_str = meson.project_version() 1053a5a1b3Sopenharmony_ci# For tarballs, the first split will do nothing, but for builds in git, we 1153a5a1b3Sopenharmony_ci# split out suffixes when there are commits since the last tag 1253a5a1b3Sopenharmony_ci# (e.g.: v11.99.1-3-gad14bdb24 -> v11.99.1) 1353a5a1b3Sopenharmony_civersion_split = pa_version_str.split('-')[0].split('.') 1453a5a1b3Sopenharmony_cipa_version_major = version_split[0].split('v')[0] 1553a5a1b3Sopenharmony_cipa_version_minor = version_split[1] 1653a5a1b3Sopenharmony_ciif version_split.length() > 2 1753a5a1b3Sopenharmony_ci pa_version_micro = version_split[2] 1853a5a1b3Sopenharmony_cielse 1953a5a1b3Sopenharmony_ci pa_version_micro = '0' 2053a5a1b3Sopenharmony_ciendif 2153a5a1b3Sopenharmony_cipa_version_major_minor = pa_version_major + '.' + pa_version_minor 2253a5a1b3Sopenharmony_ci 2353a5a1b3Sopenharmony_cipa_api_version = 12 2453a5a1b3Sopenharmony_cipa_protocol_version = 35 2553a5a1b3Sopenharmony_ci 2653a5a1b3Sopenharmony_ci# The stable ABI for client applications, for the version info x:y:z 2753a5a1b3Sopenharmony_ci# always will hold x=z 2853a5a1b3Sopenharmony_cilibpulse_version_info = [24, 2, 24] 2953a5a1b3Sopenharmony_ci 3053a5a1b3Sopenharmony_ci# A simplified, synchronous, ABI-stable interface for client 3153a5a1b3Sopenharmony_ci# applications, for the version info x:y:z always will hold x=z 3253a5a1b3Sopenharmony_cilibpulse_simple_version_info = [1, 1, 1] 3353a5a1b3Sopenharmony_ci 3453a5a1b3Sopenharmony_ci# The ABI-stable GLib adapter for client applications, for the version 3553a5a1b3Sopenharmony_ci# info x:y:z always will hold x=z 3653a5a1b3Sopenharmony_cilibpulse_mainloop_glib_version_info = [0, 6, 0] 3753a5a1b3Sopenharmony_ci 3853a5a1b3Sopenharmony_cilibpulse_version = '@0@.@1@.@2@'.format( 3953a5a1b3Sopenharmony_ci libpulse_version_info[0] - libpulse_version_info[2], 4053a5a1b3Sopenharmony_ci libpulse_version_info[0], 4153a5a1b3Sopenharmony_ci libpulse_version_info[1], 4253a5a1b3Sopenharmony_ci) 4353a5a1b3Sopenharmony_ci 4453a5a1b3Sopenharmony_cilibpulse_simple_version = '@0@.@1@.@2@'.format( 4553a5a1b3Sopenharmony_ci libpulse_simple_version_info[0] - libpulse_simple_version_info[2], 4653a5a1b3Sopenharmony_ci libpulse_simple_version_info[0], 4753a5a1b3Sopenharmony_ci libpulse_simple_version_info[1], 4853a5a1b3Sopenharmony_ci) 4953a5a1b3Sopenharmony_ci 5053a5a1b3Sopenharmony_cilibpulse_mainloop_glib_version = '@0@.@1@.@2@'.format( 5153a5a1b3Sopenharmony_ci libpulse_mainloop_glib_version_info[0] - libpulse_mainloop_glib_version_info[2], 5253a5a1b3Sopenharmony_ci libpulse_mainloop_glib_version_info[0], 5353a5a1b3Sopenharmony_ci libpulse_mainloop_glib_version_info[1], 5453a5a1b3Sopenharmony_ci) 5553a5a1b3Sopenharmony_ci 5653a5a1b3Sopenharmony_cii18n = import('i18n') 5753a5a1b3Sopenharmony_ci 5853a5a1b3Sopenharmony_ci# Paths 5953a5a1b3Sopenharmony_ci 6053a5a1b3Sopenharmony_ciprefix = get_option('prefix') 6153a5a1b3Sopenharmony_ciassert(prefix.startswith('/'), 'Prefix is not absolute: "@0@"'.format(prefix)) 6253a5a1b3Sopenharmony_ci 6353a5a1b3Sopenharmony_cibindir = join_paths(prefix, get_option('bindir')) 6453a5a1b3Sopenharmony_ciincludedir = join_paths(prefix, get_option('includedir')) 6553a5a1b3Sopenharmony_cilibdir = join_paths(prefix, get_option('libdir')) 6653a5a1b3Sopenharmony_cilibexecdir = join_paths(prefix, get_option('libexecdir')) 6753a5a1b3Sopenharmony_cimandir = join_paths(prefix, get_option('mandir')) 6853a5a1b3Sopenharmony_cidatadir = join_paths(prefix, get_option('datadir')) 6953a5a1b3Sopenharmony_cilocaledir = join_paths(prefix, get_option('localedir')) 7053a5a1b3Sopenharmony_cilocalstatedir = join_paths(prefix, get_option('localstatedir')) 7153a5a1b3Sopenharmony_cisysconfdir = join_paths(prefix, get_option('sysconfdir')) 7253a5a1b3Sopenharmony_ciprivlibdir = join_paths(libdir, 'pulseaudio') 7353a5a1b3Sopenharmony_cipo_dir = join_paths(meson.current_source_dir(), 'po') 7453a5a1b3Sopenharmony_ci 7553a5a1b3Sopenharmony_ciif host_machine.system() == 'windows' 7653a5a1b3Sopenharmony_ci # Windows only supports loading libraries from the same dir as the executable 7753a5a1b3Sopenharmony_ci privlibdir = bindir 7853a5a1b3Sopenharmony_ciendif 7953a5a1b3Sopenharmony_ci 8053a5a1b3Sopenharmony_cialsadatadir = get_option('alsadatadir') 8153a5a1b3Sopenharmony_ciif alsadatadir == '' 8253a5a1b3Sopenharmony_ci alsadatadir = join_paths(datadir, 'pulseaudio', 'alsa-mixer') 8353a5a1b3Sopenharmony_ciendif 8453a5a1b3Sopenharmony_ci 8553a5a1b3Sopenharmony_cipkgconfigdir = join_paths(libdir, 'pkgconfig') 8653a5a1b3Sopenharmony_cipulselibexecdir = join_paths(libexecdir, 'pulse') 8753a5a1b3Sopenharmony_cipulsesysconfdir = join_paths(sysconfdir, 'pulse') 8853a5a1b3Sopenharmony_ci 8953a5a1b3Sopenharmony_cimodlibexecdir = get_option('modlibexecdir') 9053a5a1b3Sopenharmony_ciif modlibexecdir == '' 9153a5a1b3Sopenharmony_ci modlibexecdir = join_paths(libdir, 'pulseaudio', 'modules') 9253a5a1b3Sopenharmony_ciendif 9353a5a1b3Sopenharmony_ci 9453a5a1b3Sopenharmony_ciif host_machine.system() == 'windows' 9553a5a1b3Sopenharmony_ci # Windows only supports loading libraries from the same dir as the executable 9653a5a1b3Sopenharmony_ci modlibexecdir = bindir 9753a5a1b3Sopenharmony_ciendif 9853a5a1b3Sopenharmony_ci 9953a5a1b3Sopenharmony_cipadsplibdir = get_option('padsplibdir') 10053a5a1b3Sopenharmony_ciif padsplibdir == '' 10153a5a1b3Sopenharmony_ci padsplibdir = privlibdir 10253a5a1b3Sopenharmony_ciendif 10353a5a1b3Sopenharmony_ci 10453a5a1b3Sopenharmony_cipulsedsp_location = get_option('pulsedsp-location') 10553a5a1b3Sopenharmony_ciif pulsedsp_location == '' 10653a5a1b3Sopenharmony_ci pulsedsp_location = join_paths(prefix, padsplibdir) 10753a5a1b3Sopenharmony_ciendif 10853a5a1b3Sopenharmony_ci 10953a5a1b3Sopenharmony_cisystemduserunitdir = get_option('systemduserunitdir') 11053a5a1b3Sopenharmony_ci# the default value is set below 11153a5a1b3Sopenharmony_ci 11253a5a1b3Sopenharmony_ciudevrulesdir = get_option('udevrulesdir') 11353a5a1b3Sopenharmony_ciif udevrulesdir == '' 11453a5a1b3Sopenharmony_ci # absolute path, otherwise meson prepends the prefix 11553a5a1b3Sopenharmony_ci udevrulesdir = '/lib/udev/rules.d' 11653a5a1b3Sopenharmony_ciendif 11753a5a1b3Sopenharmony_ci 11853a5a1b3Sopenharmony_civapidir = join_paths(datadir, 'vala', 'vapi') 11953a5a1b3Sopenharmony_ci 12053a5a1b3Sopenharmony_cibashcompletiondir = get_option('bashcompletiondir') 12153a5a1b3Sopenharmony_ciif bashcompletiondir == '' 12253a5a1b3Sopenharmony_ci bash_completion_dep = dependency('bash-completion', required : false) 12353a5a1b3Sopenharmony_ci if bash_completion_dep.found() 12453a5a1b3Sopenharmony_ci bashcompletiondir = bash_completion_dep.get_pkgconfig_variable('completionsdir') 12553a5a1b3Sopenharmony_ci else 12653a5a1b3Sopenharmony_ci bashcompletiondir = join_paths(datadir, 'bash-completion', 'completions') 12753a5a1b3Sopenharmony_ci endif 12853a5a1b3Sopenharmony_ciendif 12953a5a1b3Sopenharmony_ci 13053a5a1b3Sopenharmony_cizshcompletiondir = get_option('zshcompletiondir') 13153a5a1b3Sopenharmony_ciif zshcompletiondir == '' 13253a5a1b3Sopenharmony_ci zshcompletiondir = join_paths(datadir, 'zsh', 'site-functions') 13353a5a1b3Sopenharmony_ciendif 13453a5a1b3Sopenharmony_ci 13553a5a1b3Sopenharmony_ci# Configuration data 13653a5a1b3Sopenharmony_ci 13753a5a1b3Sopenharmony_cicc = meson.get_compiler('c') 13853a5a1b3Sopenharmony_ci 13953a5a1b3Sopenharmony_cicdata = configuration_data() 14053a5a1b3Sopenharmony_cicdata.set_quoted('PACKAGE', 'pulseaudio') 14153a5a1b3Sopenharmony_cicdata.set_quoted('PACKAGE_NAME', 'pulseaudio') 14253a5a1b3Sopenharmony_cicdata.set_quoted('PACKAGE_VERSION', pa_version_str) 14353a5a1b3Sopenharmony_cicdata.set('PA_MAJOR', pa_version_major) 14453a5a1b3Sopenharmony_cicdata.set('PA_MINOR', pa_version_minor) 14553a5a1b3Sopenharmony_cicdata.set('PA_API_VERSION', pa_api_version) 14653a5a1b3Sopenharmony_cicdata.set('PA_PROTOCOL_VERSION', pa_protocol_version) 14753a5a1b3Sopenharmony_cicdata.set_quoted('PA_MACHINE_ID', join_paths(sysconfdir, 'machine-id')) 14853a5a1b3Sopenharmony_cicdata.set_quoted('PA_MACHINE_ID_FALLBACK', join_paths(localstatedir, 'lib', 'dbus', 'machine-id')) 14953a5a1b3Sopenharmony_cicdata.set_quoted('PA_SRCDIR', join_paths(meson.current_source_dir(), 'src')) 15053a5a1b3Sopenharmony_cicdata.set_quoted('PA_BUILDDIR', meson.current_build_dir()) 15153a5a1b3Sopenharmony_cicdata.set_quoted('PA_SOEXT', '.so') 15253a5a1b3Sopenharmony_cicdata.set_quoted('PA_DEFAULT_CONFIG_DIR', pulsesysconfdir) 15353a5a1b3Sopenharmony_cicdata.set('PA_DEFAULT_CONFIG_DIR_UNQUOTED', pulsesysconfdir) 15453a5a1b3Sopenharmony_cicdata.set_quoted('PA_BINARY', join_paths(bindir, 'pulseaudio')) 15553a5a1b3Sopenharmony_cicdata.set_quoted('PA_SYSTEM_RUNTIME_PATH', join_paths(localstatedir, 'run', 'pulse')) 15653a5a1b3Sopenharmony_cicdata.set_quoted('PA_SYSTEM_CONFIG_PATH', join_paths(localstatedir, 'lib', 'pulse')) 15753a5a1b3Sopenharmony_cicdata.set_quoted('PA_SYSTEM_STATE_PATH', join_paths(localstatedir, 'lib', 'pulse')) 15853a5a1b3Sopenharmony_cicdata.set_quoted('PA_DLSEARCHPATH', modlibexecdir) 15953a5a1b3Sopenharmony_cicdata.set_quoted('PA_SYSTEM_USER', get_option('system_user')) 16053a5a1b3Sopenharmony_cicdata.set_quoted('PA_SYSTEM_GROUP', get_option('system_group')) 16153a5a1b3Sopenharmony_cicdata.set_quoted('PA_ACCESS_GROUP', get_option('access_group')) 16253a5a1b3Sopenharmony_cicdata.set_quoted('PA_CFLAGS', 'Not yet supported on meson') 16353a5a1b3Sopenharmony_cicdata.set_quoted('PA_ALSA_PATHS_DIR', join_paths(alsadatadir, 'paths')) 16453a5a1b3Sopenharmony_cicdata.set_quoted('PA_ALSA_PROFILE_SETS_DIR', join_paths(alsadatadir, 'profile-sets')) 16553a5a1b3Sopenharmony_cicdata.set_quoted('DESKTOPFILEDIR', join_paths(datadir, 'applications')) 16653a5a1b3Sopenharmony_cicdata.set_quoted('PULSE_LOCALEDIR', localedir) 16753a5a1b3Sopenharmony_cicdata.set_quoted('GETTEXT_PACKAGE', 'pulseaudio') 16853a5a1b3Sopenharmony_cicdata.set('ENABLE_NLS', 1) 16953a5a1b3Sopenharmony_cicdata.set('top_srcdir', meson.source_root()) 17053a5a1b3Sopenharmony_ci 17153a5a1b3Sopenharmony_ci# Platform specifics 17253a5a1b3Sopenharmony_ci# First some defaults to keep config file generation happy 17353a5a1b3Sopenharmony_cicdata.set('HAVE_COREAUDIO', 0) 17453a5a1b3Sopenharmony_cicdata.set('HAVE_WAVEOUT', 0) 17553a5a1b3Sopenharmony_cicdata.set('OS_IS_FREEBSD', 0) 17653a5a1b3Sopenharmony_ci 17753a5a1b3Sopenharmony_ciplatform_socket_dep = [] 17853a5a1b3Sopenharmony_ciplatform_dep = [] 17953a5a1b3Sopenharmony_ci 18053a5a1b3Sopenharmony_ciif host_machine.endian() == 'big' 18153a5a1b3Sopenharmony_ci cdata.set('WORDS_BIGENDIAN', 1) 18253a5a1b3Sopenharmony_ciendif 18353a5a1b3Sopenharmony_ci 18453a5a1b3Sopenharmony_ci# FIXME: This was not tested. Maybe some flags should better be CFLAGS, 18553a5a1b3Sopenharmony_ci# rather than ending up in the config.h file? 18653a5a1b3Sopenharmony_ciif host_machine.system() == 'darwin' 18753a5a1b3Sopenharmony_ci cdata.set('OS_IS_DARWIN', 1) 18853a5a1b3Sopenharmony_ci cdata.set('_DARWIN_C_SOURCE', '200112L') # Needed to get NSIG on Mac OS 18953a5a1b3Sopenharmony_cielif host_machine.system() == 'windows' 19053a5a1b3Sopenharmony_ci cdata.set('OS_IS_WIN32', 1) 19153a5a1b3Sopenharmony_ci cdata.set('HAVE_WINDOWS_H', 1) 19253a5a1b3Sopenharmony_ci cdata.set('HAVE_WAVEOUT', 1) 19353a5a1b3Sopenharmony_ci cdata.set('HAVE_WINSOCK2_H', 1) 19453a5a1b3Sopenharmony_ci cdata.set('HAVE_WS2TCPIP_H', 1) 19553a5a1b3Sopenharmony_ci cdata.set('WIN32_LEAN_AND_MEAN', 1) # Needed to avoid including unnecessary headers on Windows 19653a5a1b3Sopenharmony_ci cdata.set('gid_t', 'int') 19753a5a1b3Sopenharmony_ci cdata.set('uid_t', 'int') 19853a5a1b3Sopenharmony_ci ws2_32_dep = meson.get_compiler('c').find_library('ws2_32') 19953a5a1b3Sopenharmony_ci winsock_dep = meson.get_compiler('c').find_library('wsock32') 20053a5a1b3Sopenharmony_ci ole32_dep = meson.get_compiler('c').find_library('ole32') 20153a5a1b3Sopenharmony_ci ssp_dep = meson.get_compiler('c').find_library('ssp') 20253a5a1b3Sopenharmony_ci pcreposix_dep = meson.get_compiler('c').find_library('pcreposix') 20353a5a1b3Sopenharmony_ci platform_socket_dep = [ws2_32_dep, winsock_dep] 20453a5a1b3Sopenharmony_ci platform_dep = [ole32_dep, ssp_dep, pcreposix_dep] 20553a5a1b3Sopenharmony_cielif host_machine.system() == 'freebsd' 20653a5a1b3Sopenharmony_ci cdata.set('OS_IS_FREEBSD', 1) 20753a5a1b3Sopenharmony_ci#elif host_machine.system() == 'solaris' 20853a5a1b3Sopenharmony_ci# # Apparently meson has no solaris support? 20953a5a1b3Sopenharmony_ci# # Needed to get declarations for msg_control and msg_controllen on Solaris 21053a5a1b3Sopenharmony_ci# cdata.set('_XOPEN_SOURCE', 600) 21153a5a1b3Sopenharmony_ci# cdata.set('__EXTENSIONS__', 1) 21253a5a1b3Sopenharmony_ciendif 21353a5a1b3Sopenharmony_ci 21453a5a1b3Sopenharmony_ciif cc.has_type('_Bool') 21553a5a1b3Sopenharmony_ci cdata.set('HAVE_STD_BOOL', 1) 21653a5a1b3Sopenharmony_ciendif 21753a5a1b3Sopenharmony_ci 21853a5a1b3Sopenharmony_ciif host_machine.cpu_family() == 'x86_64' or cc.sizeof('void *') >= 8 21953a5a1b3Sopenharmony_ci cdata.set('HAVE_FAST_64BIT_OPERATIONS', 1) 22053a5a1b3Sopenharmony_ciendif 22153a5a1b3Sopenharmony_ci 22253a5a1b3Sopenharmony_ci# Headers 22353a5a1b3Sopenharmony_ci 22453a5a1b3Sopenharmony_cicheck_headers = [ 22553a5a1b3Sopenharmony_ci 'arpa/inet.h', 22653a5a1b3Sopenharmony_ci 'byteswap.h', 22753a5a1b3Sopenharmony_ci 'dlfcn.h', 22853a5a1b3Sopenharmony_ci 'execinfo.h', 22953a5a1b3Sopenharmony_ci 'grp.h', 23053a5a1b3Sopenharmony_ci 'langinfo.h', 23153a5a1b3Sopenharmony_ci 'linux/sockios.h', 23253a5a1b3Sopenharmony_ci 'locale.h', 23353a5a1b3Sopenharmony_ci 'netdb.h', 23453a5a1b3Sopenharmony_ci 'netinet/in.h', 23553a5a1b3Sopenharmony_ci 'netinet/in_systm.h', 23653a5a1b3Sopenharmony_ci 'netinet/ip.h', 23753a5a1b3Sopenharmony_ci 'netinet/tcp.h', 23853a5a1b3Sopenharmony_ci 'pcreposix.h', 23953a5a1b3Sopenharmony_ci 'poll.h', 24053a5a1b3Sopenharmony_ci 'pwd.h', 24153a5a1b3Sopenharmony_ci 'regex.h', 24253a5a1b3Sopenharmony_ci 'sched.h', 24353a5a1b3Sopenharmony_ci 'stdint.h', 24453a5a1b3Sopenharmony_ci 'sys/atomic.h', 24553a5a1b3Sopenharmony_ci 'sys/capability.h', 24653a5a1b3Sopenharmony_ci 'sys/conf.h', 24753a5a1b3Sopenharmony_ci 'sys/dl.h', 24853a5a1b3Sopenharmony_ci 'sys/eventfd.h', 24953a5a1b3Sopenharmony_ci 'sys/filio.h', 25053a5a1b3Sopenharmony_ci 'sys/ioctl.h', 25153a5a1b3Sopenharmony_ci 'sys/mman.h', 25253a5a1b3Sopenharmony_ci 'sys/prctl.h', 25353a5a1b3Sopenharmony_ci 'sys/resource.h', 25453a5a1b3Sopenharmony_ci 'sys/select.h', 25553a5a1b3Sopenharmony_ci 'sys/socket.h', 25653a5a1b3Sopenharmony_ci 'sys/syscall.h', 25753a5a1b3Sopenharmony_ci 'sys/uio.h', 25853a5a1b3Sopenharmony_ci 'sys/un.h', 25953a5a1b3Sopenharmony_ci 'sys/wait.h', 26053a5a1b3Sopenharmony_ci 'syslog.h', 26153a5a1b3Sopenharmony_ci 'xlocale.h', 26253a5a1b3Sopenharmony_ci] 26353a5a1b3Sopenharmony_ci 26453a5a1b3Sopenharmony_ciforeach h : check_headers 26553a5a1b3Sopenharmony_ci if cc.has_header(h) 26653a5a1b3Sopenharmony_ci define = 'HAVE_' + h.underscorify().to_upper() 26753a5a1b3Sopenharmony_ci cdata.set(define, 1) 26853a5a1b3Sopenharmony_ci endif 26953a5a1b3Sopenharmony_ciendforeach 27053a5a1b3Sopenharmony_ci 27153a5a1b3Sopenharmony_ciif cc.has_header('valgrind/memcheck.h', required: get_option('valgrind')) 27253a5a1b3Sopenharmony_ci cdata.set('HAVE_VALGRIND_MEMCHECK_H', 1) 27353a5a1b3Sopenharmony_ciendif 27453a5a1b3Sopenharmony_ci 27553a5a1b3Sopenharmony_ci# FIXME: move this to the above set 27653a5a1b3Sopenharmony_ciif host_machine.system() != 'windows' 27753a5a1b3Sopenharmony_ci if cc.has_header('pthread.h') 27853a5a1b3Sopenharmony_ci cdata.set('HAVE_PTHREAD', 1) 27953a5a1b3Sopenharmony_ci endif 28053a5a1b3Sopenharmony_ciendif 28153a5a1b3Sopenharmony_ci 28253a5a1b3Sopenharmony_ciif cc.has_header_symbol('pthread.h', 'PTHREAD_PRIO_INHERIT') 28353a5a1b3Sopenharmony_ci cdata.set('HAVE_PTHREAD_PRIO_INHERIT', 1) 28453a5a1b3Sopenharmony_ciendif 28553a5a1b3Sopenharmony_ci 28653a5a1b3Sopenharmony_ci# Headers which are usable 28753a5a1b3Sopenharmony_ci 28853a5a1b3Sopenharmony_cicheck_usable_headers = [ 28953a5a1b3Sopenharmony_ci 'cpuid.h', 29053a5a1b3Sopenharmony_ci] 29153a5a1b3Sopenharmony_ci 29253a5a1b3Sopenharmony_ciforeach h : check_usable_headers 29353a5a1b3Sopenharmony_ci if cc.check_header(h) 29453a5a1b3Sopenharmony_ci define = 'HAVE_' + h.underscorify().to_upper() 29553a5a1b3Sopenharmony_ci cdata.set(define, 1) 29653a5a1b3Sopenharmony_ci endif 29753a5a1b3Sopenharmony_ciendforeach 29853a5a1b3Sopenharmony_ci 29953a5a1b3Sopenharmony_ci# Functions 30053a5a1b3Sopenharmony_ci 30153a5a1b3Sopenharmony_cicheck_functions = [ 30253a5a1b3Sopenharmony_ci 'accept4', 30353a5a1b3Sopenharmony_ci 'clock_gettime', 30453a5a1b3Sopenharmony_ci 'ctime_r', 30553a5a1b3Sopenharmony_ci 'fchmod', 30653a5a1b3Sopenharmony_ci 'fchown', 30753a5a1b3Sopenharmony_ci 'fork', 30853a5a1b3Sopenharmony_ci 'fstat', 30953a5a1b3Sopenharmony_ci 'getaddrinfo', 31053a5a1b3Sopenharmony_ci 'getgrgid_r', 31153a5a1b3Sopenharmony_ci 'getgrnam_r', 31253a5a1b3Sopenharmony_ci 'getpwnam_r', 31353a5a1b3Sopenharmony_ci 'getpwuid_r', 31453a5a1b3Sopenharmony_ci 'gettimeofday', 31553a5a1b3Sopenharmony_ci 'getuid', 31653a5a1b3Sopenharmony_ci 'lrintf', 31753a5a1b3Sopenharmony_ci 'lstat', 31853a5a1b3Sopenharmony_ci 'memfd_create', 31953a5a1b3Sopenharmony_ci 'mkfifo', 32053a5a1b3Sopenharmony_ci 'mlock', 32153a5a1b3Sopenharmony_ci 'nanosleep', 32253a5a1b3Sopenharmony_ci 'open64', 32353a5a1b3Sopenharmony_ci 'paccept', 32453a5a1b3Sopenharmony_ci 'pipe', 32553a5a1b3Sopenharmony_ci 'pipe2', 32653a5a1b3Sopenharmony_ci 'posix_fadvise', 32753a5a1b3Sopenharmony_ci 'posix_madvise', 32853a5a1b3Sopenharmony_ci 'posix_memalign', 32953a5a1b3Sopenharmony_ci 'ppoll', 33053a5a1b3Sopenharmony_ci 'readlink', 33153a5a1b3Sopenharmony_ci 'setegid', 33253a5a1b3Sopenharmony_ci 'seteuid', 33353a5a1b3Sopenharmony_ci 'setpgid', 33453a5a1b3Sopenharmony_ci 'setregid', 33553a5a1b3Sopenharmony_ci 'setresgid', 33653a5a1b3Sopenharmony_ci 'setresuid', 33753a5a1b3Sopenharmony_ci 'setreuid', 33853a5a1b3Sopenharmony_ci 'setsid', 33953a5a1b3Sopenharmony_ci 'sig2str', 34053a5a1b3Sopenharmony_ci 'sigaction', 34153a5a1b3Sopenharmony_ci 'strerror_r', 34253a5a1b3Sopenharmony_ci 'strtod_l', 34353a5a1b3Sopenharmony_ci 'strtof', 34453a5a1b3Sopenharmony_ci 'symlink', 34553a5a1b3Sopenharmony_ci 'sysconf', 34653a5a1b3Sopenharmony_ci 'uname', 34753a5a1b3Sopenharmony_ci] 34853a5a1b3Sopenharmony_ci 34953a5a1b3Sopenharmony_ciforeach f : check_functions 35053a5a1b3Sopenharmony_ci if cc.has_function(f) 35153a5a1b3Sopenharmony_ci define = 'HAVE_' + f.underscorify().to_upper() 35253a5a1b3Sopenharmony_ci 35353a5a1b3Sopenharmony_ci if f == 'posix_memalign' and host_machine.system() == 'windows' 35453a5a1b3Sopenharmony_ci message('Win32/mingw32 does not properly define posix_memalign.') 35553a5a1b3Sopenharmony_ci elif f == 'fork' and host_machine.system() == 'windows' 35653a5a1b3Sopenharmony_ci # __builtin_fork is defined and compiles properly, but calling __builtin_fork() does not. 35753a5a1b3Sopenharmony_ci # This causes Meson to think that Windows has a fork() which causes a link error... 35853a5a1b3Sopenharmony_ci message('Win32/mingw32 does not properly define fork.') 35953a5a1b3Sopenharmony_ci else 36053a5a1b3Sopenharmony_ci cdata.set(define, 1) 36153a5a1b3Sopenharmony_ci endif 36253a5a1b3Sopenharmony_ci endif 36353a5a1b3Sopenharmony_ciendforeach 36453a5a1b3Sopenharmony_ci 36553a5a1b3Sopenharmony_ciif cc.has_header_symbol('sys/syscall.h', 'SYS_memfd_create') \ 36653a5a1b3Sopenharmony_ci or cc.has_function('memfd_create') 36753a5a1b3Sopenharmony_ci cdata.set('HAVE_MEMFD', 1) 36853a5a1b3Sopenharmony_ciendif 36953a5a1b3Sopenharmony_ci 37053a5a1b3Sopenharmony_ciif cc.has_function('dgettext') 37153a5a1b3Sopenharmony_ci if host_machine.system() != 'windows' 37253a5a1b3Sopenharmony_ci libintl_dep = [] 37353a5a1b3Sopenharmony_ci else 37453a5a1b3Sopenharmony_ci libintl_dep = cc.find_library('intl') 37553a5a1b3Sopenharmony_ci endif 37653a5a1b3Sopenharmony_cielse 37753a5a1b3Sopenharmony_ci libintl_dep = cc.find_library('intl') 37853a5a1b3Sopenharmony_ciendif 37953a5a1b3Sopenharmony_ci 38053a5a1b3Sopenharmony_ci# Symbols 38153a5a1b3Sopenharmony_ci 38253a5a1b3Sopenharmony_ciif cc.has_header_symbol('signal.h', 'SIGXCPU') 38353a5a1b3Sopenharmony_ci cdata.set('HAVE_SIGXCPU', 1) 38453a5a1b3Sopenharmony_ciendif 38553a5a1b3Sopenharmony_ci 38653a5a1b3Sopenharmony_ciif not cc.has_header_symbol('netinet/in.h', 'INADDR_NONE') 38753a5a1b3Sopenharmony_ci if not cc.has_header_symbol('winsock2.h', 'INADDR_NONE') 38853a5a1b3Sopenharmony_ci # Define INADDR_NONE if not found (Solaris) 38953a5a1b3Sopenharmony_ci cdata.set('INADDR_NONE', '0xffffffff') 39053a5a1b3Sopenharmony_ci endif 39153a5a1b3Sopenharmony_ciendif 39253a5a1b3Sopenharmony_ci 39353a5a1b3Sopenharmony_cicheck_decls = [ 39453a5a1b3Sopenharmony_ci [ 'environ', 'unistd.h', '#define _GNU_SOURCE' ], 39553a5a1b3Sopenharmony_ci [ 'SOUND_PCM_READ_RATE', 'sys/soundcard.h', '' ], 39653a5a1b3Sopenharmony_ci [ 'SOUND_PCM_READ_CHANNELS', 'sys/soundcard.h', '' ], 39753a5a1b3Sopenharmony_ci [ 'SOUND_PCM_READ_BITS', 'sys/soundcard.h', '' ], 39853a5a1b3Sopenharmony_ci] 39953a5a1b3Sopenharmony_ci 40053a5a1b3Sopenharmony_ciforeach s : check_decls 40153a5a1b3Sopenharmony_ci if cc.has_header_symbol(s[1], s[0], prefix : s[2]) 40253a5a1b3Sopenharmony_ci define = 'HAVE_DECL_' + s[0].to_upper() 40353a5a1b3Sopenharmony_ci cdata.set(define, 1) 40453a5a1b3Sopenharmony_ci endif 40553a5a1b3Sopenharmony_ciendforeach 40653a5a1b3Sopenharmony_ci 40753a5a1b3Sopenharmony_ci# Types 40853a5a1b3Sopenharmony_ci 40953a5a1b3Sopenharmony_ci# FIXME: do we ever care about gid_t not being defined / smaller than an int? 41053a5a1b3Sopenharmony_cicdata.set('GETGROUPS_T', 'gid_t') 41153a5a1b3Sopenharmony_ci 41253a5a1b3Sopenharmony_ci# Include paths 41353a5a1b3Sopenharmony_ci 41453a5a1b3Sopenharmony_ciconfiginc = include_directories('.') 41553a5a1b3Sopenharmony_citopinc = include_directories('src') 41653a5a1b3Sopenharmony_ci 41753a5a1b3Sopenharmony_ci# CFLAGS/LDFLAGS 41853a5a1b3Sopenharmony_ci 41953a5a1b3Sopenharmony_cipa_c_args = ['-DHAVE_CONFIG_H', '-D_GNU_SOURCE'] 42053a5a1b3Sopenharmony_ciserver_c_args = ['-D__INCLUDED_FROM_PULSE_AUDIO'] 42153a5a1b3Sopenharmony_cicdata.set('MESON_BUILD', 1) 42253a5a1b3Sopenharmony_ci 42353a5a1b3Sopenharmony_ci# On ELF systems we don't want the libraries to be unloaded since we don't clean them up properly, 42453a5a1b3Sopenharmony_ci# so we request the nodelete flag to be enabled. 42553a5a1b3Sopenharmony_ci# On other systems, we don't really know how to do that, but it's welcome if somebody can tell. 42653a5a1b3Sopenharmony_ci# Windows doesn't support this flag. 42753a5a1b3Sopenharmony_ciif host_machine.system() != 'windows' 42853a5a1b3Sopenharmony_ci nodelete_link_args = ['-Wl,-z,nodelete'] 42953a5a1b3Sopenharmony_cielse 43053a5a1b3Sopenharmony_ci nodelete_link_args = [] 43153a5a1b3Sopenharmony_ciendif 43253a5a1b3Sopenharmony_ci 43353a5a1b3Sopenharmony_ci# Code coverage 43453a5a1b3Sopenharmony_ci 43553a5a1b3Sopenharmony_ciif get_option('gcov') 43653a5a1b3Sopenharmony_ci add_project_arguments('--coverage', language: ['c', 'cpp']) 43753a5a1b3Sopenharmony_ci add_project_link_arguments('--coverage', language: ['c', 'cpp']) 43853a5a1b3Sopenharmony_ciendif 43953a5a1b3Sopenharmony_ci 44053a5a1b3Sopenharmony_ci# Core Dependencies 44153a5a1b3Sopenharmony_ci 44253a5a1b3Sopenharmony_cilibm_dep = cc.find_library('m', required : true) 44353a5a1b3Sopenharmony_ci 44453a5a1b3Sopenharmony_cithread_dep = dependency('threads') 44553a5a1b3Sopenharmony_ciforeach f : [ 44653a5a1b3Sopenharmony_ci 'pthread_getname_np', 44753a5a1b3Sopenharmony_ci 'pthread_setaffinity_np', 44853a5a1b3Sopenharmony_ci 'pthread_setname_np', 44953a5a1b3Sopenharmony_ci] 45053a5a1b3Sopenharmony_ci if cc.has_function(f, dependencies : thread_dep) 45153a5a1b3Sopenharmony_ci define = 'HAVE_' + f.underscorify().to_upper() 45253a5a1b3Sopenharmony_ci cdata.set(define, 1) 45353a5a1b3Sopenharmony_ci endif 45453a5a1b3Sopenharmony_ciendforeach 45553a5a1b3Sopenharmony_ci 45653a5a1b3Sopenharmony_cicap_dep = cc.find_library('cap', required : false) 45753a5a1b3Sopenharmony_ci 45853a5a1b3Sopenharmony_cishm_dep = cc.find_library('rt', required : false) 45953a5a1b3Sopenharmony_ciif cc.has_function('shm_open', dependencies : shm_dep) 46053a5a1b3Sopenharmony_ci cdata.set('HAVE_SHM_OPEN', 1) 46153a5a1b3Sopenharmony_ciendif 46253a5a1b3Sopenharmony_ci 46353a5a1b3Sopenharmony_cidl_dep = cc.find_library('dl', required : false) 46453a5a1b3Sopenharmony_ciif cc.has_function('dladdr', dependencies : dl_dep) 46553a5a1b3Sopenharmony_ci cdata.set('HAVE_DLADDR', 1) 46653a5a1b3Sopenharmony_ciendif 46753a5a1b3Sopenharmony_ci 46853a5a1b3Sopenharmony_cihave_iconv = false 46953a5a1b3Sopenharmony_ciif cc.has_function('iconv_open') 47053a5a1b3Sopenharmony_ci iconv_dep = dependency('', required : false) 47153a5a1b3Sopenharmony_ci have_iconv = true 47253a5a1b3Sopenharmony_ci # tell the libiconv header to pretend to be libc iconv 47353a5a1b3Sopenharmony_ci cdata.set('LIBICONV_PLUG', 1) 47453a5a1b3Sopenharmony_cielse 47553a5a1b3Sopenharmony_ci iconv_dep = cc.find_library('iconv', required : false) 47653a5a1b3Sopenharmony_ci have_iconv = iconv_dep.found() 47753a5a1b3Sopenharmony_ciendif 47853a5a1b3Sopenharmony_ciif have_iconv 47953a5a1b3Sopenharmony_ci cdata.set('HAVE_ICONV', 1) 48053a5a1b3Sopenharmony_ci iconvconsttest = '''#include <iconv.h> 48153a5a1b3Sopenharmony_cisize_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); 48253a5a1b3Sopenharmony_ci''' 48353a5a1b3Sopenharmony_ci if cc.compiles(iconvconsttest, dependencies : iconv_dep) 48453a5a1b3Sopenharmony_ci cdata.set('ICONV_CONST', '') 48553a5a1b3Sopenharmony_ci else 48653a5a1b3Sopenharmony_ci cdata.set('ICONV_CONST', 'const') 48753a5a1b3Sopenharmony_ci endif 48853a5a1b3Sopenharmony_ciendif 48953a5a1b3Sopenharmony_ci 49053a5a1b3Sopenharmony_ci# Used for backtraces on BSD 49153a5a1b3Sopenharmony_ciexecinfo_dep = cc.find_library('execinfo', required : false) 49253a5a1b3Sopenharmony_ci 49353a5a1b3Sopenharmony_ci# Atomic operations 49453a5a1b3Sopenharmony_ci 49553a5a1b3Sopenharmony_ciif get_option('atomic-arm-memory-barrier') 49653a5a1b3Sopenharmony_ci cdata.set('ATOMIC_ARM_MEMORY_BARRIER_ENABLED', 1) 49753a5a1b3Sopenharmony_ciendif 49853a5a1b3Sopenharmony_ci 49953a5a1b3Sopenharmony_cineed_libatomic_ops = false 50053a5a1b3Sopenharmony_ci 50153a5a1b3Sopenharmony_ciatomictest = '''void func() { 50253a5a1b3Sopenharmony_ci volatile int atomic = 2; 50353a5a1b3Sopenharmony_ci __sync_bool_compare_and_swap (&atomic, 2, 3); 50453a5a1b3Sopenharmony_ci} 50553a5a1b3Sopenharmony_ci''' 50653a5a1b3Sopenharmony_ci 50753a5a1b3Sopenharmony_ciif cc.compiles(atomictest) 50853a5a1b3Sopenharmony_ci cdata.set('HAVE_ATOMIC_BUILTINS', 1) 50953a5a1b3Sopenharmony_ci 51053a5a1b3Sopenharmony_ci newatomictest = '''void func() { 51153a5a1b3Sopenharmony_ci int c = 0; 51253a5a1b3Sopenharmony_ci __atomic_store_n(&c, 4, __ATOMIC_SEQ_CST); 51353a5a1b3Sopenharmony_ci } 51453a5a1b3Sopenharmony_ci ''' 51553a5a1b3Sopenharmony_ci 51653a5a1b3Sopenharmony_ci if(cc.compiles(newatomictest)) 51753a5a1b3Sopenharmony_ci cdata.set('HAVE_ATOMIC_BUILTINS_MEMORY_MODEL', 1) 51853a5a1b3Sopenharmony_ci endif 51953a5a1b3Sopenharmony_ci 52053a5a1b3Sopenharmony_cielif host_machine.cpu_family() == 'arm' 52153a5a1b3Sopenharmony_ci if host_machine.system() == 'linux' and get_option('atomic-arm-linux-helpers') 52253a5a1b3Sopenharmony_ci cdata.set('ATOMIC_ARM_LINUX_HELPERS', 1) 52353a5a1b3Sopenharmony_ci else 52453a5a1b3Sopenharmony_ci armatomictest = '''int func() { 52553a5a1b3Sopenharmony_ci volatile int a=0; 52653a5a1b3Sopenharmony_ci int o=0, n=1, r; 52753a5a1b3Sopenharmony_ci asm volatile ( 52853a5a1b3Sopenharmony_ci "ldrex %0, [%1]\n" 52953a5a1b3Sopenharmony_ci "subs %0, %0, %2\n" 53053a5a1b3Sopenharmony_ci "strexeq %0, %3, [%1]\n" 53153a5a1b3Sopenharmony_ci : "=&r" (r) 53253a5a1b3Sopenharmony_ci : "r" (&a), "Ir" (o), "r" (n) 53353a5a1b3Sopenharmony_ci : "cc"); 53453a5a1b3Sopenharmony_ci return (a==1 ? 0 : -1); 53553a5a1b3Sopenharmony_ci } 53653a5a1b3Sopenharmony_ci ''' 53753a5a1b3Sopenharmony_ci 53853a5a1b3Sopenharmony_ci if cc.compiles(armatomictest) 53953a5a1b3Sopenharmony_ci cdata.set('ATOMIC_ARM_INLINE_ASM', 1) 54053a5a1b3Sopenharmony_ci else 54153a5a1b3Sopenharmony_ci need_libatomic_ops = true 54253a5a1b3Sopenharmony_ci endif 54353a5a1b3Sopenharmony_ci endif # arm && !linux 54453a5a1b3Sopenharmony_ci 54553a5a1b3Sopenharmony_cielif not ['freebsd', 'netbsd'].contains(host_machine.system()) 54653a5a1b3Sopenharmony_ci need_libatomic_ops = true 54753a5a1b3Sopenharmony_ciendif # !atomic helpers && !arm 54853a5a1b3Sopenharmony_ci 54953a5a1b3Sopenharmony_ciif need_libatomic_ops 55053a5a1b3Sopenharmony_ci assert(cc.has_header('atomic_ops.h'), 'Need libatomic_ops') 55153a5a1b3Sopenharmony_ci 55253a5a1b3Sopenharmony_ci cdata.set('AO_REQUIRE_CAS', 1) 55353a5a1b3Sopenharmony_ci 55453a5a1b3Sopenharmony_ci if host_machine.system() != 'windows' 55553a5a1b3Sopenharmony_ci libatomic_ops_dep = cc.find_library('atomic_ops', required : true) 55653a5a1b3Sopenharmony_ci else 55753a5a1b3Sopenharmony_ci libatomic_ops_dep = dependency('', required: false) 55853a5a1b3Sopenharmony_ci endif 55953a5a1b3Sopenharmony_cielse 56053a5a1b3Sopenharmony_ci libatomic_ops_dep = dependency('', required: false) 56153a5a1b3Sopenharmony_ciendif 56253a5a1b3Sopenharmony_ci 56353a5a1b3Sopenharmony_ci# ARM checks 56453a5a1b3Sopenharmony_ci# ARMV6 instructions we need 56553a5a1b3Sopenharmony_ciif host_machine.cpu_family() == 'arm' 56653a5a1b3Sopenharmony_ci armv6test = '''int func() { 56753a5a1b3Sopenharmony_ci volatile int a = -60000, b = 0xaaaabbbb, c = 0xccccdddd; 56853a5a1b3Sopenharmony_ci asm volatile ("ldr r0, %2 \n" 56953a5a1b3Sopenharmony_ci "ldr r2, %3 \n" 57053a5a1b3Sopenharmony_ci "ldr r3, %4 \n" 57153a5a1b3Sopenharmony_ci "ssat r1, #8, r0 \n" 57253a5a1b3Sopenharmony_ci "str r1, %0 \n" 57353a5a1b3Sopenharmony_ci "pkhbt r1, r3, r2, LSL #8 \n" 57453a5a1b3Sopenharmony_ci "str r1, %1 \n" 57553a5a1b3Sopenharmony_ci : "=m" (a), "=m" (b) 57653a5a1b3Sopenharmony_ci : "m" (a), "m" (b), "m" (c) 57753a5a1b3Sopenharmony_ci : "r0", "r1", "r2", "r3", "cc"); 57853a5a1b3Sopenharmony_ci return (a == -128 && b == 0xaabbdddd) ? 0 : -1; 57953a5a1b3Sopenharmony_ci } 58053a5a1b3Sopenharmony_ci ''' 58153a5a1b3Sopenharmony_ci 58253a5a1b3Sopenharmony_ci if cc.compiles(armv6test) 58353a5a1b3Sopenharmony_ci cdata.set('HAVE_ARMV6', 1) 58453a5a1b3Sopenharmony_ci endif 58553a5a1b3Sopenharmony_ciendif 58653a5a1b3Sopenharmony_ci# NEON checks are automatically done by the unstable-simd module 58753a5a1b3Sopenharmony_ci 58853a5a1b3Sopenharmony_ci# Dependencies common to client, daemon and modules 58953a5a1b3Sopenharmony_ci 59053a5a1b3Sopenharmony_ciif get_option('ipv6') 59153a5a1b3Sopenharmony_ci cdata.set('HAVE_IPV6', 1) 59253a5a1b3Sopenharmony_ciendif 59353a5a1b3Sopenharmony_ci 59453a5a1b3Sopenharmony_cidbus_dep = dependency('dbus-1', version : '>= 1.4.12', required : get_option('dbus')) 59553a5a1b3Sopenharmony_ciif dbus_dep.found() 59653a5a1b3Sopenharmony_ci cdata.set('HAVE_DBUS', 1) 59753a5a1b3Sopenharmony_ciendif 59853a5a1b3Sopenharmony_ci 59953a5a1b3Sopenharmony_ciglib_dep = dependency('glib-2.0', version : '>= 2.28.0', required: get_option('glib')) 60053a5a1b3Sopenharmony_ciif glib_dep.found() 60153a5a1b3Sopenharmony_ci cdata.set('HAVE_GLIB', 1) 60253a5a1b3Sopenharmony_ci cdata.set('HAVE_GLIB20', 1) # to match the AM_CONDITIONAL for CMake file generation 60353a5a1b3Sopenharmony_ciendif 60453a5a1b3Sopenharmony_ci 60553a5a1b3Sopenharmony_cisndfile_dep = dependency('sndfile', version : '>= 1.0.20') 60653a5a1b3Sopenharmony_ci 60753a5a1b3Sopenharmony_cilibsystemd_dep = dependency('libsystemd', required : get_option('systemd')) 60853a5a1b3Sopenharmony_ciif libsystemd_dep.found() 60953a5a1b3Sopenharmony_ci cdata.set('HAVE_SYSTEMD_DAEMON', 1) 61053a5a1b3Sopenharmony_ci cdata.set('HAVE_SYSTEMD_LOGIN', 1) 61153a5a1b3Sopenharmony_ci cdata.set('HAVE_SYSTEMD_JOURNAL', 1) 61253a5a1b3Sopenharmony_ciendif 61353a5a1b3Sopenharmony_ci 61453a5a1b3Sopenharmony_cix11_dep = dependency('x11-xcb', required : get_option('x11')) 61553a5a1b3Sopenharmony_ci 61653a5a1b3Sopenharmony_ci# OSS support 61753a5a1b3Sopenharmony_ciif cc.has_header('sys/soundcard.h', required: get_option('oss-output')) 61853a5a1b3Sopenharmony_ci # OSS output via daemon module-detect 61953a5a1b3Sopenharmony_ci cdata.set('HAVE_OSS_OUTPUT', 1) 62053a5a1b3Sopenharmony_ci # OSS wrapper 62153a5a1b3Sopenharmony_ci cdata.set('HAVE_OSS_WRAPPER', 1) 62253a5a1b3Sopenharmony_ci cdata.set('PULSEDSP_LOCATION', pulsedsp_location) 62353a5a1b3Sopenharmony_ciendif 62453a5a1b3Sopenharmony_ci 62553a5a1b3Sopenharmony_cifftw_dep = dependency('fftw3f', required : get_option('fftw')) 62653a5a1b3Sopenharmony_ciif fftw_dep.found() 62753a5a1b3Sopenharmony_ci cdata.set('HAVE_FFTW', 1) 62853a5a1b3Sopenharmony_ciendif 62953a5a1b3Sopenharmony_ci 63053a5a1b3Sopenharmony_ci# Client library dependencies 63153a5a1b3Sopenharmony_ci 63253a5a1b3Sopenharmony_ciif get_option('client') 63353a5a1b3Sopenharmony_ci asyncns_dep = dependency('libasyncns', version : '>= 0.1', required : get_option('asyncns')) 63453a5a1b3Sopenharmony_ci if asyncns_dep.found() 63553a5a1b3Sopenharmony_ci cdata.set('HAVE_LIBASYNCNS', 1) 63653a5a1b3Sopenharmony_ci endif 63753a5a1b3Sopenharmony_ci 63853a5a1b3Sopenharmony_ci gtk_dep = dependency('gtk+-3.0', required : get_option('gtk')) 63953a5a1b3Sopenharmony_ci if gtk_dep.found() 64053a5a1b3Sopenharmony_ci cdata.set('HAVE_GTK', 1) 64153a5a1b3Sopenharmony_ci endif 64253a5a1b3Sopenharmony_ciendif 64353a5a1b3Sopenharmony_ci 64453a5a1b3Sopenharmony_ci# Daemon and module dependencies 64553a5a1b3Sopenharmony_ci 64653a5a1b3Sopenharmony_ciif get_option('daemon') 64753a5a1b3Sopenharmony_ci # FIXME: make sure it's >= 2.2 64853a5a1b3Sopenharmony_ci ltdl_dep = cc.find_library('ltdl', required : true) 64953a5a1b3Sopenharmony_ci 65053a5a1b3Sopenharmony_ci # FIXME: can meson support libtool -dlopen/-dlpreopen things? 65153a5a1b3Sopenharmony_ci # and do we still want to support this at all? 65253a5a1b3Sopenharmony_ci cdata.set('DISABLE_LIBTOOL_PRELOAD', 1) 65353a5a1b3Sopenharmony_ci 65453a5a1b3Sopenharmony_ci if get_option('database') == 'tdb' 65553a5a1b3Sopenharmony_ci database_dep = dependency('tdb') 65653a5a1b3Sopenharmony_ci elif get_option('database') == 'gdbm' 65753a5a1b3Sopenharmony_ci database_dep = cc.find_library('gdbm', required : true) 65853a5a1b3Sopenharmony_ci else 65953a5a1b3Sopenharmony_ci database_dep = dependency('', required: false) 66053a5a1b3Sopenharmony_ci endif 66153a5a1b3Sopenharmony_ci 66253a5a1b3Sopenharmony_ci if get_option('legacy-database-entry-format') 66353a5a1b3Sopenharmony_ci cdata.set('ENABLE_LEGACY_DATABASE_ENTRY_FORMAT', 1) 66453a5a1b3Sopenharmony_ci endif 66553a5a1b3Sopenharmony_ci 66653a5a1b3Sopenharmony_ci if get_option('stream-restore-clear-old-devices') 66753a5a1b3Sopenharmony_ci cdata.set('STREAM_RESTORE_CLEAR_OLD_DEVICES', 1) 66853a5a1b3Sopenharmony_ci endif 66953a5a1b3Sopenharmony_ci 67053a5a1b3Sopenharmony_ci if get_option('running-from-build-tree') 67153a5a1b3Sopenharmony_ci cdata.set('HAVE_RUNNING_FROM_BUILD_TREE', 1) 67253a5a1b3Sopenharmony_ci endif 67353a5a1b3Sopenharmony_ci 67453a5a1b3Sopenharmony_ci if get_option('enable-smoother-2') 67553a5a1b3Sopenharmony_ci cdata.set('USE_SMOOTHER_2', 1) 67653a5a1b3Sopenharmony_ci endif 67753a5a1b3Sopenharmony_ci 67853a5a1b3Sopenharmony_ci alsa_dep = dependency('alsa', version : '>= 1.0.24', required : get_option('alsa')) 67953a5a1b3Sopenharmony_ci if alsa_dep.found() 68053a5a1b3Sopenharmony_ci cdata.set('HAVE_ALSA', 1) 68153a5a1b3Sopenharmony_ci cdata.set('HAVE_ALSA_UCM', 1) 68253a5a1b3Sopenharmony_ci endif 68353a5a1b3Sopenharmony_ci 68453a5a1b3Sopenharmony_ci gio_dep = dependency('gio-2.0', version : '>= 2.26.0') 68553a5a1b3Sopenharmony_ci if get_option('gsettings').enabled() 68653a5a1b3Sopenharmony_ci assert(gio_dep.found(), 'GSettings support needs glib I/O library (GIO)') 68753a5a1b3Sopenharmony_ci cdata.set('HAVE_GSETTINGS', 1) 68853a5a1b3Sopenharmony_ci else 68953a5a1b3Sopenharmony_ci cdata.set('HAVE_GSETTINGS', 0) 69053a5a1b3Sopenharmony_ci endif 69153a5a1b3Sopenharmony_ci 69253a5a1b3Sopenharmony_ci have_orcc = false 69353a5a1b3Sopenharmony_ci orcc_args = [] 69453a5a1b3Sopenharmony_ci orc_dep = dependency('orc-0.4', version : '>= 0.4.11', required : get_option('orc')) 69553a5a1b3Sopenharmony_ci orcc = find_program('orcc', required : get_option('orc')) 69653a5a1b3Sopenharmony_ci if orc_dep.found() and orcc.found() 69753a5a1b3Sopenharmony_ci have_orcc = true 69853a5a1b3Sopenharmony_ci orcc_args = [orcc] 69953a5a1b3Sopenharmony_ci #orcc_args = [orcc, '--include', 'glib.h'] 70053a5a1b3Sopenharmony_ci cdata.set('HAVE_ORC', 1) 70153a5a1b3Sopenharmony_ci else 70253a5a1b3Sopenharmony_ci cdata.set('DISABLE_ORC', 1) 70353a5a1b3Sopenharmony_ci endif 70453a5a1b3Sopenharmony_ci 70553a5a1b3Sopenharmony_ci samplerate_dep = dependency('samplerate', version : '>= 0.1.0', required : get_option('samplerate')) 70653a5a1b3Sopenharmony_ci if samplerate_dep.found() 70753a5a1b3Sopenharmony_ci cdata.set('HAVE_LIBSAMPLERATE', 1) 70853a5a1b3Sopenharmony_ci endif 70953a5a1b3Sopenharmony_ci 71053a5a1b3Sopenharmony_ci speex_dep = dependency('speexdsp', version : '>= 1.2', required : get_option('speex')) 71153a5a1b3Sopenharmony_ci if speex_dep.found() 71253a5a1b3Sopenharmony_ci cdata.set('HAVE_SPEEX', 1) 71353a5a1b3Sopenharmony_ci endif 71453a5a1b3Sopenharmony_ci 71553a5a1b3Sopenharmony_ci soxr_dep = dependency('soxr', version : '>= 0.1.1', required : get_option('soxr')) 71653a5a1b3Sopenharmony_ci if soxr_dep.found() 71753a5a1b3Sopenharmony_ci cdata.set('HAVE_SOXR', 1) 71853a5a1b3Sopenharmony_ci endif 71953a5a1b3Sopenharmony_ci 72053a5a1b3Sopenharmony_ci webrtc_dep = dependency('webrtc-audio-processing', version : '>= 0.2', required : get_option('webrtc-aec')) 72153a5a1b3Sopenharmony_ci if webrtc_dep.found() 72253a5a1b3Sopenharmony_ci cdata.set('HAVE_WEBRTC', 1) 72353a5a1b3Sopenharmony_ci endif 72453a5a1b3Sopenharmony_ci 72553a5a1b3Sopenharmony_ci systemd_dep = dependency('systemd', required : get_option('systemd')) 72653a5a1b3Sopenharmony_ci if systemd_dep.found() and systemduserunitdir == '' 72753a5a1b3Sopenharmony_ci systemduserunitdir = systemd_dep.get_pkgconfig_variable('systemduserunitdir') 72853a5a1b3Sopenharmony_ci endif 72953a5a1b3Sopenharmony_ci 73053a5a1b3Sopenharmony_ci libelogind_dep = dependency('libelogind', required : get_option('elogind')) 73153a5a1b3Sopenharmony_ci if libelogind_dep.found() 73253a5a1b3Sopenharmony_ci cdata.set('HAVE_SYSTEMD_LOGIN', 1) 73353a5a1b3Sopenharmony_ci endif 73453a5a1b3Sopenharmony_ci 73553a5a1b3Sopenharmony_ci tcpwrap_dep = cc.find_library('wrap', required: get_option('tcpwrap')) 73653a5a1b3Sopenharmony_ci if cc.has_header('tcpd.h') and cc.has_function('hosts_access', dependencies : tcpwrap_dep) 73753a5a1b3Sopenharmony_ci cdata.set('HAVE_LIBWRAP', 1) 73853a5a1b3Sopenharmony_ci endif 73953a5a1b3Sopenharmony_ci 74053a5a1b3Sopenharmony_ci if x11_dep.found() 74153a5a1b3Sopenharmony_ci xcb_dep = dependency('xcb', required : true, version : '>= 1.6') 74253a5a1b3Sopenharmony_ci ice_dep = dependency('ice', required : true) 74353a5a1b3Sopenharmony_ci sm_dep = dependency('sm', required : true) 74453a5a1b3Sopenharmony_ci xtst_dep = dependency('xtst', required : true) 74553a5a1b3Sopenharmony_ci cdata.set('HAVE_X11', 1) 74653a5a1b3Sopenharmony_ci if cc.has_function('XSetIOErrorExitHandler', dependencies: x11_dep) 74753a5a1b3Sopenharmony_ci cdata.set('HAVE_XSETIOERROREXITHANDLER', 1) 74853a5a1b3Sopenharmony_ci endif 74953a5a1b3Sopenharmony_ci endif 75053a5a1b3Sopenharmony_ci 75153a5a1b3Sopenharmony_ci avahi_dep = dependency('avahi-client', version : '>= 0.6.0', required : get_option('avahi'), disabler : true) 75253a5a1b3Sopenharmony_ci if avahi_dep.found() 75353a5a1b3Sopenharmony_ci cdata.set('HAVE_AVAHI', 1) 75453a5a1b3Sopenharmony_ci else 75553a5a1b3Sopenharmony_ci cdata.set('HAVE_AVAHI', 0) 75653a5a1b3Sopenharmony_ci endif 75753a5a1b3Sopenharmony_ci 75853a5a1b3Sopenharmony_ci sbc_dep = dependency('sbc', version : '>= 1.0', required : false) 75953a5a1b3Sopenharmony_ci 76053a5a1b3Sopenharmony_ci bluez_dep = dependency('bluez', required : get_option('bluez5')) 76153a5a1b3Sopenharmony_ci 76253a5a1b3Sopenharmony_ci if bluez_dep.found() 76353a5a1b3Sopenharmony_ci assert(dbus_dep.found(), 'BlueZ requires D-Bus support') 76453a5a1b3Sopenharmony_ci assert(sbc_dep.found(), 'BlueZ requires SBC support') 76553a5a1b3Sopenharmony_ci cdata.set('HAVE_SBC', 1) 76653a5a1b3Sopenharmony_ci cdata.set('HAVE_BLUEZ', 1) 76753a5a1b3Sopenharmony_ci cdata.set('HAVE_BLUEZ_5', 1) 76853a5a1b3Sopenharmony_ci if get_option('bluez5-native-headset') 76953a5a1b3Sopenharmony_ci cdata.set('HAVE_BLUEZ_5_NATIVE_HEADSET', 1) 77053a5a1b3Sopenharmony_ci endif 77153a5a1b3Sopenharmony_ci if get_option('bluez5-ofono-headset') 77253a5a1b3Sopenharmony_ci cdata.set('HAVE_BLUEZ_5_OFONO_HEADSET', 1) 77353a5a1b3Sopenharmony_ci endif 77453a5a1b3Sopenharmony_ci endif 77553a5a1b3Sopenharmony_ci 77653a5a1b3Sopenharmony_ci jack_dep = dependency('jack', version : '>= 0.117.0', required : get_option('jack')) 77753a5a1b3Sopenharmony_ci if jack_dep.found() 77853a5a1b3Sopenharmony_ci cdata.set('HAVE_JACK', 1) 77953a5a1b3Sopenharmony_ci endif 78053a5a1b3Sopenharmony_ci 78153a5a1b3Sopenharmony_ci lirc_dep = dependency('lirc', required : get_option('lirc')) 78253a5a1b3Sopenharmony_ci if lirc_dep.found() 78353a5a1b3Sopenharmony_ci cdata.set('HAVE_LIRC', 1) 78453a5a1b3Sopenharmony_ci endif 78553a5a1b3Sopenharmony_ci 78653a5a1b3Sopenharmony_ci openssl_dep = dependency('openssl', version : '>= 0.9', required : get_option('openssl')) 78753a5a1b3Sopenharmony_ci if openssl_dep.found() 78853a5a1b3Sopenharmony_ci cdata.set('HAVE_OPENSSL', 1) 78953a5a1b3Sopenharmony_ci endif 79053a5a1b3Sopenharmony_ci 79153a5a1b3Sopenharmony_ci udev_dep = dependency('libudev', version : '>= 143', required : get_option('udev')) 79253a5a1b3Sopenharmony_ci if udev_dep.found() 79353a5a1b3Sopenharmony_ci cdata.set('HAVE_UDEV', 1) 79453a5a1b3Sopenharmony_ci endif 79553a5a1b3Sopenharmony_ci 79653a5a1b3Sopenharmony_ci if get_option('hal-compat') 79753a5a1b3Sopenharmony_ci cdata.set('HAVE_HAL_COMPAT', 1) 79853a5a1b3Sopenharmony_ci endif 79953a5a1b3Sopenharmony_ci 80053a5a1b3Sopenharmony_ci gst_dep = dependency('gstreamer-1.0', version : '>= 1.14', required : get_option('gstreamer')) 80153a5a1b3Sopenharmony_ci gstapp_dep = dependency('gstreamer-app-1.0', required : get_option('gstreamer')) 80253a5a1b3Sopenharmony_ci gstrtp_dep = dependency('gstreamer-rtp-1.0', required : get_option('gstreamer')) 80353a5a1b3Sopenharmony_ci 80453a5a1b3Sopenharmony_ci have_gstreamer = false 80553a5a1b3Sopenharmony_ci if gst_dep.found() and gstapp_dep.found() and gstrtp_dep.found() 80653a5a1b3Sopenharmony_ci assert(gio_dep.found(), 'GStreamer-based RTP needs glib I/O library (GIO)') 80753a5a1b3Sopenharmony_ci have_gstreamer = true 80853a5a1b3Sopenharmony_ci endif 80953a5a1b3Sopenharmony_ci 81053a5a1b3Sopenharmony_ci bluez5_gst_dep = dependency('gstreamer-1.0', version : '>= 1.14', required : get_option('bluez5-gstreamer')) 81153a5a1b3Sopenharmony_ci bluez5_gstapp_dep = dependency('gstreamer-app-1.0', required : get_option('bluez5-gstreamer')) 81253a5a1b3Sopenharmony_ci have_bluez5_gstreamer = false 81353a5a1b3Sopenharmony_ci if bluez5_gst_dep.found() and bluez5_gstapp_dep.found() 81453a5a1b3Sopenharmony_ci have_bluez5_gstreamer = true 81553a5a1b3Sopenharmony_ci cdata.set('HAVE_GSTLDAC', 1) 81653a5a1b3Sopenharmony_ci cdata.set('HAVE_GSTAPTX', 1) 81753a5a1b3Sopenharmony_ci endif 81853a5a1b3Sopenharmony_ciendif 81953a5a1b3Sopenharmony_ci 82053a5a1b3Sopenharmony_ci# These are required for the CMake file generation 82153a5a1b3Sopenharmony_cicdata.set('PA_LIBDIR', libdir) 82253a5a1b3Sopenharmony_cicdata.set('PA_INCDIR', includedir) 82353a5a1b3Sopenharmony_ci 82453a5a1b3Sopenharmony_ci# Test dependencies 82553a5a1b3Sopenharmony_ci 82653a5a1b3Sopenharmony_cicheck_dep = dependency('check', version : '>= 0.9.10', required : get_option('tests')) 82753a5a1b3Sopenharmony_ci 82853a5a1b3Sopenharmony_ci# Subdirs 82953a5a1b3Sopenharmony_ci 83053a5a1b3Sopenharmony_ciif get_option('doxygen') 83153a5a1b3Sopenharmony_ci subdir('doxygen') 83253a5a1b3Sopenharmony_ciendif 83353a5a1b3Sopenharmony_ciif get_option('client') 83453a5a1b3Sopenharmony_ci subdir('po') 83553a5a1b3Sopenharmony_ciendif 83653a5a1b3Sopenharmony_ciif get_option('man') 83753a5a1b3Sopenharmony_ci subdir('man') 83853a5a1b3Sopenharmony_ciendif 83953a5a1b3Sopenharmony_cisubdir('shell-completion/bash') 84053a5a1b3Sopenharmony_cisubdir('shell-completion/zsh') 84153a5a1b3Sopenharmony_cisubdir('src') 84253a5a1b3Sopenharmony_ciif get_option('client') 84353a5a1b3Sopenharmony_ci subdir('vala') 84453a5a1b3Sopenharmony_ciendif 84553a5a1b3Sopenharmony_ci 84653a5a1b3Sopenharmony_ci# Now generate config.h from everything above 84753a5a1b3Sopenharmony_ciconfigure_file(output : 'config.h', configuration : cdata) 84853a5a1b3Sopenharmony_ci 84953a5a1b3Sopenharmony_ciif get_option('client') 85053a5a1b3Sopenharmony_ci 85153a5a1b3Sopenharmony_ci # pkg-config files 85253a5a1b3Sopenharmony_ci 85353a5a1b3Sopenharmony_ci pc_cdata = configuration_data() 85453a5a1b3Sopenharmony_ci 85553a5a1b3Sopenharmony_ci pc_cdata.set('prefix', prefix) 85653a5a1b3Sopenharmony_ci pc_cdata.set('exec_prefix', prefix) 85753a5a1b3Sopenharmony_ci pc_cdata.set('libdir', libdir) 85853a5a1b3Sopenharmony_ci pc_cdata.set('includedir', includedir) 85953a5a1b3Sopenharmony_ci pc_cdata.set('modlibexecdir', modlibexecdir) 86053a5a1b3Sopenharmony_ci pc_cdata.set('PACKAGE_VERSION', pa_version_str) 86153a5a1b3Sopenharmony_ci pc_cdata.set('PA_MAJORMINOR', pa_version_major_minor) 86253a5a1b3Sopenharmony_ci # FIXME: the line below is wrong. Currently the meson thread dep lacks documentation, 86353a5a1b3Sopenharmony_ci # and doesn't allow introspection, ie. none of get_pkgconfig_variable() or 86453a5a1b3Sopenharmony_ci # get_configtool_variable() work with it, so we have no way to get this flag right, 86553a5a1b3Sopenharmony_ci # unless we do all the work ourselves. See current work in glib, also meson #553. 86653a5a1b3Sopenharmony_ci pc_cdata.set('PTHREAD_LIBS', '-pthread') 86753a5a1b3Sopenharmony_ci 86853a5a1b3Sopenharmony_ci pc_files = [ 86953a5a1b3Sopenharmony_ci 'libpulse.pc', 87053a5a1b3Sopenharmony_ci 'libpulse-simple.pc', 87153a5a1b3Sopenharmony_ci ] 87253a5a1b3Sopenharmony_ci 87353a5a1b3Sopenharmony_ci if glib_dep.found() 87453a5a1b3Sopenharmony_ci pc_files += 'libpulse-mainloop-glib.pc' 87553a5a1b3Sopenharmony_ci endif 87653a5a1b3Sopenharmony_ci 87753a5a1b3Sopenharmony_ci foreach file : pc_files 87853a5a1b3Sopenharmony_ci configure_file( 87953a5a1b3Sopenharmony_ci input : file + '.in', 88053a5a1b3Sopenharmony_ci output : file, 88153a5a1b3Sopenharmony_ci configuration : pc_cdata, 88253a5a1b3Sopenharmony_ci install_dir : pkgconfigdir) 88353a5a1b3Sopenharmony_ci endforeach 88453a5a1b3Sopenharmony_ci 88553a5a1b3Sopenharmony_ci # CMake files 88653a5a1b3Sopenharmony_ci 88753a5a1b3Sopenharmony_ci m4 = find_program('m4', required: true) 88853a5a1b3Sopenharmony_ci 88953a5a1b3Sopenharmony_ci cmakedir = join_paths(libdir, 'cmake', 'PulseAudio') 89053a5a1b3Sopenharmony_ci 89153a5a1b3Sopenharmony_ci cmake_template_file = configure_file( 89253a5a1b3Sopenharmony_ci input : 'PulseAudioConfig.cmake.in', 89353a5a1b3Sopenharmony_ci output : 'PulseAudioConfig.cmake.tmp', 89453a5a1b3Sopenharmony_ci configuration: cdata, 89553a5a1b3Sopenharmony_ci ) 89653a5a1b3Sopenharmony_ci 89753a5a1b3Sopenharmony_ci custom_target('PulseAudioConfig.cmake', 89853a5a1b3Sopenharmony_ci input : cmake_template_file, 89953a5a1b3Sopenharmony_ci output : 'PulseAudioConfig.cmake', 90053a5a1b3Sopenharmony_ci capture : true, 90153a5a1b3Sopenharmony_ci command : [m4, '@INPUT@'], 90253a5a1b3Sopenharmony_ci build_by_default : true, 90353a5a1b3Sopenharmony_ci install : true, 90453a5a1b3Sopenharmony_ci install_dir : cmakedir, 90553a5a1b3Sopenharmony_ci ) 90653a5a1b3Sopenharmony_ci 90753a5a1b3Sopenharmony_ci configure_file( 90853a5a1b3Sopenharmony_ci input : 'PulseAudioConfigVersion.cmake.in', 90953a5a1b3Sopenharmony_ci output : 'PulseAudioConfigVersion.cmake', 91053a5a1b3Sopenharmony_ci configuration: cdata, 91153a5a1b3Sopenharmony_ci install : true, 91253a5a1b3Sopenharmony_ci install_dir : cmakedir, 91353a5a1b3Sopenharmony_ci ) 91453a5a1b3Sopenharmony_ci 91553a5a1b3Sopenharmony_ciendif # client 91653a5a1b3Sopenharmony_ci 91753a5a1b3Sopenharmony_ci############################################################ 91853a5a1b3Sopenharmony_ci 91953a5a1b3Sopenharmony_ci# Final summary 92053a5a1b3Sopenharmony_ci 92153a5a1b3Sopenharmony_cisummary = [ 92253a5a1b3Sopenharmony_ci '', 92353a5a1b3Sopenharmony_ci '---{ @0@ @1@ }---'.format(meson.project_name(), meson.project_version()), 92453a5a1b3Sopenharmony_ci '', 92553a5a1b3Sopenharmony_ci 'prefix: @0@'.format(prefix), 92653a5a1b3Sopenharmony_ci 'bindir: @0@'.format(bindir), 92753a5a1b3Sopenharmony_ci 'libdir: @0@'.format(libdir), 92853a5a1b3Sopenharmony_ci 'libexecdir: @0@'.format(libexecdir), 92953a5a1b3Sopenharmony_ci 'mandir: @0@'.format(mandir), 93053a5a1b3Sopenharmony_ci 'datadir: @0@'.format(datadir), 93153a5a1b3Sopenharmony_ci 'sysconfdir: @0@'.format(sysconfdir), 93253a5a1b3Sopenharmony_ci 'localstatedir: @0@'.format(localstatedir), 93353a5a1b3Sopenharmony_ci 'modlibexecdir: @0@'.format(modlibexecdir), 93453a5a1b3Sopenharmony_ci 'alsadatadir: @0@'.format(alsadatadir), 93553a5a1b3Sopenharmony_ci 'System Runtime Path: @0@'.format(cdata.get_unquoted('PA_SYSTEM_RUNTIME_PATH')), 93653a5a1b3Sopenharmony_ci 'System State Path: @0@'.format(cdata.get_unquoted('PA_SYSTEM_STATE_PATH')), 93753a5a1b3Sopenharmony_ci 'System Config Path: @0@'.format(cdata.get_unquoted('PA_SYSTEM_CONFIG_PATH')), 93853a5a1b3Sopenharmony_ci 'Bash completions directory: @0@'.format(bashcompletiondir), 93953a5a1b3Sopenharmony_ci 'Zsh completions directory: @0@'.format(zshcompletiondir), 94053a5a1b3Sopenharmony_ci 'Compiler: @0@ @1@'.format(cc.get_id(), cc.version()), 94153a5a1b3Sopenharmony_ci# 'CFLAGS: @0@'.format(${CFLAGS}), 94253a5a1b3Sopenharmony_ci# 'CPPFLAGS: @0@'.format(${CPPFLAGS}), 94353a5a1b3Sopenharmony_ci# 'LIBS: @0@'.format(${LIBS}), 94453a5a1b3Sopenharmony_ci '', 94553a5a1b3Sopenharmony_ci 'Enable pulseaudio daemon: @0@'.format(get_option('daemon')), 94653a5a1b3Sopenharmony_ci 'Enable pulseaudio client: @0@'.format(get_option('client')), 94753a5a1b3Sopenharmony_ci '', 94853a5a1b3Sopenharmony_ci 'Enable memfd shared memory: @0@'.format(cdata.has('HAVE_MEMFD')), 94953a5a1b3Sopenharmony_ci 'Enable X11: @0@'.format(x11_dep.found()), 95053a5a1b3Sopenharmony_ci 'Enable D-Bus: @0@'.format(dbus_dep.found()), 95153a5a1b3Sopenharmony_ci 'Enable GLib 2: @0@'.format(glib_dep.found()), 95253a5a1b3Sopenharmony_ci 'Enable systemd integration: @0@'.format(libsystemd_dep.found()), 95353a5a1b3Sopenharmony_ci 'Enable FFTW: @0@'.format(fftw_dep.found()), 95453a5a1b3Sopenharmony_ci 'Enable IPv6: @0@'.format(get_option('ipv6')), 95553a5a1b3Sopenharmony_ci 'Enable Gcov coverage: @0@'.format(get_option('gcov')), 95653a5a1b3Sopenharmony_ci 'Enable Valgrind: @0@'.format(cdata.has('HAVE_VALGRIND_MEMCHECK_H')), 95753a5a1b3Sopenharmony_ci 'Enable man pages: @0@'.format(get_option('man')), 95853a5a1b3Sopenharmony_ci 'Enable unit tests: @0@'.format(get_option('tests')), 95953a5a1b3Sopenharmony_ci] 96053a5a1b3Sopenharmony_ci 96153a5a1b3Sopenharmony_ciif get_option('client') 96253a5a1b3Sopenharmony_cisummary += [ 96353a5a1b3Sopenharmony_ci '', 96453a5a1b3Sopenharmony_ci '--- Pulseaudio client features ---', 96553a5a1b3Sopenharmony_ci '', 96653a5a1b3Sopenharmony_ci 'Enable Gtk+ 3: @0@'.format(gtk_dep.found()), 96753a5a1b3Sopenharmony_ci 'Enable Async DNS: @0@'.format(asyncns_dep.found()), 96853a5a1b3Sopenharmony_ci 'Enable OSS Wrapper: @0@'.format(cdata.has('HAVE_OSS_WRAPPER')), 96953a5a1b3Sopenharmony_ci] 97053a5a1b3Sopenharmony_ciendif 97153a5a1b3Sopenharmony_ci 97253a5a1b3Sopenharmony_ciif get_option('daemon') 97353a5a1b3Sopenharmony_cisummary += [ 97453a5a1b3Sopenharmony_ci '', 97553a5a1b3Sopenharmony_ci '--- Pulseaudio daemon features ---', 97653a5a1b3Sopenharmony_ci '', 97753a5a1b3Sopenharmony_ci 'Safe X11 I/O errors: @0@'.format(cdata.has('HAVE_XSETIOERROREXITHANDLER')), 97853a5a1b3Sopenharmony_ci 'Enable Avahi: @0@'.format(avahi_dep.found()), 97953a5a1b3Sopenharmony_ci 'Enable OSS Output: @0@'.format(cdata.has('HAVE_OSS_OUTPUT')), 98053a5a1b3Sopenharmony_ci# 'Enable EsounD: @0@'.format(${ENABLE_ESOUND}), 98153a5a1b3Sopenharmony_ci 'Enable Alsa: @0@'.format(alsa_dep.found()), 98253a5a1b3Sopenharmony_ci 'Enable Jack: @0@'.format(jack_dep.found()), 98353a5a1b3Sopenharmony_ci 'Enable LIRC: @0@'.format(lirc_dep.found()), 98453a5a1b3Sopenharmony_ci# 'Enable CoreAudio: @0@'.format(${ENABLE_COREAUDIO}), 98553a5a1b3Sopenharmony_ci# 'Enable Solaris: @0@'.format(${ENABLE_SOLARIS}), 98653a5a1b3Sopenharmony_ci# 'Enable WaveOut: @0@'.format(${ENABLE_WAVEOUT}), 98753a5a1b3Sopenharmony_ci 'Enable GSettings: @0@'.format(gio_dep.found()), 98853a5a1b3Sopenharmony_ci 'Enable BlueZ 5: @0@'.format(cdata.has('HAVE_BLUEZ_5')), 98953a5a1b3Sopenharmony_ci ' Enable native headsets: @0@'.format(cdata.has('HAVE_BLUEZ_5_NATIVE_HEADSET')), 99053a5a1b3Sopenharmony_ci ' Enable ofono headsets: @0@'.format(cdata.has('HAVE_BLUEZ_5_OFONO_HEADSET')), 99153a5a1b3Sopenharmony_ci ' Enable GStreamer based codecs: @0@'.format(have_bluez5_gstreamer), 99253a5a1b3Sopenharmony_ci 'Enable GStreamer: @0@'.format(have_gstreamer), 99353a5a1b3Sopenharmony_ci 'Enable libsamplerate: @0@'.format(samplerate_dep.found()), 99453a5a1b3Sopenharmony_ci 'Enable ORC: @0@'.format(have_orcc), 99553a5a1b3Sopenharmony_ci 'Enable Adrian echo canceller: @0@'.format(get_option('adrian-aec')), 99653a5a1b3Sopenharmony_ci 'Enable Speex (resampler, AEC): @0@'.format(speex_dep.found()), 99753a5a1b3Sopenharmony_ci 'Enable SoXR (resampler): @0@'.format(soxr_dep.found()), 99853a5a1b3Sopenharmony_ci 'Enable WebRTC echo canceller: @0@'.format(webrtc_dep.found()), 99953a5a1b3Sopenharmony_ci '', 100053a5a1b3Sopenharmony_ci 'Enable udev: @0@'.format(udev_dep.found()), 100153a5a1b3Sopenharmony_ci ' Enable HAL->udev compat: @0@'.format(get_option('hal-compat')), 100253a5a1b3Sopenharmony_ci 'Enable systemd units: @0@'.format(systemd_dep.found()), 100353a5a1b3Sopenharmony_ci 'Enable elogind: @0@'.format(libelogind_dep.found()), 100453a5a1b3Sopenharmony_ci 'Enable TCP Wrappers: @0@'.format(tcpwrap_dep.found()), 100553a5a1b3Sopenharmony_ci 'Enable OpenSSL (for Airtunes): @0@'.format(openssl_dep.found()), 100653a5a1b3Sopenharmony_ci 'Database: @0@'.format(get_option('database')), 100753a5a1b3Sopenharmony_ci 'Legacy Database Entry Support: @0@'.format(get_option('legacy-database-entry-format')), 100853a5a1b3Sopenharmony_ci 'module-stream-restore:', 100953a5a1b3Sopenharmony_ci ' Clear old devices: @0@'.format(get_option('stream-restore-clear-old-devices')), 101053a5a1b3Sopenharmony_ci 'Running from build tree: @0@'.format(get_option('running-from-build-tree')), 101153a5a1b3Sopenharmony_ci 'System User: @0@'.format(cdata.get_unquoted('PA_SYSTEM_USER')), 101253a5a1b3Sopenharmony_ci 'System Group: @0@'.format(cdata.get_unquoted('PA_SYSTEM_GROUP')), 101353a5a1b3Sopenharmony_ci 'Access Group: @0@'.format(cdata.get_unquoted('PA_ACCESS_GROUP')), 101453a5a1b3Sopenharmony_ci# 'Enable per-user EsounD socket: @0@'.format(${ENABLE_PER_USER_ESOUND_SOCKET}), 101553a5a1b3Sopenharmony_ci# 'Force preopen: @0@'.format(${FORCE_PREOPEN}), 101653a5a1b3Sopenharmony_ci# 'Preopened modules: @0@'.format(${PREOPEN_MODS}), 101753a5a1b3Sopenharmony_ci] 101853a5a1b3Sopenharmony_ciendif 101953a5a1b3Sopenharmony_ci 102053a5a1b3Sopenharmony_cimessage('\n '.join(summary)) 102153a5a1b3Sopenharmony_ci 102253a5a1b3Sopenharmony_ci# Sanity checks 102353a5a1b3Sopenharmony_ci 102453a5a1b3Sopenharmony_ciif get_option('daemon') and not speex_dep.found() and not webrtc_dep.found() and not get_option('adrian-aec') 102553a5a1b3Sopenharmony_ci error('At least one echo canceller implementation must be available!') 102653a5a1b3Sopenharmony_ciendif 102753a5a1b3Sopenharmony_ci 102853a5a1b3Sopenharmony_ciif get_option('daemon') and samplerate_dep.found() 102953a5a1b3Sopenharmony_ci warning('Support for libsamplerate is DEPRECATED') 103053a5a1b3Sopenharmony_ciendif 103153a5a1b3Sopenharmony_ci 103253a5a1b3Sopenharmony_ciif host_machine.system() != 'windows' and not dbus_dep.found() 103353a5a1b3Sopenharmony_ci message = [ 103453a5a1b3Sopenharmony_ci 'You do not have D-Bus support enabled. It is strongly recommended', 103553a5a1b3Sopenharmony_ci 'that you enable D-Bus support if your platform supports it.', 103653a5a1b3Sopenharmony_ci 'Many parts of PulseAudio use D-Bus, from ConsoleKit interaction', 103753a5a1b3Sopenharmony_ci 'to the Device Reservation Protocol to speak to JACK, Bluetooth', 103853a5a1b3Sopenharmony_ci 'support and even a native control protocol for communicating and', 103953a5a1b3Sopenharmony_ci 'controlling the PulseAudio daemon itself.', 104053a5a1b3Sopenharmony_ci ] 104153a5a1b3Sopenharmony_ci warning('\n' + '\n'.join(message)) 104253a5a1b3Sopenharmony_ciendif 104353a5a1b3Sopenharmony_ci 104453a5a1b3Sopenharmony_ciif get_option('daemon') and host_machine.system() == 'linux' and not udev_dep.found() 104553a5a1b3Sopenharmony_ci message = [ 104653a5a1b3Sopenharmony_ci 'You do not have udev support enabled. It is strongly recommended', 104753a5a1b3Sopenharmony_ci 'that you enable udev support if your platform supports it as it is', 104853a5a1b3Sopenharmony_ci 'the primary method used to detect hardware audio devices (on Linux)', 104953a5a1b3Sopenharmony_ci 'and is thus a critical part of PulseAudio on that platform.', 105053a5a1b3Sopenharmony_ci ] 105153a5a1b3Sopenharmony_ci warning('\n' + '\n'.join(message)) 105253a5a1b3Sopenharmony_ciendif 105353a5a1b3Sopenharmony_ci 105453a5a1b3Sopenharmony_ciif get_option('daemon') and host_machine.system() != 'windows' and not speex_dep.found() 105553a5a1b3Sopenharmony_ci message = [ 105653a5a1b3Sopenharmony_ci 'You do not have speex support enabled. It is strongly recommended', 105753a5a1b3Sopenharmony_ci 'that you enable speex support if your platform supports it as it is', 105853a5a1b3Sopenharmony_ci 'the primary method used for audio resampling and is thus a critical', 105953a5a1b3Sopenharmony_ci 'part of PulseAudio on that platform.', 106053a5a1b3Sopenharmony_ci ] 106153a5a1b3Sopenharmony_ci warning('\n' + '\n'.join(message)) 106253a5a1b3Sopenharmony_ciendif 1063