man_config.set('version', meson.project_version())
man_config.set('date', run_command('../scripts/get-date.sh', check: true).stdout())
man_config.set('keyfile_default', keyfile_default)
-man_config.set('man_seealso_systemd', systemd ? '\\fIkresd.systemd(7)\\fR, ' : '')
+man_config.set('man_seealso_systemd',
+ libsystemd.found() ? '\\fIkresd.systemd(7)\\fR, ' : '')
man_kresd = configure_file(
input: 'kresd.8.in',
group = get_option('group')
## Systemd
-opt_systemd = get_option('systemd')
-systemd = false
-systemd_socket = false
-if opt_systemd != 'disabled'
- message('--- systemd integration ---')
- libsystemd = dependency('libsystemd', version: '>=227',
- required: opt_systemd == 'enabled')
- if libsystemd.found()
- systemd = true
- systemd_socket = opt_systemd != 'nosocket'
- else
- libsystemd = dependency('libsystemd', version: '>=214',
- required: opt_systemd == 'nosocket')
- if libsystemd.found()
- systemd = true
- systemd_socket = false
- endif
- endif
- if systemd
- pkgconf_systemd = dependency('systemd')
- endif
- message('---------------------------')
+message('--- systemd socket activation ---')
+libsystemd = dependency('libsystemd', version: '>=227', required: false)
+systemd_unit_files = get_option('systemd_unit_files')
+if systemd_unit_files == 'enabled' and not libsystemd.found()
+ error('systemd_unit_files=enabled requires libsystemd >= 227')
endif
+message('---------------------------')
+
+## Compiler args
c_args = [
'-D_GNU_SOURCE',
'-Wtype-limits',
libzscanner.get_pkgconfig_variable('soname'))
conf_data.set_quoted('libknot_SONAME',
libknot.get_pkgconfig_variable('soname'))
-conf_data.set('HAS_SYSTEMD', systemd)
+conf_data.set('HAS_SYSTEMD', libsystemd.found())
kresconfig = configure_file(
output: 'kresconfig.h',
subdir('etc')
# systemd integration
-if systemd
+if systemd_unit_files != 'disabled'
subdir('systemd')
endif
# NOTE: ternary operator in format() not supported
# https://github.com/mesonbuild/meson/issues/2404
summary_managed_ta = managed_ta ? 'enabled' : 'disabled'
-summary_systemd = systemd ? 'enabled' : 'disabled'
-summary_systemd_socket = systemd_socket ? 'enabled' : 'disabled'
+summary_systemd_socket = libsystemd.found() ? 'enabled' : 'disabled'
summary_build_client = build_client ? 'enabled' : 'disabled'
summary_build_doc = build_doc ? 'enabled' : 'disabled'
summary_build_extra_tests = build_extra_tests ? 'enabled' : 'disabled'
keyfile_default: @0@'''.format(keyfile_default) + '''
managed_ta: @0@'''.format(summary_managed_ta) + '''
- systemd: @0@'''.format(summary_systemd) + '''
+ systemd:
socket activation: @0@'''.format(summary_systemd_socket) + '''
+ unit_files: @0@'''.format(systemd_unit_files) + '''
work_dir: @0@'''.format(systemd_work_dir) + '''
optional components
systemd_work_dir = join_paths(
prefix, get_option('localstatedir'), 'cache', 'knot-resolver')
run_dir = join_paths('/run', 'knot-resolver')
-systemd_unit_dir = pkgconf_systemd.get_pkgconfig_variable('systemdsystemunitdir')
-systemd_tmpfiles_dir = pkgconf_systemd.get_pkgconfig_variable('tmpfilesdir')
+systemd_unit_dir = join_paths(prefix, 'lib', 'systemd', 'system')
+systemd_tmpfiles_dir = join_paths(prefix, 'lib', 'tmpfiles.d')
## configuration
systemd_config = configuration_data()
systemd_config.set('etc_dir', etc_dir)
systemd_config.set('run_dir', run_dir)
-# TODO Restart=on-abnormal
-
-if systemd_socket
+if systemd_unit_files == 'enabled'
## unit files
kresd_service = configure_file(
input: 'kresd@.service.in',
],
install_dir: join_paths(examples_dir, 'kresd-tls.socket.d'),
)
-else
+else if systemd_unit_files == 'nosocket'
subdir('nosocket')
endif