blob: 5716669f052de84ad2ba0c75a60da7ef183913fa [file] [log] [blame]
subdir('bios-settings.d')
subdir('pki')
subdir('remotes.d')
subdir('icons')
if get_option('bash_completion')
subdir('bash-completion')
endif
if get_option('fish_completion')
subdir('fish-completion')
endif
if get_option('tests')
subdir('device-tests')
endif
if build_daemon
subdir('motd')
endif
if get_option('tests')
if build_daemon
subdir('tests')
endif
endif
if build_standalone
install_data(
['fwupd.conf'],
install_tag: 'runtime',
install_dir: join_paths(sysconfdir, 'fwupd'),
install_mode: 'rw-r-----',
)
plugin_quirks += files('cfi.quirk', 'ds20.quirk', 'power.quirk', 'vendors.quirk')
endif
if get_option('metainfo')
custom_target(
'metainfo',
input: 'org.freedesktop.fwupd.metainfo.xml',
output: 'org.freedesktop.fwupd.metainfo.xml',
command: [generate_metainfo, '@INPUT@', '@OUTPUT@'],
install: true,
install_tag: 'doc',
install_dir: join_paths(datadir, 'metainfo'),
)
install_data(
['org.freedesktop.fwupd.svg'],
install_tag: 'doc',
install_dir: join_paths(datadir, 'icons', 'hicolor', 'scalable', 'apps'),
)
endif
if build_daemon
install_data(
['org.freedesktop.fwupd.conf'],
install_tag: 'runtime',
install_dir: join_paths(datadir, 'dbus-1', 'system.d'),
)
build_conf = configuration_data()
build_conf.set('libexecdir', libexecdir)
if libsystemd.found()
build_conf.set('bindir', bindir)
build_conf.set('datadir', datadir)
build_conf.set('localstatedir', localstatedir)
build_conf.set('systemd_service', 'SystemdService=fwupd.service')
rw_directories = []
if allow_uefi
rw_directories += [
'-/boot/efi',
'-/boot/EFI',
'-/boot/grub',
'-/efi/EFI',
'-/sys/firmware/efi/efivars',
]
endif
# not using ConfigurationDirectory further down
if get_option('prefix') != '/usr'
rw_directories += join_paths(sysconfdir, 'fwupd')
endif
dynamic_options = []
dynamic_options += ['ReadWritePaths=' + ' '.join(rw_directories)]
#pull configuration/cache/state from /etc and /var only if prefix is /usr
if get_option('prefix') == '/usr'
dynamic_options += 'ConfigurationDirectory=fwupd'
dynamic_options += 'StateDirectory=fwupd'
dynamic_options += 'CacheDirectory=fwupd'
endif
device_allows = [
'block-sd',
'char-aux',
'char-cpu/*',
'char-drm',
'char-gpiochip',
'char-hidraw',
'char-mei',
'char-mtd',
'char-tpm',
'char-usb',
'char-usb_device',
]
if allow_flashrom
device_allows += ['char-mem']
endif
if cc.has_header(
'linux/nvme_ioctl.h',
required: false,
)
device_allows += ['char-nvme']
endif
if allow_uefi
# for BLKSSZGET
device_allows += ['block-blkext']
endif
if get_option('plugin_modem_manager').allowed()
device_allows += ['char-wwan_port']
endif
foreach device_allow : device_allows
dynamic_options += ['DeviceAllow=' + device_allow + ' rw']
endforeach
# allow-list, see `systemd-analyze syscall-filter` for what each group adds
syscall_filter = [
'@basic-io',
'@file-system',
'@io-event',
'@ipc',
'@network-io',
'@process',
'@sync',
'@signal', # for g_local_file_monitor_new
'@timer', # for usbi_create_timer
'@chown', # for sqlite3Step
'ioctl',
'uname',
'fadvise64',
'sysinfo', # for sysconf
'madvise', # for mtrim
'mremap', # for g_realloc
'splice',
'vmsplice',
'copy_file_range', # for g_file_copy
]
if allow_flashrom
syscall_filter += ['@raw-io']
endif
dynamic_options += ['SystemCallFilter=' + ' '.join(syscall_filter)]
if supported_build
dynamic_options += ['Environment="FWUPD_SYSCALL_FILTER=systemd"']
dynamic_options += ['SystemCallErrorNumber=EPERM']
else
# to debug what additional syscalls are required, we set SystemCallErrorNumber=SIGSYS
# and then can do `coredumpctl debug` and get the syscall number with `(gdb) p $rax`
dynamic_options += ['SystemCallErrorNumber=SIGSYS']
endif
if not supported_build
dynamic_options += ['Environment="G_DEBUG=fatal-criticals"']
endif
build_conf.set('dynamic_options', '\n'.join(dynamic_options))
build_conf.set('motd_dir', motd_dir)
# replace @dynamic_options@
configure_file(
input: 'fwupd.service.in',
output: 'fwupd.service',
configuration: build_conf,
install: true,
install_tag: 'runtime',
install_dir: systemdunitdir,
)
# for various plugins
install_data(
['fwupd-i2c.conf'],
install_tag: 'runtime',
install_dir: systemd_modules_load_dir,
)
# for activation
configure_file(
input: 'fwupd.shutdown.in',
output: 'fwupd.shutdown',
configuration: build_conf,
install: true,
install_tag: 'runtime',
install_dir: systemd_shutdown_dir,
)
else
build_conf.set('systemd_service', '')
endif
configure_file(
input: 'org.freedesktop.fwupd.service.in',
output: 'org.freedesktop.fwupd.service',
configuration: build_conf,
install: true,
install_tag: 'runtime',
install_dir: join_paths(datadir, 'dbus-1', 'system-services'),
)
if launchctl.found()
con2 = configuration_data()
con2.set('libexecdir', libexecdir)
con2.set('dbus_socket_address', get_option('dbus_socket_address'))
configure_file(
input: 'org.freedesktop.fwupd.plist',
output: 'org.freedesktop.fwupd.plist',
configuration: con2,
install_tag: 'runtime',
install_dir: get_option('launchd_agent_dir'),
)
endif
endif