pipewire/meson_options.txt
Niklāvs Koļesņikovs 5e0bfa0beb
RLIMITs: add support for generating limits.d files
This commit implements generating /etc/security/limits.d/20-pw-defaults.conf and
/etc/security/limits.d/25-pw-rlimits.conf files. The numbering is arbitrary and
may very well warrant being in the reverse order, however `man 5 limits.conf`
does not appear to specify the parsing order or even say exactly how multiples
matches will resolve, so the value can be adjusted later, if required.

The actual limit values, the match rule and even whether each file is to be
installed can be changed via the build system before compilation. Likewise
the files can be modified or (re)moved during distro package building phase.

The 20-pw-defaults.conf should only be installed on legacy systems lacking both
a modern kernel and up to date systemd, because all it does is set the current
Linux default. Accordingly its not installed by default.

Signed-off-by: Niklāvs Koļesņikovs <89q1r14hd@relay.firefox.com>
2023-02-14 17:37:59 +02:00

320 lines
11 KiB
Meson

option('docdir',
type : 'string',
description : 'Directory for installing documentation to (defaults to pipewire_datadir/doc/meson.project_name() )')
option('docs',
description: 'Build documentation',
type: 'feature',
value: 'disabled')
option('examples',
description: 'Build examples',
type: 'feature',
value: 'enabled')
option('man',
description: 'Build manpages',
type: 'feature',
value: 'auto')
option('tests',
description: 'Build tests',
type: 'feature',
value: 'enabled',
yield : true)
option('installed_tests',
description: 'Install manual and automated test executables',
type: 'feature',
value: 'disabled')
option('gstreamer',
description: 'Build GStreamer plugins',
type: 'feature',
value: 'auto')
option('gstreamer-device-provider',
description: 'Build GStreamer device provider plugin',
type: 'feature',
value: 'auto')
option('systemd',
description: 'Enable systemd integration',
type: 'feature',
value: 'auto')
option('systemd-system-service',
description: 'Install systemd system service file',
type: 'feature',
value: 'disabled')
option('systemd-user-service',
description: 'Install systemd user service file (ignored without systemd)',
type: 'feature',
value: 'enabled')
option('pipewire-alsa',
description: 'Enable pipewire-alsa integration',
type: 'feature',
value: 'auto')
option('pipewire-jack',
description: 'Enable pipewire-jack integration',
type: 'feature',
value: 'enabled')
option('pipewire-v4l2',
description: 'Enable pipewire-v4l2 integration',
type: 'feature',
value: 'enabled')
option('jack-devel',
description: 'Install jack development files',
type: 'boolean',
value: 'false')
option('libjack-path',
description: 'Where to install the libjack.so library',
type: 'string')
option('libv4l2-path',
description: 'Where to install the libpw-v4l2.so library',
type: 'string')
option('spa-plugins',
description: 'Enable spa plugins integration',
type: 'feature',
value: 'enabled')
option('alsa',
description: 'Enable alsa spa plugin integration',
type: 'feature',
value: 'auto')
option('audiomixer',
description: 'Enable audiomixer spa plugin integration',
type: 'feature',
value: 'enabled')
option('audioconvert',
description: 'Enable audioconvert spa plugin integration',
type: 'feature',
value: 'enabled')
option('bluez5',
description: 'Enable bluez5 spa plugin integration',
type: 'feature',
value: 'auto')
option('bluez5-backend-hsp-native',
description: 'Enable HSP in native backend in bluez5 spa plugin',
type: 'feature',
value: 'enabled')
option('bluez5-backend-hfp-native',
description: 'Enable HFP in native backend in bluez5 spa plugin',
type: 'feature',
value: 'enabled')
option('bluez5-backend-native-mm',
description: 'Enable ModemManager in native backend in bluez5 spa plugin',
type: 'feature',
value: 'disabled')
option('bluez5-backend-ofono',
description: 'Enable oFono HFP backend in bluez5 spa plugin (no dependency on oFono)',
type: 'feature',
value: 'enabled')
option('bluez5-backend-hsphfpd',
description: 'Enable hsphfpd backend in bluez5 spa plugin (no dependency on hsphfpd)',
type: 'feature',
value: 'enabled')
option('bluez5-codec-aptx',
description: 'Enable AptX Qualcomm open source codec implementation',
type: 'feature',
value: 'auto')
option('bluez5-codec-ldac',
description: 'Enable LDAC Sony open source codec implementation',
type: 'feature',
value: 'auto')
option('bluez5-codec-aac',
description: 'Enable Fraunhofer FDK AAC open source codec implementation',
type: 'feature',
value: 'auto')
option('bluez5-codec-lc3plus',
description: 'Enable LC3plus open source codec implementation',
type: 'feature',
value: 'auto')
option('bluez5-codec-opus',
description: 'Enable Opus open source codec implementation',
type: 'feature',
value: 'auto')
option('bluez5-codec-lc3',
description: 'Enable LC3 open source codec implementation',
type: 'feature',
value: 'disabled')
option('control',
description: 'Enable control spa plugin integration',
type: 'feature',
value: 'enabled')
option('audiotestsrc',
description: 'Enable audiotestsrc spa plugin integration',
type: 'feature',
value: 'enabled')
option('ffmpeg',
description: 'Enable ffmpeg spa plugin integration',
type: 'feature',
value: 'disabled')
option('jack',
description: 'Enable jack spa plugin integration',
type: 'feature',
value: 'auto')
option('support',
description: 'Enable support spa plugin integration',
type: 'feature',
value: 'enabled')
option('evl',
description: 'Enable EVL support spa plugin integration',
type: 'feature',
value: 'disabled')
option('test',
description: 'Enable test spa plugin integration',
type: 'feature',
value: 'disabled')
option('v4l2',
description: 'Enable v4l2 spa plugin integration',
type: 'feature',
value: 'auto')
option('dbus',
description: 'Enable code that depends on dbus',
type: 'feature',
value: 'enabled')
option('libcamera',
description: 'Enable libcamera spa plugin integration',
type: 'feature',
value: 'auto')
option('videoconvert',
description: 'Enable videoconvert spa plugin integration',
type: 'feature',
value: 'enabled')
option('videotestsrc',
description: 'Enable videotestsrc spa plugin integration',
type: 'feature',
value: 'enabled')
option('volume',
description: 'Build the legacy volume spa plugin',
type: 'feature',
value: 'disabled')
option('vulkan',
description: 'Enable vulkan spa plugin integration',
type: 'feature',
value: 'disabled')
option('pw-cat',
description: 'Build pw-cat/pw-play/pw-record',
type: 'feature',
value: 'auto')
option('pw-cat-ffmpeg',
description: 'Enable FFmpeg integration in pw-cat/pw-play/pw-record',
type: 'feature',
value: 'disabled')
option('udev',
description: 'Enable Udev integration',
type: 'feature',
value: 'auto')
option('udevrulesdir',
type : 'string',
description : 'Directory for udev rules (defaults to /lib/udev/rules.d)')
option('systemd-system-unit-dir',
type : 'string',
description : 'Directory for system systemd units (defaults to /usr/lib/systemd/system)')
option('systemd-user-unit-dir',
type : 'string',
description : 'Directory for user systemd units (defaults to /usr/lib/systemd/user)')
option('sdl2',
description: 'Enable code that depends on SDL 2',
type: 'feature',
value: 'auto')
option('sndfile',
description: 'Enable code that depends on libsndfile',
type: 'feature',
value: 'auto')
option('libmysofa',
description: 'Enable code that depends on libmysofa',
type: 'feature',
value: 'auto')
option('libpulse',
description: 'Enable code that depends on libpulse',
type: 'feature',
value: 'auto')
option('roc',
description: 'Enable code that depends on roc toolkit',
type: 'feature',
value: 'auto')
option('avahi',
description: 'Enable code that depends on avahi',
type: 'feature',
value: 'auto')
option('echo-cancel-webrtc',
description : 'Enable WebRTC-based echo canceller',
type : 'feature',
value : 'auto')
option('libusb',
description: 'Enable code that depends on libusb',
type: 'feature',
value: 'auto')
option('session-managers',
description : 'Session managers to build (can be [] for none or an absolute path)',
type : 'array',
value : ['wireplumber'])
option('raop',
description: 'Enable module for Remote Audio Output Protocol',
type: 'feature',
value: 'auto')
option('lv2',
description: 'Enable loading of LV2 plugins',
type: 'feature',
value: 'auto')
option('x11',
description: 'Enable code that depends on X11',
type: 'feature',
value: 'auto')
option('x11-xfixes',
description: 'Enable code that depends on XFixes',
type: 'feature',
value: 'auto')
option('libcanberra',
description: 'Enable code that depends on libcanberra',
type: 'feature',
value: 'auto')
option('legacy-rtkit',
description: 'Build legacy rtkit module',
type: 'boolean',
value: 'true')
option('avb',
description: 'Enable AVB code',
type: 'feature',
value: 'auto')
option('flatpak',
description: 'Enable Flatpak support',
type: 'feature',
value: 'enabled')
option('readline',
description: 'Enable code that depends on libreadline',
type: 'feature',
value: 'auto')
option('gsettings',
description: 'Enable code that depends on gsettings',
type: 'feature',
value: 'auto')
option('compress-offload',
description: 'Enable ALSA Compress-Offload support',
type: 'feature',
value: 'disabled')
option('pam-defaults-install',
description: 'Install limits.d file modifying defaults for all PAM users. Only for old kernels/systemd!',
type: 'boolean',
value: 'false')
option('pam-memlock-default',
description : 'The default memlock value for any PAM user in kilobytes. Multiples of 64 recommended.',
type : 'integer',
min: 640,
value: 8192)
option('rlimits-install',
description: 'Install PAM limits.d file. Voids all following rlimits-* options, if false',
type: 'boolean',
value: 'true')
option('rlimits-match',
description : 'PAM match rule for the generated limits.d file. @<name> denotes matching a group.',
type : 'string',
value: '@pipewire')
option('rlimits-rtprio',
description : 'RR and FIFO scheduler priority permitted for realtime threads of the matching user(s)',
type : 'integer',
min: 11,
max: 99,
value: 95)
option('rlimits-memlock',
description : 'kB of memory each process of the user matched by the rule can lock. Can be unlimited .',
type : 'string',
value: '4194304')
option('rlimits-nice',
description : 'Not niceness permitted for non-realtime threads of the matching user(s)',
type : 'integer',
min: -20,
max: -1,
value: -19)