# SPDX-License-Identifier: LGPL-2.1+
-#
-# Copyright 2017 Zbigniew Jędrzejewski-Szmek
project('systemd', 'c',
- version : '238',
+ version : '239',
license : 'LGPLv2+',
default_options: [
'c_std=gnu99',
meson_version : '>= 0.44',
)
-libsystemd_version = '0.22.0'
-libudev_version = '1.6.10'
+libsystemd_version = '0.23.0'
+libudev_version = '1.6.11'
# We need the same data in two different formats, ugh!
# Also, for hysterical reasons, we use different variable
systemdstatedir = join_paths(localstatedir, 'lib/systemd')
catalogstatedir = join_paths(systemdstatedir, 'catalog')
randomseeddir = join_paths(localstatedir, 'lib/systemd')
+profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
docdir = get_option('docdir')
if docdir == ''
substs.set('udevhwdbdir', udevhwdbdir)
substs.set('udevrulesdir', udevrulesdir)
substs.set('udevlibexecdir', udevlibexecdir)
+substs.set('environmentdir', environmentdir)
substs.set('catalogdir', catalogdir)
substs.set('tmpfilesdir', tmpfilesdir)
substs.set('sysusersdir', sysusersdir)
substs.set('sysctldir', sysctldir)
substs.set('binfmtdir', binfmtdir)
substs.set('modulesloaddir', modulesloaddir)
+substs.set('modprobedir', modprobedir)
substs.set('systemgeneratordir', systemgeneratordir)
substs.set('usergeneratordir', usergeneratordir)
substs.set('systemenvgeneratordir', systemenvgeneratordir)
'-Wold-style-definition',
'-Wpointer-arith',
'-Winit-self',
- '-Wdeclaration-after-statement',
'-Wfloat-equal',
'-Wsuggest-attribute=noreturn',
'-Werror=missing-prototypes',
'-Wstrict-aliasing=2',
'-Wwrite-strings',
'-Werror=overflow',
+ '-Werror=shift-count-overflow',
+ '-Werror=shift-overflow=2',
'-Wdate-time',
'-Wnested-externs',
'-ffast-math',
add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
-# arguments, just emits a warnings. So test for the "positive" version instead.
+# arguments, just emits a warning. So test for the "positive" version instead.
foreach arg : ['unused-parameter',
'missing-field-initializers',
'unused-result',
substs.set('SUSHELL', get_option('debug-shell'))
substs.set('DEBUGTTY', get_option('debug-tty'))
-debug = get_option('debug')
enable_debug_hashmap = false
enable_debug_mmap_cache = false
-if debug != ''
- foreach name : debug.split(',')
- if name == 'hashmap'
- enable_debug_hashmap = true
- elif name == 'mmap-cache'
- enable_debug_mmap_cache = true
- else
- message('unknown debug option "@0@", ignoring'.format(name))
- endif
- endforeach
-endif
+foreach name : get_option('debug')
+ if name == 'hashmap'
+ enable_debug_hashmap = true
+ elif name == 'mmap-cache'
+ enable_debug_mmap_cache = true
+ else
+ message('unknown debug option "@0@", ignoring'.format(name))
+ endif
+endforeach
conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
+conf.set10('VALGRIND', get_option('valgrind'))
+
#####################################################################
threads = dependency('threads')
'DNSSEC_' + default_dnssec.underscorify().to_upper())
substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
+dns_over_tls = get_option('dns-over-tls')
+if dns_over_tls != 'false'
+ have = (conf.get('HAVE_GNUTLS') == 1 and
+ libgnutls.version().version_compare('>=3.5.3'))
+ if dns_over_tls == 'true' and not have
+ error('DNS-over-TLS support was requested, but dependencies are not available')
+ endif
+else
+ have = false
+endif
+conf.set10('ENABLE_DNS_OVER_TLS', have)
+
+default_dns_over_tls = get_option('default-dns-over-tls')
+if fuzzer_build
+ default_dns_over_tls = 'no'
+endif
+if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
+ message('default-dns-over-tls cannot be set to opportunistic when DNS-over-TLS support is disabled. Setting default-dns-over-tls to no.')
+ default_dns_over_tls = 'no'
+endif
+conf.set('DEFAULT_DNS_OVER_TLS_MODE',
+ 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
+substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
+
want_importd = get_option('importd')
if want_importd != 'false'
have = (conf.get('HAVE_LIBCURL') == 1 and
'hostnamed',
'localed',
'machined',
+ 'portabled',
'networkd',
'timedated',
'timesyncd',
'src/shared',
'src/systemd',
'src/journal',
+ 'src/journal-remote',
+ 'src/nspawn',
'src/resolve',
'src/timesync',
'src/time-wait-sync',
subdir('src/kernel-install')
subdir('src/locale')
subdir('src/machine')
+subdir('src/portable')
subdir('src/nspawn')
subdir('src/resolve')
subdir('src/timedate')
link_with : [libshared,
libbasic_gcrypt,
libsystemd_resolve_core],
- dependencies : [threads,
- libgpg_error,
- libm,
- libidn],
+ dependencies : systemd_resolved_dependencies,
install_rpath : rootlibexecdir,
install : true,
install_dir : rootlibexecdir)
install : true)
public_programs += [exe]
+
+if get_option('link-systemctl-shared')
+ systemctl_link_with = [libshared]
+else
+ systemctl_link_with = [libsystemd_static,
+ libshared_static,
+ libjournal_client,
+ libbasic_gcrypt]
+endif
+
exe = executable('systemctl', 'src/systemctl/systemctl.c',
include_directories : includes,
- link_with : [libshared],
+ link_with : systemctl_link_with,
dependencies : [threads,
libcap,
libselinux,
install_dir : rootbindir)
public_programs += [exe]
+if conf.get('ENABLE_PORTABLED') == 1
+ executable('systemd-portabled',
+ systemd_portabled_sources,
+ include_directories : includes,
+ link_with : [libshared],
+ dependencies : [threads],
+ install_rpath : rootlibexecdir,
+ install : true,
+ install_dir : rootlibexecdir)
+
+ exe = executable('portablectl', 'src/portable/portablectl.c',
+ include_directories : includes,
+ link_with : [libshared],
+ dependencies : [threads],
+ install_rpath : rootlibexecdir,
+ install : true,
+ install_dir : rootlibexecdir)
+ public_programs += [exe]
+endif
+
foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
meson.add_install_script(meson_make_symlink,
join_paths(rootbindir, 'systemctl'),
s_j_remote = executable('systemd-journal-remote',
systemd_journal_remote_sources,
include_directories : includes,
- link_with : [libshared],
+ link_with : [libshared,
+ libsystemd_journal_remote],
dependencies : [threads,
libmicrohttpd,
libgnutls,
'src/core/mount-setup.h',
'src/core/loopback-setup.c',
'src/core/loopback-setup.h',
- include_directories : [includes, include_directories('src/nspawn')],
- link_with : [libshared],
- dependencies : [libacl,
- libblkid,
- libseccomp,
- libselinux],
+ include_directories : includes,
+ link_with : [libnspawn_core,
+ libshared],
+ dependencies : [libblkid],
install_rpath : rootlibexecdir,
install : true)
public_programs += [exe]
'tags',
output : 'tags',
command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
- custom_target(
+ run_target(
'ctags',
- output : 'ctags',
command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
endif
'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
'default DNSSEC mode: @0@'.format(default_dnssec),
+ 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
'default cgroup hierarchy: @0@'.format(default_hierarchy),
'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
['rfkill'],
['logind'],
['machined'],
+ ['portabled'],
['importd'],
['hostnamed'],
['timedated'],
['localed'],
['networkd'],
['resolve'],
+ ['DNS-over-TLS'],
['coredump'],
['polkit'],
['legacy pkla', install_polkit_pkla],
['gshadow'],
['debug hashmap'],
['debug mmap cache'],
+ ['valgrind', conf.get('VALGRIND') == 1],
]
if tuple.length() >= 2