diff --git a/.gitignore b/.gitignore index 0e6ce41d7..da8784ccd 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,9 @@ cscope.out cscope.in.out cscope.po.out Makefile +subprojects/lua* +subprojects/wireplumber +subprojects/packagecache # Created by https://www.gitignore.io/api/vim diff --git a/meson_options.txt b/meson_options.txt index f47536bc2..905a0161b 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -9,10 +9,6 @@ option('examples', description: 'Build examples', type: 'feature', value: 'enabled') -option('media-session', - description: 'Build and install pipewire-media-session', - type: 'feature', - value: 'auto') option('man', description: 'Build manpages', type: 'feature', @@ -195,3 +191,16 @@ option('echo-cancel-webrtc', description : 'Enable WebRTC-based echo canceller', type : 'feature', value : 'auto') +option('media-session', + description: 'Build and install pipewire-media-session', + type: 'feature', + value: 'auto') +option('wireplumber', + description: 'Build and install wireplumber (subproject)', + type: 'feature', + value: 'auto') +option('session-manager', + description : 'Session manager to build and use in the uninstalled environment', + type : 'combo', + choices : ['media-session', 'wireplumber'], + value : 'media-session') diff --git a/src/daemon/meson.build b/src/daemon/meson.build index dd1de610e..7ed2d6242 100644 --- a/src/daemon/meson.build +++ b/src/daemon/meson.build @@ -9,13 +9,14 @@ pipewire_c_args = [ conf_config = configuration_data() conf_config.set('VERSION', '"@0@"'.format(pipewire_version)) conf_config.set('PIPEWIRE_CONFIG_DIR', pipewire_configdir) -conf_config.set('media_session_path', pipewire_bindir / 'pipewire-media-session') +conf_config.set('session_manager_path', pipewire_bindir / 'pipewire-media-session') +conf_config.set('session_manager_args', '') conf_config.set('pipewire_path', pipewire_bindir / 'pipewire') conf_config.set('pipewire_pulse_path', pipewire_bindir / 'pipewire-pulse') conf_config.set('comment', '#') conf_config_uninstalled = conf_config -conf_config_uninstalled.set('media_session_path', +conf_config_uninstalled.set('session_manager_path', meson.build_root() / 'src' / 'examples' / 'pipewire-media-session') conf_config_uninstalled.set('pipewire_path', meson.build_root() / 'src' / 'daemon' / 'pipewire') @@ -23,6 +24,25 @@ conf_config_uninstalled.set('pipewire_pulse_path', meson.build_root() / 'src' / 'daemon' / 'pipewire-pulse') conf_config_uninstalled.set('comment', '') +# Build WirePlumber if requested, and set it up in the config files +build_wp = get_option('wireplumber') +sm_choice = get_option('session-manager') + +if build_wp.disabled() and (sm_choice == 'wireplumber') + error('option to build wireplumber is disabled, ' + + 'but the requested session-manager is wireplumber') +elif build_wp.enabled() or (build_wp.auto() and (sm_choice == 'wireplumber')) + wp_proj = subproject('wireplumber', required : true) + wp_bindir = wp_proj.get_variable('wireplumber_bin_dir', pipewire_bindir) + + conf_config.set('session_manager_path', wp_bindir / 'wireplumber') + + # wp-uninstalled.sh -b path/to/wp/build/root wireplumber + conf_config_uninstalled.set('session_manager_path', + meson.source_root() / 'subprojects' / 'wireplumber' / 'wp-uninstalled.sh') + conf_config_uninstalled.set('session_manager_args', + '-b ' + meson.build_root() / 'subprojects' / 'wireplumber' + ' wireplumber') +endif conf_files = [ 'pipewire.conf', diff --git a/src/daemon/pipewire.conf.in b/src/daemon/pipewire.conf.in index bd84feeff..f326f1b30 100644 --- a/src/daemon/pipewire.conf.in +++ b/src/daemon/pipewire.conf.in @@ -130,7 +130,7 @@ context.modules = [ # access.allowed to list an array of paths of allowed # apps. #access.allowed = [ - # @media_session_path@ + # @session_manager_path@ #] # An array of rejected paths. @@ -234,7 +234,7 @@ context.exec = [ # but it is better to start it as a systemd service. # Run the session manager with -h for options. # - @comment@{ path = "@media_session_path@" args = "" } + @comment@{ path = "@session_manager_path@" args = "@session_manager_args@" } # # You can optionally start the pulseaudio-server here as well # but it is better to start it as a systemd service. diff --git a/subprojects/wireplumber.wrap b/subprojects/wireplumber.wrap new file mode 100644 index 000000000..0153b2acc --- /dev/null +++ b/subprojects/wireplumber.wrap @@ -0,0 +1,3 @@ +[wrap-git] +url = https://gitlab.freedesktop.org/pipewire/wireplumber.git +revision = head