wireplumber/meson.build
Wim Taymans ceed5dca7c meson: bump max channels to 128
Recompiling with the SPA_AUDIO_MAX_CHANNELS=128u defined, will create
larger audio_info structures that can hold more channels. Because
PipeWire is now using 128 channels, do the same in wireplumber so that
the generated PortConfig param can hold all channel positions.

See pipewire#4995
2025-11-26 10:35:00 +01:00

205 lines
6.3 KiB
Meson

project('wireplumber', ['c'],
version : '0.5.12',
license : 'MIT',
meson_version : '>= 0.59.0',
default_options : [
'warning_level=1',
'buildtype=debugoptimized',
]
)
wireplumber_version = meson.project_version()
version_arr = wireplumber_version.split('.')
wireplumber_version_major = version_arr[0]
wireplumber_version_minor = version_arr[1]
wireplumber_version_micro = version_arr[2]
wireplumber_api_version = '0.5'
wireplumber_so_version = '0'
wireplumber_libversion_minor = wireplumber_version_major.to_int() * 1000 + wireplumber_version_minor.to_int() * 100 + wireplumber_version_micro.to_int()
wireplumber_libversion = '@0@.@1@.0'.format(wireplumber_so_version, wireplumber_libversion_minor)
wireplumber_headers_dir = get_option('includedir') / 'wireplumber-' + wireplumber_api_version / 'wp'
wireplumber_bin_dir = get_option('prefix') / get_option('bindir')
wireplumber_module_dir = get_option('prefix') / get_option('libdir') / 'wireplumber-' + wireplumber_api_version
wireplumber_data_dir = get_option('prefix') / get_option('datadir') / 'wireplumber'
wireplumber_config_dir = get_option('prefix') / get_option('sysconfdir') / 'wireplumber'
wireplumber_locale_dir = get_option('prefix') / get_option('localedir')
wireplumber_doc_dir = get_option('prefix') / get_option('datadir') / 'doc' / 'wireplumber'
cc = meson.get_compiler('c')
glib_req_version = '>= 2.68'
add_project_arguments([
'-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_68',
'-DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_68',
], language: 'c'
)
add_project_arguments([
'-DGETTEXT_PACKAGE="@0@"'.format(meson.project_name()),
], language: 'c'
)
check_short_name = '''#define _GNU_SOURCE
#include <errno.h>
void main() { program_invocation_short_name; }
'''
if cc.compiles(check_short_name, name : 'check short_name')
add_project_arguments([
'-DHAS_SHORT_NAME',
], language: 'c'
)
endif
build_modules = get_option('modules')
build_daemon = get_option('daemon')
if build_daemon and not build_modules
error('\'modules\' option is required to be true when the \'daemon\' option is true')
endif
build_tools = get_option('tools')
if build_tools and not build_modules
error('\'modules\' option is required to be true when the \'tools\' option is enabled')
endif
glib_dep = dependency('glib-2.0', version : glib_req_version)
gobject_dep = dependency('gobject-2.0', version : glib_req_version)
gmodule_dep = dependency('gmodule-2.0', version : glib_req_version)
gio_dep = dependency('gio-2.0', version : glib_req_version)
giounix_dep = dependency('gio-unix-2.0', version : glib_req_version)
spa_dep = dependency('libspa-0.2', version: '>= 0.2')
pipewire_dep = dependency('libpipewire-0.3', version: '>= 1.0.2')
mathlib = cc.find_library('m')
threads_dep = dependency('threads')
libintl_dep = dependency('intl')
if build_modules
system_lua = get_option('system-lua')
if system_lua
if get_option('system-lua-version') != 'auto'
lua_version_requested = get_option('system-lua-version')
lua_dep = dependency('lua-' + lua_version_requested, required: false)
if not lua_dep.found()
lua_dep = dependency('lua' + lua_version_requested, required: false)
endif
if not lua_dep.found()
error('Specified Lua version "' + lua_version_requested + '" not found')
endif
else
lua_dep = dependency('lua-5.4', required: false)
if not lua_dep.found()
lua_dep = dependency('lua5.4', required: false)
endif
if not lua_dep.found()
lua_dep = dependency('lua54', required: false)
endif
if not lua_dep.found()
lua_dep = dependency('lua-5.3', required: false)
endif
if not lua_dep.found()
lua_dep = dependency('lua5.3', required: false)
endif
if not lua_dep.found()
lua_dep = dependency('lua53', required: false)
endif
if not lua_dep.found()
lua_dep = dependency('lua', version: ['>=5.3.0'], required: false)
endif
if not lua_dep.found()
error ('Could not find lua. Lua version 5.4 or 5.3 required')
endif
endif
else
lua_proj = subproject('lua', default_options: ['default_library=static'])
lua_dep = lua_proj.get_variable('lua_dep')
endif
summary({'Lua version': lua_dep.version() + (system_lua ? ' (system)' : ' (built-in)')})
endif
if build_modules
systemd = dependency('systemd', required: get_option('systemd'))
libsystemd_dep = dependency('libsystemd',required: get_option('systemd'))
libelogind_dep = dependency('libelogind', required: get_option('elogind'))
summary({'systemd conf data': systemd.found(),
'libsystemd': libsystemd_dep.found(),
'libelogind': libelogind_dep.found()}, bool_yn: true)
endif
gnome = import('gnome')
pkgconfig = import('pkgconfig')
fs = import('fs')
wp_lib_include_dir = include_directories('lib')
common_flags = [
'-fvisibility=hidden',
'-Wsuggest-attribute=format',
'-Wsign-compare',
'-Wpointer-arith',
'-Wpointer-sign',
'-Wformat',
'-Wformat-security',
'-Wimplicit-fallthrough',
'-Wmissing-braces',
'-Wtype-limits',
'-Wvariadic-macros',
'-Wno-missing-field-initializers',
'-Wno-unused-parameter',
'-Wno-pedantic',
'-Wold-style-declaration',
'-Wunused-result',
]
add_project_arguments(cc.get_supported_arguments(common_flags), language: 'c')
common_args = [
'-D_GNU_SOURCE',
'-DG_LOG_USE_STRUCTURED',
'-DWP_USE_LOCAL_LOG_TOPIC_IN_G_LOG',
'-DSPA_AUDIO_MAX_CHANNELS=128u',
]
add_project_arguments(common_args, language: 'c')
i18n_conf = files()
subdir('lib')
if build_modules
subdir('modules')
endif
subdir('src')
subdir('po')
subdir('docs')
if get_option('tests')
subdir('tests')
endif
builddir = meson.project_build_root()
srcdir = meson.project_source_root()
conf_uninstalled = configuration_data()
conf_uninstalled.set('MESON', '')
conf_uninstalled.set('MESON_SOURCE_ROOT', srcdir)
conf_uninstalled.set('MESON_BUILD_ROOT', builddir)
wp_uninstalled = configure_file(
input : 'wp-uninstalled.sh',
output : 'wp-uninstalled.sh.in',
configuration : conf_uninstalled,
)
wireplumber_uninstalled = custom_target('wp-uninstalled',
output : 'wp-uninstalled.sh',
input : wp_uninstalled,
build_by_default : true,
command : ['cp', '@INPUT@', '@OUTPUT@'],
)
devenv = environment({
'WIREPLUMBER_MODULE_DIR': builddir / 'modules',
'WIREPLUMBER_CONFIG_DIR': srcdir / 'src' / 'config',
'WIREPLUMBER_DATA_DIR': srcdir / 'src',
})
meson.add_devenv(devenv)