project('wireplumber', ['c'], version : '0.4.14', license : 'MIT', meson_version : '>= 0.59.0', default_options : [ 'warning_level=1', 'buildtype=debugoptimized', ] ) wireplumber_api_version = '0.4' wireplumber_so_version = '0' 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') cc = meson.get_compiler('c') glib_req_version = '>= 2.62' add_project_arguments([ '-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_62', '-DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_62', ], language: 'c' ) add_project_arguments([ '-DGETTEXT_PACKAGE="@0@"'.format(meson.project_name()), ], language: 'c' ) 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: '>= 0.3.52') 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') subdir('lib') subdir('docs') if build_modules subdir('modules') endif subdir('src') subdir('po') 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)