blob: 323221bb43c77cd66c6374d14c6304c6c40e99a3 [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01002
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003project('systemd', 'c',
Zbigniew Jędrzejewski-Szmek7eb8a472019-04-03 10:00:14 +02004 version : '242',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04005 license : 'LGPLv2+',
6 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04007 'c_std=gnu99',
8 'prefix=/usr',
9 'sysconfdir=/etc',
10 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040011 ],
Yu Watanabe7a6397d2018-05-15 20:18:24 +090012 meson_version : '>= 0.46',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040013 )
14
Lennart Poetteringbfe6bb22019-03-27 14:23:57 +010015libsystemd_version = '0.26.0'
16libudev_version = '1.6.14'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020017
Yu Watanabe348b4432018-05-07 18:17:35 +090018# We need the same data in two different formats, ugh!
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040019# Also, for hysterical reasons, we use different variable
20# names, sometimes. Not all variables are included in every
21# set. Ugh, ugh, ugh!
22conf = configuration_data()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010023conf.set('PROJECT_VERSION', meson.project_version())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040024
25substs = configuration_data()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010026substs.set('PROJECT_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
27substs.set('PROJECT_VERSION', meson.project_version())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040028
Davide Cavalca1485aac2019-02-27 11:19:07 -050029# This is to be used instead of meson.source_root(), as the latter will return
30# the wrong result when systemd is being built as a meson subproject
31project_source_root = meson.current_source_dir()
Zbigniew Jędrzejewski-Szmeka0b15b42019-06-07 14:41:36 +020032relative_source_path = run_command('realpath',
33 '--relative-to=@0@'.format(meson.current_build_dir()),
34 project_source_root).stdout().strip()
35conf.set_quoted('RELATIVE_SOURCE_PATH', relative_source_path)
Davide Cavalca1485aac2019-02-27 11:19:07 -050036
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020037want_ossfuzz = get_option('oss-fuzz')
38want_libfuzzer = get_option('llvm-fuzz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +000039want_fuzzbuzz = get_option('fuzzbuzz')
40if want_ossfuzz + want_libfuzzer + want_fuzzbuzz > 1
41 error('only one of oss-fuzz, llvm-fuzz or fuzzbuzz can be specified')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020042endif
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +000043
44skip_deps = want_ossfuzz or want_libfuzzer
45fuzzer_build = want_ossfuzz or want_libfuzzer or want_fuzzbuzz
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020046
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040047#####################################################################
48
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040049# Try to install the git pre-commit hook
Davide Cavalca1485aac2019-02-27 11:19:07 -050050git_hook = run_command(join_paths(project_source_root, 'tools/add-git-hook.sh'))
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040051if git_hook.returncode() == 0
52 message(git_hook.stdout().strip())
53endif
54
55#####################################################################
56
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010057if get_option('split-usr') == 'auto'
58 split_usr = run_command('test', '-L', '/bin').returncode() != 0
59else
60 split_usr = get_option('split-usr') == 'true'
61endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010062conf.set10('HAVE_SPLIT_USR', split_usr,
63 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010064
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010065if get_option('split-bin') == 'auto'
66 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
67else
68 split_bin = get_option('split-bin') == 'true'
69endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010070conf.set10('HAVE_SPLIT_BIN', split_bin,
71 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010072
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010073rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010074# Unusual rootprefixdir values are used by some distros
75# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010076rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010077if rootprefixdir == ''
78 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010079endif
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010080rootprefixdir_noslash = rootprefixdir == '/' ? '' : rootprefixdir
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040081
82sysvinit_path = get_option('sysvinit-path')
83sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090084conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020085 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040086
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020087conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
88conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
Lennart Poettering09dad042018-11-15 09:50:42 +010089conf.set('HIGH_RLIMIT_NOFILE', 512*1024)
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020090
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010091# join_paths ignores the preceding arguments if an absolute component is
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040092# encountered, so this should canonicalize various paths when they are
93# absolute or relative.
94prefixdir = get_option('prefix')
95if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040096 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040097endif
98bindir = join_paths(prefixdir, get_option('bindir'))
99libdir = join_paths(prefixdir, get_option('libdir'))
100sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
101includedir = join_paths(prefixdir, get_option('includedir'))
102datadir = join_paths(prefixdir, get_option('datadir'))
103localstatedir = join_paths('/', get_option('localstatedir'))
104
105rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +0100106rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400107rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
108
109rootlibdir = get_option('rootlibdir')
110if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400111 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400112endif
113
114# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +0200115pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
116pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400117polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
118polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
119polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400120xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900121rpmmacrosdir = get_option('rpmmacrosdir')
122if rpmmacrosdir != 'no'
123 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
124endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200125modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400126
127# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400128pkgdatadir = join_paths(datadir, 'systemd')
129environmentdir = join_paths(prefixdir, 'lib/environment.d')
130pkgsysconfdir = join_paths(sysconfdir, 'systemd')
131userunitdir = join_paths(prefixdir, 'lib/systemd/user')
132userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
133tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
134sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
135sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
136binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
137modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
138networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
139pkgincludedir = join_paths(includedir, 'systemd')
140systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
141usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
142systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
143userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
144systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
145systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
146systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
147systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
148udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400149udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
150udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
151catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
152kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
153factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400154bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
155testsdir = join_paths(prefixdir, 'lib/systemd/tests')
156systemdstatedir = join_paths(localstatedir, 'lib/systemd')
157catalogstatedir = join_paths(systemdstatedir, 'catalog')
158randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200159profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400160
tblume75aaade2018-02-01 22:46:15 +0100161docdir = get_option('docdir')
162if docdir == ''
163 docdir = join_paths(datadir, 'doc/systemd')
164endif
165
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400166dbuspolicydir = get_option('dbuspolicydir')
167if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400168 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400169endif
170
171dbussessionservicedir = get_option('dbussessionservicedir')
172if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400173 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400174endif
175
176dbussystemservicedir = get_option('dbussystemservicedir')
177if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400178 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400179endif
180
181pamlibdir = get_option('pamlibdir')
182if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400183 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400184endif
185
186pamconfdir = get_option('pamconfdir')
187if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400188 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400189endif
190
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100191memory_accounting_default = get_option('memory-accounting-default')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200192status_unit_format_default = get_option('status-unit-format-default')
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100193
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400194conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400195conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400196conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
197conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
198conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400199conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100200
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100201conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100202
Michael Bieble17e5ba2017-04-13 10:30:56 -0400203conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400204conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
205conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400206conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
207conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
208conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
209conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100210conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100211conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400212conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
213conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
214conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
215conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
216conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100217conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400218conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400219conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
220conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400221conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
222conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
223conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
224conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
225conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
226conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400227conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
228conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700229conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700230conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400231conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400232conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400233conf.set_quoted('LIBDIR', libdir)
234conf.set_quoted('ROOTLIBDIR', rootlibdir)
235conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
236conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400237conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
238conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
Lennart Poettering1d7579c2018-10-10 21:20:08 +0200239conf.set_quoted('SYSTEMD_IMPORT_FS_PATH', join_paths(rootlibexecdir, 'systemd-import-fs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400240conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
241conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
242conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
243conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200244conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100245conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200246conf.set('STATUS_UNIT_FORMAT_DEFAULT', 'STATUS_UNIT_FORMAT_' + status_unit_format_default.to_upper())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400247
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400248substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100249substs.set('rootprefix', rootprefixdir)
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +0100250substs.set('rootprefix_noslash', rootprefixdir_noslash)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400251substs.set('exec_prefix', prefixdir)
252substs.set('libdir', libdir)
253substs.set('rootlibdir', rootlibdir)
254substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100255substs.set('sysconfdir', sysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400256substs.set('bindir', bindir)
257substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400258substs.set('rootlibexecdir', rootlibexecdir)
259substs.set('systemunitdir', systemunitdir)
260substs.set('userunitdir', userunitdir)
261substs.set('systempresetdir', systempresetdir)
262substs.set('userpresetdir', userpresetdir)
263substs.set('udevhwdbdir', udevhwdbdir)
264substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400265substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200266substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400267substs.set('catalogdir', catalogdir)
268substs.set('tmpfilesdir', tmpfilesdir)
269substs.set('sysusersdir', sysusersdir)
270substs.set('sysctldir', sysctldir)
271substs.set('binfmtdir', binfmtdir)
272substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200273substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400274substs.set('systemgeneratordir', systemgeneratordir)
275substs.set('usergeneratordir', usergeneratordir)
276substs.set('systemenvgeneratordir', systemenvgeneratordir)
277substs.set('userenvgeneratordir', userenvgeneratordir)
278substs.set('systemshutdowndir', systemshutdowndir)
279substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400280substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400281substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
282substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400283substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
284substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
285substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100286substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200287substs.set('STATUS_UNIT_FORMAT_DEFAULT', status_unit_format_default)
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200288substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmeke9bbff12019-05-09 13:23:50 +0200289substs.set('BUILD_ROOT', meson.current_build_dir())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400290
291#####################################################################
292
293cc = meson.get_compiler('c')
294pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400295check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100296meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400297
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200298want_tests = get_option('tests')
299slow_tests = want_tests != 'false' and get_option('slow-tests')
300install_tests = get_option('install-tests')
301
James Hilliard46e63a22018-12-27 09:16:20 +0800302if add_languages('cpp', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200303 # Used only for tests
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200304 cxx_cmd = ' '.join(meson.get_compiler('cpp').cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200305else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200306 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400307endif
308
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500309if want_libfuzzer
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +0200310 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer', required : false)
311 if fuzzing_engine.found()
312 add_project_arguments('-fsanitize-coverage=trace-pc-guard,trace-cmp', language : 'c')
313 elif cc.has_argument('-fsanitize=fuzzer-no-link')
314 add_project_arguments('-fsanitize=fuzzer-no-link', language : 'c')
315 else
316 error('Looks like neither libFuzzer nor -fsanitize=fuzzer-no-link is supported')
317 endif
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200318elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500319 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000320elif want_fuzzbuzz
321 fuzzing_engine = meson.get_compiler('cpp').find_library(get_option('fuzzbuzz-engine'), dirs: get_option('fuzzbuzz-engine-dir'))
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500322endif
323
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900324possible_cc_flags = [
325 '-Wextra',
326 '-Werror=undef',
327 '-Wlogical-op',
328 '-Wmissing-include-dirs',
329 '-Wold-style-definition',
330 '-Wpointer-arith',
331 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900332 '-Wfloat-equal',
333 '-Wsuggest-attribute=noreturn',
334 '-Werror=missing-prototypes',
335 '-Werror=implicit-function-declaration',
336 '-Werror=missing-declarations',
337 '-Werror=return-type',
338 '-Werror=incompatible-pointer-types',
339 '-Werror=format=2',
340 '-Wstrict-prototypes',
341 '-Wredundant-decls',
342 '-Wmissing-noreturn',
343 '-Wimplicit-fallthrough=5',
344 '-Wshadow',
345 '-Wendif-labels',
346 '-Wstrict-aliasing=2',
347 '-Wwrite-strings',
348 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200349 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200350 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900351 '-Wdate-time',
352 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700353
354 # negative arguments are correctly detected starting with meson 0.46.
355 '-Wno-unused-parameter',
356 '-Wno-missing-field-initializers',
357 '-Wno-unused-result',
358 '-Wno-format-signedness',
Zbigniew Jędrzejewski-Szmekeed33622019-03-07 10:56:15 +0100359 '-Wno-error=#warnings', # clang
360 '-Wno-string-plus-int', # clang
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700361
362 # work-around for gcc 7.1 turning this on on its own.
363 '-Wno-error=nonnull',
364
365 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
366 # optimizations enabled, producing essentially false positives.
367 '-Wno-maybe-uninitialized',
368
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900369 '-ffast-math',
370 '-fno-common',
371 '-fdiagnostics-show-option',
372 '-fno-strict-aliasing',
373 '-fvisibility=hidden',
374 '-fstack-protector',
375 '-fstack-protector-strong',
376 '--param=ssp-buffer-size=4',
377]
378
379# --as-needed and --no-undefined are provided by meson by default,
380# run mesonconf to see what is enabled
381possible_link_flags = [
382 '-Wl,-z,relro',
383 '-Wl,-z,now',
384]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400385
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900386if cc.get_id() == 'clang'
387 possible_cc_flags += [
388 '-Wno-typedef-redefinition',
389 '-Wno-gnu-variable-sized-type-not-at-end',
390 ]
391endif
392
393if get_option('buildtype') != 'debug'
394 possible_cc_flags += [
395 '-ffunction-sections',
396 '-fdata-sections',
397 ]
398
399 possible_link_flags += '-Wl,--gc-sections'
400endif
401
Zbigniew Jędrzejewski-Szmeka73f6212019-03-28 09:44:02 +0100402if get_option('b_ndebug') == 'true'
403 # With asserts disabled with get a bunch of warnings about variables which
404 # are used only in the asserts. This is not useful at all, so let's just silence
405 # those warnings.
406 possible_cc_flags += [
407 '-Wno-unused-variable',
408 '-Wno-unused-but-set-variable',
409 ]
410endif
411
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900412add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900413add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900414
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800415if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400416 #include <time.h>
417 #include <inttypes.h>
418 typedef uint64_t usec_t;
419 usec_t now(clockid_t clock);
420 int main(void) {
421 struct timespec now;
422 return 0;
423 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100424''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400425 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400426endif
427
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200428cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400429
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200430has_wstringop_truncation = cc.has_argument('-Wstringop-truncation')
431
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400432#####################################################################
433# compilation result tests
434
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400435conf.set('_GNU_SOURCE', true)
436conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200437conf.set10('HAVE_WSTRINGOP_TRUNCATION', has_wstringop_truncation)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400438
439conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
440conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
441conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
442conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
443conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
444conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
445conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
446
447decl_headers = '''
448#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100449#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400450'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400451
452foreach decl : ['char16_t',
453 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100454 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400455 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400456
457 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200458 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
459
460 if decl == 'struct statx'
461 if have
462 want_linux_stat_h = false
463 else
464 have = cc.sizeof(decl,
465 prefix : decl_headers + '#include <linux/stat.h>',
466 args : '-D_GNU_SOURCE') > 0
467 want_linux_stat_h = have
468 endif
469 endif
470
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200471 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400472endforeach
473
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200474conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700475
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400476foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200477 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400478endforeach
479
480foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100481 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100482 ['gettid', '''#include <sys/types.h>
483 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100484 ['pivot_root', '''#include <stdlib.h>
485 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100486 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400487 #include <sys/stat.h>
488 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100489 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100490 ['renameat2', '''#include <stdio.h>
491 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400492 ['kcmp', '''#include <linux/kcmp.h>'''],
493 ['keyctl', '''#include <sys/types.h>
494 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100495 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400496 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200497 ['bpf', '''#include <sys/syscall.h>
498 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100499 ['statx', '''#include <sys/types.h>
500 #include <sys/stat.h>
501 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100502 ['explicit_bzero' , '''#include <string.h>'''],
503 ['reallocarray', '''#include <malloc.h>'''],
Michal Sekletarb070c7c2019-03-12 18:58:26 +0100504 ['set_mempolicy', '''#include <stdlib.h>
505 #include <unistd.h>'''],
506 ['get_mempolicy', '''#include <stdlib.h>
507 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400508]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400509
Lennart Poettering85db59b2017-12-25 12:01:14 +0100510 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200511 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400512endforeach
513
Lennart Poettering85db59b2017-12-25 12:01:14 +0100514if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200515 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200516 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400517else
518 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200519 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200520 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400521endif
522
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400523#####################################################################
524
Davide Cavalca1485aac2019-02-27 11:19:07 -0500525vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
526 project_source_root,
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100527 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100528 meson.project_version()]
529
Louis Taylord1084aa2019-01-21 21:45:36 +0000530version_h = vcs_tag(
531 input : 'src/version/version.h.in',
532 output : 'version.h',
533 command: vcs_tagger)
534
535versiondep = declare_dependency(sources: version_h)
536
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400537sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400538awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400539m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400540stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400541git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100542env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100543perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400544
Davide Cavalca1485aac2019-02-27 11:19:07 -0500545meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400546mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400547test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
548splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400549
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400550# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
551# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500552progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400553 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400554 ['kmod', '/usr/bin/kmod' ],
555 ['kexec', '/usr/sbin/kexec' ],
556 ['sulogin', '/usr/sbin/sulogin' ],
557 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
558 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
559 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
560 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
Michael Biebl6db90462019-07-18 01:24:00 +0200561 ['nologin', '/usr/sbin/nologin', ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400562 ]
563foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400564 path = get_option(prog[0] + '-path')
565 if path != ''
566 message('Using @1@ for @0@'.format(prog[0], path))
567 else
568 exe = find_program(prog[0],
569 '/usr/sbin/' + prog[0],
570 '/sbin/' + prog[0],
571 required: false)
572 path = exe.found() ? exe.path() : prog[1]
573 endif
574 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
575 conf.set_quoted(name, path)
576 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400577endforeach
578
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500579conf.set_quoted('TELINIT', get_option('telinit-path'))
580
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400581if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100582 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400583endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400584
585############################################################
586
587gperf = find_program('gperf')
588
589gperf_test_format = '''
590#include <string.h>
591const char * in_word_set(const char *, @0@);
592@1@
593'''
594gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
595gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
596gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
597if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400598 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400599else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400600 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
601 if cc.compiles(gperf_test)
602 gperf_len_type = 'unsigned'
603 else
604 error('unable to determine gperf len type')
605 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400606endif
607message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400608conf.set('GPERF_LEN_TYPE', gperf_len_type,
609 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400610
611############################################################
612
613if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400614 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400615endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100616foreach header : ['crypt.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400617 'linux/memfd.h',
618 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200619 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400620 'valgrind/memcheck.h',
621 'valgrind/valgrind.h',
622 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400623
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200624 conf.set10('HAVE_' + header.underscorify().to_upper(),
625 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400626endforeach
627
628############################################################
629
630conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400631conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
632gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400633
634default_hierarchy = get_option('default-hierarchy')
635conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
636 description : 'default cgroup hierarchy as string')
637if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400638 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400639elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400640 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400641else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400642 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400643endif
644
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100645default_net_naming_scheme = get_option('default-net-naming-scheme')
646conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
647
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400648time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900649if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400650 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900651 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400652endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400653conf.set('TIME_EPOCH', time_epoch)
654
655system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900656if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400657 system_uid_max = run_command(
658 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800659 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
660 '/etc/login.defs').stdout().strip()
661 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900662 system_uid_max = 999
663 else
664 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800665 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400666endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400667conf.set('SYSTEM_UID_MAX', system_uid_max)
668substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400669
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400670system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900671if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400672 system_gid_max = run_command(
673 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800674 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
675 '/etc/login.defs').stdout().strip()
676 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900677 system_gid_max = 999
678 else
679 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800680 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400681endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400682conf.set('SYSTEM_GID_MAX', system_gid_max)
683substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400684
Yu Watanabeac093402018-05-10 16:04:16 +0900685dynamic_uid_min = get_option('dynamic-uid-min')
686dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100687conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
688conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
689substs.set('dynamicuidmin', dynamic_uid_min)
690substs.set('dynamicuidmax', dynamic_uid_max)
691
Yu Watanabeac093402018-05-10 16:04:16 +0900692container_uid_base_min = get_option('container-uid-base-min')
693container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100694conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
695conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
696substs.set('containeruidbasemin', container_uid_base_min)
697substs.set('containeruidbasemax', container_uid_base_max)
698
Lennart Poetteringafde4572017-12-05 11:00:24 +0100699nobody_user = get_option('nobody-user')
700nobody_group = get_option('nobody-group')
701
Chen Qi2484bff2018-07-23 14:53:09 +0800702if not meson.is_cross_build()
703 getent_result = run_command('getent', 'passwd', '65534')
704 if getent_result.returncode() == 0
705 name = getent_result.stdout().split(':')[0]
706 if name != nobody_user
707 warning('\n' +
708 'The local user with the UID 65534 does not match the configured user name "@0@" of the nobody user (its name is @1@).\n'.format(nobody_user, name) +
709 'Your build will result in an user table setup that is incompatible with the local system.')
710 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100711 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800712 id_result = run_command('id', '-u', nobody_user)
713 if id_result.returncode() == 0
714 id = id_result.stdout().to_int()
715 if id != 65534
716 warning('\n' +
717 'The local user with the configured user name "@0@" of the nobody user does not have UID 65534 (it has @1@).\n'.format(nobody_user, id) +
718 'Your build will result in an user table setup that is incompatible with the local system.')
719 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100720 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100721
Chen Qi2484bff2018-07-23 14:53:09 +0800722 getent_result = run_command('getent', 'group', '65534')
723 if getent_result.returncode() == 0
724 name = getent_result.stdout().split(':')[0]
725 if name != nobody_group
726 warning('\n' +
727 'The local group with the GID 65534 does not match the configured group name "@0@" of the nobody group (its name is @1@).\n'.format(nobody_group, name) +
728 'Your build will result in an group table setup that is incompatible with the local system.')
729 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100730 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800731 id_result = run_command('id', '-g', nobody_group)
732 if id_result.returncode() == 0
733 id = id_result.stdout().to_int()
734 if id != 65534
735 warning('\n' +
736 'The local group with the configured group name "@0@" of the nobody group does not have UID 65534 (it has @1@).\n'.format(nobody_group, id) +
737 'Your build will result in an group table setup that is incompatible with the local system.')
738 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100739 endif
740endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900741if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900742 warning('\n' +
743 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
744 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900745endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100746
747conf.set_quoted('NOBODY_USER_NAME', nobody_user)
748conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900749substs.set('NOBODY_USER_NAME', nobody_user)
750substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100751
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400752tty_gid = get_option('tty-gid')
753conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400754substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400755
Ikey Doherty84786b82017-12-03 12:28:23 +0000756# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900757users_gid = get_option('users-gid')
758substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000759
Yu Watanabe348b4432018-05-07 18:17:35 +0900760conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
761conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400762
Michael Bieblace5e312018-07-13 23:36:13 +0200763dev_kvm_mode = get_option('dev-kvm-mode')
764substs.set('DEV_KVM_MODE', dev_kvm_mode)
765conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100766group_render_mode = get_option('group-render-mode')
767substs.set('GROUP_RENDER_MODE', group_render_mode)
768conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400769
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400770kill_user_processes = get_option('default-kill-user-processes')
771conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100772conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400773substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400774
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400775dns_servers = get_option('dns-servers')
776conf.set_quoted('DNS_SERVERS', dns_servers)
777substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400778
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400779ntp_servers = get_option('ntp-servers')
780conf.set_quoted('NTP_SERVERS', ntp_servers)
781substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400782
Dave Reisner8ca9e922018-12-28 07:38:36 -0500783default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900784if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800785 if not meson.is_cross_build()
786 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
787 default_locale = run_command(choose_default_locale_sh).stdout().strip()
788 else
789 default_locale = 'C.UTF-8'
790 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900791endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500792conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
793
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400794conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
795
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400796substs.set('SUSHELL', get_option('debug-shell'))
797substs.set('DEBUGTTY', get_option('debug-tty'))
Jan Synacek93912e82019-04-25 12:19:16 +0200798conf.set_quoted('DEBUGTTY', get_option('debug-tty'))
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400799
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200800enable_debug_hashmap = false
801enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900802enable_debug_siphash = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200803foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900804 if name == 'hashmap'
805 enable_debug_hashmap = true
806 elif name == 'mmap-cache'
807 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900808 elif name == 'siphash'
809 enable_debug_siphash = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900810 else
811 message('unknown debug option "@0@", ignoring'.format(name))
812 endif
813endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200814conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
815conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900816conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400817
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200818conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200819conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200820
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400821#####################################################################
822
823threads = dependency('threads')
824librt = cc.find_library('rt')
825libm = cc.find_library('m')
826libdl = cc.find_library('dl')
827libcrypt = cc.find_library('crypt')
828
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400829libcap = dependency('libcap', required : false)
830if not libcap.found()
831 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
832 libcap = cc.find_library('cap')
833endif
834
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400835libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100836 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400837
838want_seccomp = get_option('seccomp')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000839if want_seccomp != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400840 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400841 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400842 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200843 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400844else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200845 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400846 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400847endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200848conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400849
850want_selinux = get_option('selinux')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000851if want_selinux != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400852 libselinux = dependency('libselinux',
853 version : '>= 2.1.9',
854 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200855 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400856else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200857 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400858 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400859endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200860conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400861
862want_apparmor = get_option('apparmor')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000863if want_apparmor != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400864 libapparmor = dependency('libapparmor',
865 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200866 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400867else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200868 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400869 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400870endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200871conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400872
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400873smack_run_label = get_option('smack-run-label')
874if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400875 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400876endif
877
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400878want_polkit = get_option('polkit')
879install_polkit = false
880install_polkit_pkla = false
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000881if want_polkit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400882 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400883
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400884 libpolkit = dependency('polkit-gobject-1',
885 required : false)
886 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
887 message('Old polkit detected, will install pkla files')
888 install_polkit_pkla = true
889 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400890endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200891conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400892
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400893want_acl = get_option('acl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000894if want_acl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400895 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200896 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400897else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200898 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400899 libacl = []
900endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200901conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400902
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400903want_audit = get_option('audit')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000904if want_audit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400905 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200906 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400907else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200908 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400909 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400910endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200911conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400912
913want_blkid = get_option('blkid')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000914if want_blkid != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400915 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200916 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400917else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200918 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400919 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400920endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200921conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400922
923want_kmod = get_option('kmod')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000924if want_kmod != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400925 libkmod = dependency('libkmod',
926 version : '>= 15',
927 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200928 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400929else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200930 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400931 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400932endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200933conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400934
935want_pam = get_option('pam')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000936if want_pam != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400937 libpam = cc.find_library('pam', required : want_pam == 'true')
938 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200939 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400940else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200941 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400942 libpam = []
943 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400944endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200945conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400946
947want_microhttpd = get_option('microhttpd')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000948if want_microhttpd != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400949 libmicrohttpd = dependency('libmicrohttpd',
950 version : '>= 0.9.33',
951 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200952 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400953else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200954 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400955 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400956endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200957conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400958
959want_libcryptsetup = get_option('libcryptsetup')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000960if want_libcryptsetup != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400961 libcryptsetup = dependency('libcryptsetup',
962 version : '>= 1.6.0',
963 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200964 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100965 have_sector = cc.has_member(
966 'struct crypt_params_plain',
967 'sector_size',
968 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400969else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200970 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100971 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400972 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400973endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200974conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100975conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400976
977want_libcurl = get_option('libcurl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000978if want_libcurl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400979 libcurl = dependency('libcurl',
980 version : '>= 7.32.0',
981 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200982 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400983else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200984 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400985 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400986endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200987conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400988
989want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400990want_libidn2 = get_option('libidn2')
991if want_libidn == 'true' and want_libidn2 == 'true'
992 error('libidn and libidn2 cannot be requested simultaneously')
993endif
994
Yu Watanabe1b931392019-06-29 03:13:30 +0900995if want_libidn2 != 'false' and want_libidn != 'true' and not skip_deps
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400996 libidn = dependency('libidn2',
997 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200998 have = libidn.found()
999else
1000 have = false
Yu Watanabe1b931392019-06-29 03:13:30 +09001001 libidn = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001002endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001003conf.set10('HAVE_LIBIDN2', have)
Yu Watanabe1b931392019-06-29 03:13:30 +09001004if not have and want_libidn != 'false' and not skip_deps
1005 # libidn is used for both libidn and libidn2 objects
1006 libidn = dependency('libidn',
1007 required : want_libidn == 'true')
1008 have = libidn.found()
1009else
1010 have = false
1011endif
1012conf.set10('HAVE_LIBIDN', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001013
1014want_libiptc = get_option('libiptc')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001015if want_libiptc != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001016 libiptc = dependency('libiptc',
1017 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001018 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001019else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001020 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001021 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001022endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001023conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001024
1025want_qrencode = get_option('qrencode')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001026if want_qrencode != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001027 libqrencode = dependency('libqrencode',
1028 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001029 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001030else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001031 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001032 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001033endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001034conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001035
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001036want_gcrypt = get_option('gcrypt')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001037if want_gcrypt != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001038 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1039 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001040 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001041else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001042 have = false
1043endif
1044if not have
1045 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001046 libgcrypt = []
1047 libgpg_error = []
1048endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001049conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001050
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001051want_gnutls = get_option('gnutls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001052if want_gnutls != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001053 libgnutls = dependency('gnutls',
1054 version : '>= 3.1.4',
1055 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001056 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001057else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001058 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001059 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001060endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001061conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001062
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001063want_openssl = get_option('openssl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001064if want_openssl != 'false' and not skip_deps
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001065 libopenssl = dependency('openssl',
1066 version : '>= 1.1.0',
1067 required : want_openssl == 'true')
1068 have = libopenssl.found()
1069else
1070 have = false
1071 libopenssl = []
1072endif
1073conf.set10('HAVE_OPENSSL', have)
1074
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001075want_elfutils = get_option('elfutils')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001076if want_elfutils != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001077 libdw = dependency('libdw',
1078 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001079 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001080else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001081 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001082 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001083endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001084conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001085
1086want_zlib = get_option('zlib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001087if want_zlib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001088 libz = dependency('zlib',
1089 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001090 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001091else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001092 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001093 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001094endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001095conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001096
1097want_bzip2 = get_option('bzip2')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001098if want_bzip2 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001099 libbzip2 = cc.find_library('bz2',
1100 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001101 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001102else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001103 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001104 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001105endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001106conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001107
1108want_xz = get_option('xz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001109if want_xz != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001110 libxz = dependency('liblzma',
1111 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001112 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001113else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001114 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001115 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001116endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001117conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001118
1119want_lz4 = get_option('lz4')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001120if want_lz4 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001121 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001122 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001123 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001124 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001125else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001126 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001127 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001128endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001129conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001130
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001131want_xkbcommon = get_option('xkbcommon')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001132if want_xkbcommon != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001133 libxkbcommon = dependency('xkbcommon',
1134 version : '>= 0.3.0',
1135 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001136 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001137else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001138 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001139 libxkbcommon = []
1140endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001141conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001142
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001143want_pcre2 = get_option('pcre2')
1144if want_pcre2 != 'false'
1145 libpcre2 = dependency('libpcre2-8',
1146 required : want_pcre2 == 'true')
1147 have = libpcre2.found()
1148else
1149 have = false
1150 libpcre2 = []
1151endif
1152conf.set10('HAVE_PCRE2', have)
1153
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001154want_glib = get_option('glib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001155if want_glib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001156 libglib = dependency('glib-2.0',
1157 version : '>= 2.22.0',
1158 required : want_glib == 'true')
1159 libgobject = dependency('gobject-2.0',
1160 version : '>= 2.22.0',
1161 required : want_glib == 'true')
1162 libgio = dependency('gio-2.0',
1163 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001164 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001165else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001166 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001167 libglib = []
1168 libgobject = []
1169 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001170endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001171conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001172
1173want_dbus = get_option('dbus')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001174if want_dbus != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001175 libdbus = dependency('dbus-1',
1176 version : '>= 1.3.2',
1177 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001178 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001179else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001180 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001181 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001182endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001183conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001184
Yu Watanabe42303dc2017-06-18 05:22:32 +09001185default_dnssec = get_option('default-dnssec')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001186if skip_deps
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001187 default_dnssec = 'no'
1188endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001189if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001190 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1191 default_dnssec = 'no'
1192endif
1193conf.set('DEFAULT_DNSSEC_MODE',
1194 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1195substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1196
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001197dns_over_tls = get_option('dns-over-tls')
1198if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001199 if dns_over_tls == 'openssl'
1200 have_gnutls = false
1201 else
1202 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1203 if dns_over_tls == 'gnutls' and not have_gnutls
1204 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1205 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001206 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001207 if dns_over_tls == 'gnutls' or have_gnutls
1208 have_openssl = false
1209 else
1210 have_openssl = conf.get('HAVE_OPENSSL') == 1
1211 if dns_over_tls != 'auto' and not have_openssl
1212 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
Yu Watanabeb349bc52019-06-17 10:22:54 +09001213 error('DNS-over-TLS support was requested@0@, but dependencies are not available'.format(str))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001214 endif
1215 endif
1216 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001217else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001218 have = false
1219 have_gnutls = false
1220 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001221endif
1222conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001223conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1224conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001225
Iwan Timmerc9299be2018-06-13 20:26:24 +02001226default_dns_over_tls = get_option('default-dns-over-tls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001227if skip_deps
Iwan Timmerc9299be2018-06-13 20:26:24 +02001228 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001229endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001230if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
Iwan Timmer4310bfc2019-02-18 20:41:46 +01001231 message('default-dns-over-tls cannot be enabled or set to opportunistic when DNS-over-TLS support is disabled. Setting default-dns-over-tls to no.')
Iwan Timmerc9299be2018-06-13 20:26:24 +02001232 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001233endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001234conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1235 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1236substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001237
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001238want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001239if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001240 have = (conf.get('HAVE_LIBCURL') == 1 and
1241 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001242 conf.get('HAVE_XZ') == 1 and
1243 conf.get('HAVE_GCRYPT') == 1)
1244 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001245 error('importd support was requested, but dependencies are not available')
1246 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001247else
1248 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001249endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001250conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001251
1252want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001253if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001254 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1255 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001256 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1257 # it's possible to build one without the other. Complain only if
Ben Boeckel5238e952019-04-26 20:22:40 -04001258 # support was explicitly requested. The auxiliary files like sysusers
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001259 # config should be installed when any of the programs are built.
1260 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1261 error('remote support was requested, but dependencies are not available')
1262 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001263 have = have_deps[0] or have_deps[1]
1264else
1265 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001266endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001267conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001268
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001269foreach term : ['utmp',
1270 'hibernate',
1271 'environment-d',
1272 'binfmt',
1273 'coredump',
1274 'resolve',
1275 'logind',
1276 'hostnamed',
1277 'localed',
1278 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001279 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001280 'networkd',
1281 'timedated',
1282 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001283 'firstboot',
1284 'randomseed',
1285 'backlight',
1286 'vconsole',
1287 'quotacheck',
1288 'sysusers',
1289 'tmpfiles',
1290 'hwdb',
1291 'rfkill',
1292 'ldconfig',
1293 'efi',
1294 'tpm',
1295 'ima',
1296 'smack',
1297 'gshadow',
1298 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001299 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001300 'nss-systemd']
1301 have = get_option(term)
1302 name = 'ENABLE_' + term.underscorify().to_upper()
1303 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001304endforeach
1305
Yu Watanabe08540a92018-07-18 09:25:57 +09001306foreach tuple : [['nss-mymachines', 'machined'],
1307 ['nss-resolve', 'resolve']]
1308 want = get_option(tuple[0])
1309 if want != 'false'
1310 have = get_option(tuple[1])
1311 if want == 'true' and not have
1312 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1313 endif
1314 else
1315 have = false
1316 endif
1317 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1318 conf.set10(name, have)
1319endforeach
1320
1321enable_nss = false
1322foreach term : ['ENABLE_NSS_MYHOSTNAME',
1323 'ENABLE_NSS_MYMACHINES',
1324 'ENABLE_NSS_RESOLVE',
1325 'ENABLE_NSS_SYSTEMD']
1326 if conf.get(term) == 1
1327 enable_nss = true
1328 endif
1329endforeach
1330conf.set10('ENABLE_NSS', enable_nss)
1331
Yu Watanabe348b4432018-05-07 18:17:35 +09001332conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001333
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001334tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001335fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001336
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001337conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001338
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001339#####################################################################
1340
1341if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001342 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001343
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001344 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001345 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001346 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001347 elif efi_arch == 'x86_64'
1348 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001349 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001350 elif efi_arch == 'arm'
1351 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001352 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001353 elif efi_arch == 'aarch64'
1354 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001355 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001356 else
1357 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001358 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001359 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001360
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001361 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001362 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001363
Yu Watanabeac093402018-05-10 16:04:16 +09001364 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001365else
1366 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001367endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001368conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001369
1370#####################################################################
1371
1372config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001373 output : 'config.h',
1374 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001375
Yu Watanabe348b4432018-05-07 18:17:35 +09001376meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1377
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001378includes = include_directories('src/basic',
Zbigniew Jędrzejewski-Szmek91b08bb2019-07-02 13:01:23 +02001379 'src/boot',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001380 'src/shared',
1381 'src/systemd',
1382 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001383 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001384 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001385 'src/resolve',
1386 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001387 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001388 'src/login',
1389 'src/udev',
1390 'src/libudev',
1391 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001392 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001393 'src/libsystemd/sd-bus',
1394 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001395 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001396 'src/libsystemd/sd-hwdb',
1397 'src/libsystemd/sd-id128',
1398 'src/libsystemd/sd-netlink',
1399 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001400 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001401 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001402 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001403
1404add_project_arguments('-include', 'config.h', language : 'c')
1405
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001406generate_gperfs = find_program('tools/generate-gperfs.py')
1407
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001408subdir('po')
1409subdir('catalog')
1410subdir('src/systemd')
1411subdir('src/basic')
1412subdir('src/libsystemd')
1413subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001414subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001415subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001416
1417libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001418 'journal-core',
1419 libjournal_core_sources,
1420 journald_gperf_c,
1421 include_directories : includes,
1422 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001423
Davide Cavalca1485aac2019-02-27 11:19:07 -05001424libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001425libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001426 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001427 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001428 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001429 include_directories : includes,
1430 link_args : ['-shared',
1431 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001432 link_with : [libbasic,
1433 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001434 link_whole : [libsystemd_static,
1435 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001436 dependencies : [threads,
1437 librt,
1438 libxz,
1439 liblz4],
1440 link_depends : libsystemd_sym,
1441 install : true,
1442 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001443
Davide Cavalca70848ec2018-04-09 02:43:35 -07001444static_libsystemd = get_option('static-libsystemd')
1445static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1446
1447install_libsystemd_static = static_library(
1448 'systemd',
1449 libsystemd_sources,
1450 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001451 basic_sources,
1452 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001453 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001454 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001455 build_by_default : static_libsystemd != 'false',
1456 install : static_libsystemd != 'false',
1457 install_dir : rootlibdir,
1458 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1459 dependencies : [threads,
1460 librt,
1461 libxz,
1462 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001463 libcap,
1464 libblkid,
1465 libmount,
1466 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001467 libgcrypt],
1468 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1469
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001470############################################################
1471
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001472# binaries that have --help and are intended for use by humans,
1473# usually, but not always, installed in /bin.
1474public_programs = []
1475
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001476subdir('src/libudev')
1477subdir('src/shared')
1478subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001479subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001480subdir('src/udev')
1481subdir('src/network')
1482
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001483subdir('src/analyze')
1484subdir('src/journal-remote')
1485subdir('src/coredump')
1486subdir('src/hostname')
1487subdir('src/import')
1488subdir('src/kernel-install')
1489subdir('src/locale')
1490subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001491subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001492subdir('src/nspawn')
1493subdir('src/resolve')
1494subdir('src/timedate')
1495subdir('src/timesync')
1496subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001497subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001498
1499subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001500subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001501subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001502subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001503
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001504############################################################
1505
1506# only static linking apart from libdl, to make sure that the
1507# module is linked to all libraries that it uses.
1508test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001509 'test-dlopen',
1510 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001511 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001512 include_directories : includes,
1513 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001514 dependencies : [libdl],
1515 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001516
Yu Watanabe08540a92018-07-18 09:25:57 +09001517foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001518 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001519 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1520 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001521
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001522 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001523 if condition
1524 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001525
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001526 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001527 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001528
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001529 nss = shared_library(
1530 'nss_' + module,
1531 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001532 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001533 version : '2',
1534 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001535 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1536 link_args : ['-Wl,-z,nodelete',
1537 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001538 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001539 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001540 libbasic],
1541 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001542 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001543 link_depends : sym,
1544 install : true,
1545 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001546
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001547 # We cannot use shared_module because it does not support version suffix.
1548 # Unfortunately shared_library insists on creating the symlink…
1549 meson.add_install_script('sh', '-c',
1550 'rm $DESTDIR@0@/libnss_@1@.so'
1551 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001552
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001553 if want_tests != 'false'
1554 test('dlopen-nss_' + module,
1555 test_dlopen,
1556 # path to dlopen must include a slash
1557 args : nss.full_path())
1558 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001559 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001560endforeach
1561
1562############################################################
1563
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001564executable('systemd',
1565 systemd_sources,
1566 include_directories : includes,
1567 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001568 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001569 dependencies : [versiondep,
1570 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001571 librt,
1572 libseccomp,
1573 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001574 libmount,
1575 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001576 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001577 install : true,
1578 install_dir : rootlibexecdir)
1579
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001580meson.add_install_script(meson_make_symlink,
1581 join_paths(rootlibexecdir, 'systemd'),
1582 join_paths(rootsbindir, 'init'))
1583
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001584exe = executable('systemd-analyze',
1585 systemd_analyze_sources,
1586 include_directories : includes,
1587 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001588 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001589 dependencies : [versiondep,
1590 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001591 librt,
1592 libseccomp,
1593 libselinux,
1594 libmount,
1595 libblkid],
1596 install_rpath : rootlibexecdir,
1597 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001598public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001599
1600executable('systemd-journald',
1601 systemd_journald_sources,
1602 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001603 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001604 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001605 dependencies : [threads,
1606 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001607 liblz4,
1608 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001609 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001610 install : true,
1611 install_dir : rootlibexecdir)
1612
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001613exe = executable('systemd-cat',
1614 systemd_cat_sources,
1615 include_directories : includes,
1616 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001617 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001618 dependencies : [threads],
1619 install_rpath : rootlibexecdir,
1620 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001621public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001622
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001623exe = executable('journalctl',
1624 journalctl_sources,
1625 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001626 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001627 dependencies : [threads,
1628 libqrencode,
1629 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001630 liblz4,
1631 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001632 install_rpath : rootlibexecdir,
1633 install : true,
1634 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001635public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001636
1637executable('systemd-getty-generator',
1638 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001639 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001640 link_with : [libshared],
1641 install_rpath : rootlibexecdir,
1642 install : true,
1643 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001644
1645executable('systemd-debug-generator',
1646 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001647 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001648 link_with : [libshared],
1649 install_rpath : rootlibexecdir,
1650 install : true,
1651 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001652
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001653executable('systemd-run-generator',
1654 'src/run-generator/run-generator.c',
1655 include_directories : includes,
1656 link_with : [libshared],
1657 install_rpath : rootlibexecdir,
1658 install : true,
1659 install_dir : systemgeneratordir)
1660
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001661executable('systemd-fstab-generator',
1662 'src/fstab-generator/fstab-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001663 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01001664 link_with : [libcore_shared,
1665 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001666 install_rpath : rootlibexecdir,
1667 install : true,
1668 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001669
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001670if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001671 executable('30-systemd-environment-d-generator',
1672 'src/environment-d-generator/environment-d-generator.c',
1673 include_directories : includes,
1674 link_with : [libshared],
1675 install_rpath : rootlibexecdir,
1676 install : true,
1677 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001678
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001679 meson.add_install_script(meson_make_symlink,
1680 join_paths(sysconfdir, 'environment'),
1681 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001682endif
1683
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001684if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001685 executable('systemd-hibernate-resume-generator',
1686 'src/hibernate-resume/hibernate-resume-generator.c',
1687 include_directories : includes,
1688 link_with : [libshared],
1689 install_rpath : rootlibexecdir,
1690 install : true,
1691 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001692
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001693 executable('systemd-hibernate-resume',
1694 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001695 include_directories : includes,
1696 link_with : [libshared],
1697 install_rpath : rootlibexecdir,
1698 install : true,
1699 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001700endif
1701
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001702if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001703 executable('systemd-gpt-auto-generator',
1704 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001705 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001706 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001707 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001708 dependencies : libblkid,
1709 install_rpath : rootlibexecdir,
1710 install : true,
1711 install_dir : systemgeneratordir)
1712
1713 exe = executable('systemd-dissect',
1714 'src/dissect/dissect.c',
1715 include_directories : includes,
1716 link_with : [libshared],
1717 install_rpath : rootlibexecdir,
1718 install : true,
1719 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001720 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001721endif
1722
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001723if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001724 executable('systemd-resolved',
1725 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001726 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001727 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001728 libbasic_gcrypt,
1729 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001730 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001731 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001732 install : true,
1733 install_dir : rootlibexecdir)
1734
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001735 exe = executable('resolvectl',
1736 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001737 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001738 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001739 libbasic_gcrypt,
1740 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001741 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001742 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001743 libm,
1744 libidn],
1745 install_rpath : rootlibexecdir,
1746 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001747 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001748
1749 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001750 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001751 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001752
1753 meson.add_install_script(meson_make_symlink,
1754 join_paths(bindir, 'resolvectl'),
1755 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001756endif
1757
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001758if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001759 executable('systemd-logind',
1760 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001761 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001762 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001763 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001764 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001765 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001766 install_rpath : rootlibexecdir,
1767 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001768 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001769
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001770 exe = executable('loginctl',
1771 loginctl_sources,
1772 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001773 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001774 dependencies : [threads,
1775 liblz4,
1776 libxz],
1777 install_rpath : rootlibexecdir,
1778 install : true,
1779 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001780 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001781
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001782 exe = executable('systemd-inhibit',
1783 'src/login/inhibit.c',
1784 include_directories : includes,
1785 link_with : [libshared],
1786 install_rpath : rootlibexecdir,
1787 install : true,
1788 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001789 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001790
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001791 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001792 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001793 pam_systemd = shared_library(
1794 'pam_systemd',
1795 pam_systemd_c,
1796 name_prefix : '',
1797 include_directories : includes,
1798 link_args : ['-shared',
1799 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001800 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001801 libshared_static],
1802 dependencies : [threads,
1803 libpam,
1804 libpam_misc],
1805 link_depends : pam_systemd_sym,
1806 install : true,
1807 install_dir : pamlibdir)
1808
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001809 if want_tests != 'false'
1810 test('dlopen-pam_systemd',
1811 test_dlopen,
1812 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001813 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001814 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001815 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001816
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001817 executable('systemd-user-runtime-dir',
1818 user_runtime_dir_sources,
1819 include_directories : includes,
1820 link_with : [libshared],
1821 install_rpath : rootlibexecdir,
1822 install : true,
1823 install_dir : rootlibexecdir)
1824endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001825
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001826if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001827 executable('systemd-user-sessions',
1828 'src/user-sessions/user-sessions.c',
1829 include_directories : includes,
1830 link_with : [libshared],
1831 install_rpath : rootlibexecdir,
1832 install : true,
1833 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001834endif
1835
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001836if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001837 exe = executable('bootctl',
1838 'src/boot/bootctl.c',
1839 include_directories : includes,
1840 link_with : [libshared],
1841 dependencies : [libblkid],
1842 install_rpath : rootlibexecdir,
1843 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001844 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001845
1846 executable('systemd-bless-boot',
1847 'src/boot/bless-boot.c',
1848 include_directories : includes,
1849 link_with : [libshared],
1850 dependencies : [libblkid],
1851 install_rpath : rootlibexecdir,
1852 install : true,
1853 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001854
1855 executable('systemd-bless-boot-generator',
1856 'src/boot/bless-boot-generator.c',
1857 include_directories : includes,
1858 link_with : [libshared],
1859 install_rpath : rootlibexecdir,
1860 install : true,
1861 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001862endif
1863
Lennart Poetteringf876f532018-06-25 16:07:33 +02001864executable('systemd-boot-check-no-failures',
1865 'src/boot/boot-check-no-failures.c',
1866 include_directories : includes,
1867 link_with : [libshared],
1868 dependencies : [libblkid],
1869 install_rpath : rootlibexecdir,
1870 install : true,
1871 install_dir : rootlibexecdir)
1872
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001873exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1874 include_directories : includes,
1875 link_with : [libshared],
1876 dependencies : [threads],
1877 install_rpath : rootlibexecdir,
1878 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001879public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001880
Felipe Satelerf3794362018-05-22 15:08:57 -04001881
1882if get_option('link-systemctl-shared')
1883 systemctl_link_with = [libshared]
1884else
1885 systemctl_link_with = [libsystemd_static,
1886 libshared_static,
1887 libjournal_client,
1888 libbasic_gcrypt]
1889endif
1890
Lennart Poettering63a3b3c2019-03-22 20:05:08 +01001891exe = executable('systemctl',
1892 'src/systemctl/systemctl.c',
1893 'src/systemctl/sysv-compat.h',
1894 'src/systemctl/sysv-compat.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001895 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001896 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001897 dependencies : [threads,
1898 libcap,
1899 libselinux,
1900 libxz,
1901 liblz4],
1902 install_rpath : rootlibexecdir,
1903 install : true,
1904 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001905public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001906
Lennart Poettering61d05782018-04-16 21:41:40 +02001907if conf.get('ENABLE_PORTABLED') == 1
1908 executable('systemd-portabled',
1909 systemd_portabled_sources,
1910 include_directories : includes,
1911 link_with : [libshared],
1912 dependencies : [threads],
1913 install_rpath : rootlibexecdir,
1914 install : true,
1915 install_dir : rootlibexecdir)
1916
1917 exe = executable('portablectl', 'src/portable/portablectl.c',
1918 include_directories : includes,
1919 link_with : [libshared],
1920 dependencies : [threads],
1921 install_rpath : rootlibexecdir,
1922 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001923 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001924 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001925endif
1926
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001927foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1928 meson.add_install_script(meson_make_symlink,
1929 join_paths(rootbindir, 'systemctl'),
1930 join_paths(rootsbindir, alias))
1931endforeach
1932
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001933if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001934 executable('systemd-backlight',
1935 'src/backlight/backlight.c',
1936 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001937 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001938 install_rpath : rootlibexecdir,
1939 install : true,
1940 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001941endif
1942
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001943if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001944 executable('systemd-rfkill',
1945 'src/rfkill/rfkill.c',
1946 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001947 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001948 install_rpath : rootlibexecdir,
1949 install : true,
1950 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001951endif
1952
1953executable('systemd-system-update-generator',
1954 'src/system-update-generator/system-update-generator.c',
1955 include_directories : includes,
1956 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001957 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001958 install : true,
1959 install_dir : systemgeneratordir)
1960
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001961if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001962 executable('systemd-cryptsetup',
1963 'src/cryptsetup/cryptsetup.c',
1964 include_directories : includes,
1965 link_with : [libshared],
1966 dependencies : [libcryptsetup],
1967 install_rpath : rootlibexecdir,
1968 install : true,
1969 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001970
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001971 executable('systemd-cryptsetup-generator',
1972 'src/cryptsetup/cryptsetup-generator.c',
1973 include_directories : includes,
1974 link_with : [libshared],
1975 dependencies : [libcryptsetup],
1976 install_rpath : rootlibexecdir,
1977 install : true,
1978 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001979
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001980 executable('systemd-veritysetup',
1981 'src/veritysetup/veritysetup.c',
1982 include_directories : includes,
1983 link_with : [libshared],
1984 dependencies : [libcryptsetup],
1985 install_rpath : rootlibexecdir,
1986 install : true,
1987 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001988
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001989 executable('systemd-veritysetup-generator',
1990 'src/veritysetup/veritysetup-generator.c',
1991 include_directories : includes,
1992 link_with : [libshared],
1993 dependencies : [libcryptsetup],
1994 install_rpath : rootlibexecdir,
1995 install : true,
1996 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001997endif
1998
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001999if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002000 executable('systemd-sysv-generator',
2001 'src/sysv-generator/sysv-generator.c',
2002 include_directories : includes,
2003 link_with : [libshared],
2004 install_rpath : rootlibexecdir,
2005 install : true,
2006 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002007
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002008 executable('systemd-rc-local-generator',
2009 'src/rc-local-generator/rc-local-generator.c',
2010 include_directories : includes,
2011 link_with : [libshared],
2012 install_rpath : rootlibexecdir,
2013 install : true,
2014 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002015endif
2016
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002017if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002018 executable('systemd-hostnamed',
2019 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002020 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002021 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002022 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002023 install : true,
2024 install_dir : rootlibexecdir)
2025
2026 exe = executable('hostnamectl',
2027 'src/hostname/hostnamectl.c',
2028 include_directories : includes,
2029 link_with : [libshared],
2030 install_rpath : rootlibexecdir,
2031 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002032 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002033endif
2034
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002035if conf.get('ENABLE_LOCALED') == 1
2036 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002037 # logind will load libxkbcommon.so dynamically on its own
2038 deps = [libdl]
2039 else
2040 deps = []
2041 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002042
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002043 executable('systemd-localed',
2044 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002045 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002046 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002047 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002048 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002049 install : true,
2050 install_dir : rootlibexecdir)
2051
2052 exe = executable('localectl',
2053 localectl_sources,
2054 include_directories : includes,
2055 link_with : [libshared],
2056 install_rpath : rootlibexecdir,
2057 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002058 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002059endif
2060
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002061if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002062 executable('systemd-timedated',
2063 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002064 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002065 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002066 install_rpath : rootlibexecdir,
2067 install : true,
2068 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002069endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002070
Yu Watanabe6129ec82018-05-03 18:07:43 +09002071if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002072 exe = executable('timedatectl',
2073 'src/timedate/timedatectl.c',
2074 include_directories : includes,
2075 install_rpath : rootlibexecdir,
2076 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002077 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002078 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002079 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002080endif
2081
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002082if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002083 executable('systemd-timesyncd',
2084 systemd_timesyncd_sources,
2085 include_directories : includes,
2086 link_with : [libshared],
2087 dependencies : [threads,
2088 libm],
2089 install_rpath : rootlibexecdir,
2090 install : true,
2091 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002092
2093 executable('systemd-time-wait-sync',
2094 'src/time-wait-sync/time-wait-sync.c',
2095 include_directories : includes,
2096 link_with : [libshared],
2097 install_rpath : rootlibexecdir,
2098 install : true,
2099 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002100endif
2101
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002102if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002103 executable('systemd-machined',
2104 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002105 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002106 link_with : [libmachine_core,
2107 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002108 install_rpath : rootlibexecdir,
2109 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002110 install_dir : rootlibexecdir)
2111
2112 exe = executable('machinectl',
2113 'src/machine/machinectl.c',
2114 include_directories : includes,
2115 link_with : [libshared],
2116 dependencies : [threads,
2117 libxz,
2118 liblz4],
2119 install_rpath : rootlibexecdir,
2120 install : true,
2121 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002122 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002123endif
2124
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002125if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002126 executable('systemd-importd',
2127 systemd_importd_sources,
2128 include_directories : includes,
2129 link_with : [libshared],
2130 dependencies : [threads],
2131 install_rpath : rootlibexecdir,
2132 install : true,
2133 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002134
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002135 systemd_pull = executable('systemd-pull',
2136 systemd_pull_sources,
2137 include_directories : includes,
2138 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002139 dependencies : [versiondep,
2140 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002141 libz,
2142 libbzip2,
2143 libxz,
2144 libgcrypt],
2145 install_rpath : rootlibexecdir,
2146 install : true,
2147 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002148
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002149 systemd_import = executable('systemd-import',
2150 systemd_import_sources,
2151 include_directories : includes,
2152 link_with : [libshared],
2153 dependencies : [libcurl,
2154 libz,
2155 libbzip2,
2156 libxz],
2157 install_rpath : rootlibexecdir,
2158 install : true,
2159 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002160
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002161 systemd_import_fs = executable('systemd-import-fs',
2162 systemd_import_fs_sources,
2163 include_directories : includes,
2164 link_with : [libshared],
2165 install_rpath : rootlibexecdir,
2166 install : true,
2167 install_dir : rootlibexecdir)
2168
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002169 systemd_export = executable('systemd-export',
2170 systemd_export_sources,
2171 include_directories : includes,
2172 link_with : [libshared],
2173 dependencies : [libcurl,
2174 libz,
2175 libbzip2,
2176 libxz],
2177 install_rpath : rootlibexecdir,
2178 install : true,
2179 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002180
2181 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002182endif
2183
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002184if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002185 exe = executable('systemd-journal-upload',
2186 systemd_journal_upload_sources,
2187 include_directories : includes,
2188 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002189 dependencies : [versiondep,
2190 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002191 libcurl,
2192 libgnutls,
2193 libxz,
2194 liblz4],
2195 install_rpath : rootlibexecdir,
2196 install : true,
2197 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002198 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002199endif
2200
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002201if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002202 s_j_remote = executable('systemd-journal-remote',
2203 systemd_journal_remote_sources,
2204 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002205 link_with : [libshared,
2206 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002207 dependencies : [threads,
2208 libmicrohttpd,
2209 libgnutls,
2210 libxz,
2211 liblz4],
2212 install_rpath : rootlibexecdir,
2213 install : true,
2214 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002215
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002216 s_j_gatewayd = executable('systemd-journal-gatewayd',
2217 systemd_journal_gatewayd_sources,
2218 include_directories : includes,
2219 link_with : [libshared],
2220 dependencies : [threads,
2221 libmicrohttpd,
2222 libgnutls,
2223 libxz,
2224 liblz4],
2225 install_rpath : rootlibexecdir,
2226 install : true,
2227 install_dir : rootlibexecdir)
2228 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002229endif
2230
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002231if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002232 executable('systemd-coredump',
2233 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002234 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002235 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002236 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002237 libacl,
2238 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002239 libxz,
2240 liblz4],
2241 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002242 install : true,
2243 install_dir : rootlibexecdir)
2244
2245 exe = executable('coredumpctl',
2246 coredumpctl_sources,
2247 include_directories : includes,
2248 link_with : [libshared],
2249 dependencies : [threads,
2250 libxz,
2251 liblz4],
2252 install_rpath : rootlibexecdir,
2253 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002254 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002255endif
2256
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002257if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002258 exe = executable('systemd-binfmt',
2259 'src/binfmt/binfmt.c',
2260 include_directories : includes,
2261 link_with : [libshared],
2262 install_rpath : rootlibexecdir,
2263 install : true,
2264 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002265 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002266
2267 meson.add_install_script('sh', '-c',
2268 mkdir_p.format(binfmtdir))
2269 meson.add_install_script('sh', '-c',
2270 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2271endif
2272
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002273if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002274 executable('systemd-vconsole-setup',
2275 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002276 include_directories : includes,
2277 link_with : [libshared],
2278 install_rpath : rootlibexecdir,
2279 install : true,
2280 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002281endif
2282
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002283if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002284 executable('systemd-random-seed',
2285 'src/random-seed/random-seed.c',
2286 include_directories : includes,
2287 link_with : [libshared],
2288 install_rpath : rootlibexecdir,
2289 install : true,
2290 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002291endif
2292
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002293if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002294 executable('systemd-firstboot',
2295 'src/firstboot/firstboot.c',
2296 include_directories : includes,
2297 link_with : [libshared],
2298 dependencies : [libcrypt],
2299 install_rpath : rootlibexecdir,
2300 install : true,
2301 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002302endif
2303
2304executable('systemd-remount-fs',
2305 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002306 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002307 link_with : [libcore_shared,
2308 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002309 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002310 install : true,
2311 install_dir : rootlibexecdir)
2312
2313executable('systemd-machine-id-setup',
2314 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002315 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002316 link_with : [libcore_shared,
2317 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002318 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002319 install : true,
2320 install_dir : rootbindir)
2321
2322executable('systemd-fsck',
2323 'src/fsck/fsck.c',
2324 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002325 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002326 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002327 install : true,
2328 install_dir : rootlibexecdir)
2329
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002330executable('systemd-growfs',
2331 'src/partition/growfs.c',
2332 include_directories : includes,
2333 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002334 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002335 install_rpath : rootlibexecdir,
2336 install : true,
2337 install_dir : rootlibexecdir)
2338
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002339executable('systemd-makefs',
2340 'src/partition/makefs.c',
2341 include_directories : includes,
2342 link_with : [libshared],
2343 install_rpath : rootlibexecdir,
2344 install : true,
2345 install_dir : rootlibexecdir)
2346
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002347executable('systemd-sleep',
2348 'src/sleep/sleep.c',
2349 include_directories : includes,
2350 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002351 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002352 install : true,
2353 install_dir : rootlibexecdir)
2354
Yu Watanabed25e1272019-01-03 02:32:57 +09002355install_data('src/sleep/sleep.conf',
2356 install_dir : pkgsysconfdir)
2357
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002358exe = executable('systemd-sysctl',
2359 'src/sysctl/sysctl.c',
2360 include_directories : includes,
2361 link_with : [libshared],
2362 install_rpath : rootlibexecdir,
2363 install : true,
2364 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002365public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002366
2367executable('systemd-ac-power',
2368 'src/ac-power/ac-power.c',
2369 include_directories : includes,
2370 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002371 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002372 install : true,
2373 install_dir : rootlibexecdir)
2374
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002375exe = executable('systemd-detect-virt',
2376 'src/detect-virt/detect-virt.c',
2377 include_directories : includes,
2378 link_with : [libshared],
2379 install_rpath : rootlibexecdir,
2380 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002381public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002382
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002383exe = executable('systemd-delta',
2384 'src/delta/delta.c',
2385 include_directories : includes,
2386 link_with : [libshared],
2387 install_rpath : rootlibexecdir,
2388 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002389public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002390
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002391exe = executable('systemd-escape',
2392 'src/escape/escape.c',
2393 include_directories : includes,
2394 link_with : [libshared],
2395 install_rpath : rootlibexecdir,
2396 install : true,
2397 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002398public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002399
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002400exe = executable('systemd-notify',
2401 'src/notify/notify.c',
2402 include_directories : includes,
2403 link_with : [libshared],
2404 install_rpath : rootlibexecdir,
2405 install : true,
2406 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002407public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002408
2409executable('systemd-volatile-root',
2410 'src/volatile-root/volatile-root.c',
2411 include_directories : includes,
2412 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002413 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002414 install : true,
2415 install_dir : rootlibexecdir)
2416
2417executable('systemd-cgroups-agent',
2418 'src/cgroups-agent/cgroups-agent.c',
2419 include_directories : includes,
2420 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002421 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002422 install : true,
2423 install_dir : rootlibexecdir)
2424
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002425exe = executable('systemd-id128',
2426 'src/id128/id128.c',
2427 include_directories : includes,
2428 link_with : [libshared],
2429 install_rpath : rootlibexecdir,
2430 install : true)
2431public_programs += exe
2432
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002433exe = executable('systemd-path',
2434 'src/path/path.c',
2435 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002436 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002437 install_rpath : rootlibexecdir,
2438 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002439public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002440
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002441exe = executable('systemd-ask-password',
2442 'src/ask-password/ask-password.c',
2443 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002444 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002445 install_rpath : rootlibexecdir,
2446 install : true,
2447 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002448public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002449
2450executable('systemd-reply-password',
2451 'src/reply-password/reply-password.c',
2452 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002453 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002454 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002455 install : true,
2456 install_dir : rootlibexecdir)
2457
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002458exe = executable('systemd-tty-ask-password-agent',
2459 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2460 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002461 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002462 install_rpath : rootlibexecdir,
2463 install : true,
2464 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002465public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002466
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002467exe = executable('systemd-cgls',
2468 'src/cgls/cgls.c',
2469 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002470 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002471 install_rpath : rootlibexecdir,
2472 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002473public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002474
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002475exe = executable('systemd-cgtop',
2476 'src/cgtop/cgtop.c',
2477 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002478 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002479 install_rpath : rootlibexecdir,
2480 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002481public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002482
2483executable('systemd-initctl',
2484 'src/initctl/initctl.c',
2485 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002486 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002487 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002488 install : true,
2489 install_dir : rootlibexecdir)
2490
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002491exe = executable('systemd-mount',
2492 'src/mount/mount-tool.c',
2493 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002494 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek7d991d42019-04-04 13:41:47 +02002495 dependencies: [libmount],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002496 install_rpath : rootlibexecdir,
2497 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002498public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002499
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002500meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002501 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002502
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002503exe = executable('systemd-run',
2504 'src/run/run.c',
2505 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002506 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002507 install_rpath : rootlibexecdir,
2508 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002509public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002510
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002511exe = executable('systemd-stdio-bridge',
2512 'src/stdio-bridge/stdio-bridge.c',
2513 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002514 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002515 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002516 install_rpath : rootlibexecdir,
2517 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002518public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002519
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002520exe = executable('busctl',
2521 'src/busctl/busctl.c',
2522 'src/busctl/busctl-introspect.c',
2523 'src/busctl/busctl-introspect.h',
2524 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002525 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002526 install_rpath : rootlibexecdir,
2527 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002528public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002529
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002530if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002531 exe = executable('systemd-sysusers',
2532 'src/sysusers/sysusers.c',
2533 include_directories : includes,
2534 link_with : [libshared],
2535 install_rpath : rootlibexecdir,
2536 install : true,
2537 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002538 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002539endif
2540
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002541if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002542 exe = executable('systemd-tmpfiles',
2543 'src/tmpfiles/tmpfiles.c',
2544 include_directories : includes,
2545 link_with : [libshared],
2546 dependencies : [libacl],
2547 install_rpath : rootlibexecdir,
2548 install : true,
2549 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002550 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002551
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002552 if want_tests != 'false'
2553 test('test-systemd-tmpfiles',
2554 test_systemd_tmpfiles_py,
2555 # https://github.com/mesonbuild/meson/issues/2681
2556 args : exe.full_path())
2557 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002558endif
2559
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002560if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002561 exe = executable('systemd-hwdb',
2562 'src/hwdb/hwdb.c',
2563 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2564 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002565 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002566 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002567 install : true,
2568 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002569 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002570endif
2571
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002572if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002573 executable('systemd-quotacheck',
2574 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002575 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002576 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002577 install_rpath : rootlibexecdir,
2578 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002579 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002580endif
2581
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002582exe = executable('systemd-socket-proxyd',
2583 'src/socket-proxy/socket-proxyd.c',
2584 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002585 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002586 dependencies : [threads],
2587 install_rpath : rootlibexecdir,
2588 install : true,
2589 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002590public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002591
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002592exe = executable('systemd-udevd',
2593 systemd_udevd_sources,
2594 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002595 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002596 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002597 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002598 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002599 dependencies : [versiondep,
2600 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002601 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002602 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002603 libacl,
2604 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002605 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002606 install : true,
2607 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002608public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002609
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002610exe = executable('udevadm',
2611 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002612 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002613 include_directories : includes,
2614 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002615 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002616 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002617 dependencies : [versiondep,
2618 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002619 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002620 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002621 libacl,
2622 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002623 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002624 install : true,
2625 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002626public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002627
2628executable('systemd-shutdown',
2629 systemd_shutdown_sources,
2630 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002631 link_with : [libcore_shared,
2632 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002633 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002634 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002635 install : true,
2636 install_dir : rootlibexecdir)
2637
2638executable('systemd-update-done',
2639 'src/update-done/update-done.c',
2640 include_directories : includes,
2641 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002642 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002643 install : true,
2644 install_dir : rootlibexecdir)
2645
2646executable('systemd-update-utmp',
2647 'src/update-utmp/update-utmp.c',
2648 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002649 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002650 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002651 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002652 install : true,
2653 install_dir : rootlibexecdir)
2654
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002655if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002656 executable('systemd-modules-load',
2657 'src/modules-load/modules-load.c',
2658 include_directories : includes,
2659 link_with : [libshared],
2660 dependencies : [libkmod],
2661 install_rpath : rootlibexecdir,
2662 install : true,
2663 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002664
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002665 meson.add_install_script('sh', '-c',
2666 mkdir_p.format(modulesloaddir))
2667 meson.add_install_script('sh', '-c',
2668 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002669endif
2670
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002671exe = executable('systemd-nspawn',
2672 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002673 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002674 link_with : [libcore_shared,
2675 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002676 libshared],
Franck Bui82384232019-03-22 11:09:08 +01002677 dependencies : [libblkid,
2678 libseccomp],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002679 install_rpath : rootlibexecdir,
2680 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002681public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002682
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002683if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002684 executable('systemd-networkd',
2685 systemd_networkd_sources,
2686 include_directories : includes,
2687 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002688 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002689 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002690 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002691 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002692 install_rpath : rootlibexecdir,
2693 install : true,
2694 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002695
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002696 executable('systemd-networkd-wait-online',
2697 systemd_networkd_wait_online_sources,
2698 include_directories : includes,
2699 link_with : [libnetworkd_core,
2700 libshared],
2701 install_rpath : rootlibexecdir,
2702 install : true,
2703 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002704
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002705 exe = executable('networkctl',
2706 networkctl_sources,
2707 include_directories : includes,
2708 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002709 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002710 install_rpath : rootlibexecdir,
2711 install : true,
2712 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002713 public_programs += exe
Yu Watanabe426c1d32019-07-13 03:35:04 +09002714
2715 executable('systemd-network-generator',
2716 network_generator_sources,
2717 include_directories : includes,
2718 link_with : [libshared],
2719 install_rpath : rootlibexecdir,
2720 install : true,
2721 install_dir : rootlibexecdir)
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002722endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002723
2724executable('systemd-sulogin-shell',
2725 ['src/sulogin-shell/sulogin-shell.c'],
2726 include_directories : includes,
2727 link_with : [libshared],
2728 install_rpath : rootlibexecdir,
2729 install : true,
2730 install_dir : rootlibexecdir)
2731
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002732############################################################
2733
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002734custom_target(
2735 'systemd-runtest.env',
2736 output : 'systemd-runtest.env',
2737 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05002738 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002739 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002740 '} >@OUTPUT@'],
2741 build_by_default : true)
2742
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002743foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002744 sources = tuple[0]
2745 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2746 dependencies = tuple[2]
2747 condition = tuple.length() >= 4 ? tuple[3] : ''
2748 type = tuple.length() >= 5 ? tuple[4] : ''
2749 defs = tuple.length() >= 6 ? tuple[5] : []
2750 incs = tuple.length() >= 7 ? tuple[6] : includes
2751 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002752
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002753 name = sources[0].split('/')[-1].split('.')[0]
2754 if type.startswith('timeout=')
2755 timeout = type.split('=')[1].to_int()
2756 type = ''
2757 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002758
2759 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002760 exe = executable(
2761 name,
2762 sources,
2763 include_directories : incs,
2764 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002765 dependencies : [versiondep,
2766 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002767 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002768 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002769 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002770 install : install_tests,
2771 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002772
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002773 if type == 'manual'
2774 message('@0@ is a manual test'.format(name))
2775 elif type == 'unsafe' and want_tests != 'unsafe'
2776 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002777 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002778 test(name, exe,
2779 env : test_env,
2780 timeout : timeout)
2781 endif
2782 else
2783 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2784 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002785endforeach
2786
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002787exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002788 'test-libsystemd-sym',
2789 test_libsystemd_sym_c,
2790 include_directories : includes,
2791 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002792 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002793 install : install_tests,
2794 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002795if want_tests != 'false'
2796 test('test-libsystemd-sym', exe)
2797endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002798
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002799exe = executable(
2800 'test-libsystemd-static-sym',
2801 test_libsystemd_sym_c,
2802 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002803 link_with : [install_libsystemd_static],
2804 dependencies : [threads], # threads is already included in dependencies on the library,
2805 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002806 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002807 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002808 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002809if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002810 test('test-libsystemd-static-sym', exe)
2811endif
2812
2813exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002814 'test-libudev-sym',
2815 test_libudev_sym_c,
2816 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002817 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002818 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002819 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002820 install : install_tests,
2821 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002822if want_tests != 'false'
2823 test('test-libudev-sym', exe)
2824endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002825
2826exe = executable(
2827 'test-libudev-static-sym',
2828 test_libudev_sym_c,
2829 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002830 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002831 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002832 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002833 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002834 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002835if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002836 test('test-libudev-static-sym', exe)
2837endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002838
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002839############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002840
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002841fuzzer_exes = []
2842
Michael Olbrich59967402018-11-11 11:27:35 +01002843if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002844foreach tuple : fuzzers
2845 sources = tuple[0]
2846 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2847 dependencies = tuple[2]
2848 defs = tuple.length() >= 4 ? tuple[3] : []
2849 incs = tuple.length() >= 5 ? tuple[4] : includes
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002850 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002851
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002852 if want_ossfuzz or want_fuzzbuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002853 dependencies += fuzzing_engine
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002854 elif want_libfuzzer
2855 if fuzzing_engine.found()
2856 dependencies += fuzzing_engine
2857 else
2858 link_args += ['-fsanitize=fuzzer']
2859 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002860 else
2861 sources += 'src/fuzz/fuzz-main.c'
2862 endif
2863
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00002864 if want_fuzzbuzz
2865 sources += 'src/fuzz/fuzzer-entry-point.c'
2866 endif
2867
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002868 name = sources[0].split('/')[-1].split('.')[0]
2869
2870 fuzzer_exes += executable(
2871 name,
2872 sources,
2873 include_directories : [incs, include_directories('src/fuzz')],
2874 link_with : link_with,
2875 dependencies : dependencies,
2876 c_args : defs,
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002877 link_args: link_args,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002878 install : false)
2879endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002880endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002881
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01002882run_target('fuzzers',
2883 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002884 command : ['true'])
2885
2886############################################################
2887
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002888make_directive_index_py = find_program('tools/make-directive-index.py')
2889make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002890xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002891hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002892
2893subdir('units')
2894subdir('sysctl.d')
2895subdir('sysusers.d')
2896subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002897subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002898subdir('hwdb')
2899subdir('network')
2900subdir('man')
2901subdir('shell-completion/bash')
2902subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002903subdir('docs/sysvinit')
2904subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002905
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002906install_subdir('factory/etc',
2907 install_dir : factorydir)
2908
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002909install_data('xorg/50-systemd-user.sh',
2910 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002911install_data('modprobe.d/systemd.conf',
2912 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002913install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002914 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002915 'NEWS',
2916 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302917 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002918 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002919 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302920 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002921 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002922 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002923 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002924 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2925 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002926
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002927meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2928meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2929
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002930############################################################
2931
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002932meson_check_help = find_program('tools/meson-check-help.sh')
2933
2934foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002935 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002936 if want_tests != 'false'
2937 test('check-help-' + name,
2938 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002939 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002940 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002941endforeach
2942
2943############################################################
2944
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02002945check_directives_sh = find_program('tools/check-directives.sh')
2946
2947if want_tests != 'false'
2948 test('check-directives',
2949 check_directives_sh,
2950 args : project_source_root)
2951endif
2952
2953############################################################
2954
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002955# Enable tests for all supported sanitizers
2956foreach tuple : sanitizers
2957 sanitizer = tuple[0]
2958 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002959
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002960 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002961 prev = ''
2962 foreach p : fuzz_regression_tests
2963 b = p.split('/')[-2]
2964 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002965
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002966 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002967
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002968 if name != prev
2969 if want_tests == 'false'
2970 message('Not compiling @0@ because tests is set to false'.format(name))
2971 elif slow_tests
2972 exe = custom_target(
2973 name,
2974 output : name,
2975 depends : build,
2976 command : [env, 'ln', '-fs',
2977 join_paths(build.full_path(), b),
2978 '@OUTPUT@'],
2979 build_by_default : true)
2980 else
2981 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2982 endif
2983 endif
2984 prev = name
2985
2986 if want_tests != 'false' and slow_tests
2987 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2988 env,
2989 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05002990 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002991 endif
2992 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002993 endif
2994endforeach
2995
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002996
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002997############################################################
2998
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002999if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003000 all_files = run_command(
3001 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003002 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003003 'ls-files',
3004 ':/*.[ch]'])
3005 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003006
userwithuide85a6902017-08-09 13:41:44 +00003007 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003008 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003009 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003010 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003011 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003012 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003013 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003014endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003015
3016if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003017 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003018 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003019 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003020 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003021endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003022
3023if git.found()
3024 git_head = run_command(
3025 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003026 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003027 'rev-parse', 'HEAD']).stdout().strip()
3028 git_head_short = run_command(
3029 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003030 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003031 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3032
3033 run_target(
3034 'git-snapshot',
3035 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003036 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003037 git_head_short),
3038 '--prefix', 'systemd-@0@/'.format(git_head),
3039 'HEAD'])
3040endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003041
3042############################################################
3043
Lennart Poettering51b13862017-12-20 12:51:14 +01003044meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3045run_target(
3046 'check-api-docs',
3047 depends : [man, libsystemd, libudev],
3048 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3049
3050############################################################
3051
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003052status = [
3053 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3054
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003055 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003056 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003057 'prefix directory: @0@'.format(prefixdir),
3058 'rootprefix directory: @0@'.format(rootprefixdir),
3059 'sysconf directory: @0@'.format(sysconfdir),
3060 'include directory: @0@'.format(includedir),
3061 'lib directory: @0@'.format(libdir),
3062 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003063 'SysV init scripts: @0@'.format(sysvinit_path),
3064 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003065 'PAM modules directory: @0@'.format(pamlibdir),
3066 'PAM configuration directory: @0@'.format(pamconfdir),
3067 'RPM macros directory: @0@'.format(rpmmacrosdir),
3068 'modprobe.d directory: @0@'.format(modprobedir),
3069 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3070 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3071 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3072 'bash completions directory: @0@'.format(bashcompletiondir),
3073 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003074 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003075 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3076 get_option('debug-tty')),
3077 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003078 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003079 'maximum system UID: @0@'.format(system_uid_max),
3080 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003081 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3082 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3083 'minimum container UID base: @0@'.format(container_uid_base_min),
3084 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003085 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003086 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003087 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003088 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003089 'nobody user name: @0@'.format(nobody_user),
3090 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003091 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003092 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003093
3094 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003095 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003096 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003097 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003098 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
3099 'default locale: @0@'.format(default_locale)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003100
3101alt_dns_servers = '\n '.join(dns_servers.split(' '))
3102alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3103status += [
3104 'default DNS servers: @0@'.format(alt_dns_servers),
3105 'default NTP servers: @0@'.format(alt_ntp_servers)]
3106
3107alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3108 '@@0@'.format(time_epoch)).stdout().strip()
3109status += [
3110 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3111
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003112status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003113 'static libsystemd: @0@'.format(static_libsystemd),
3114 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003115
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003116# TODO:
3117# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3118# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3119# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3120
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003121if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003122 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003123
3124 if have_gnu_efi
3125 status += [
3126 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003127 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003128 'EFI lib directory: @0@'.format(efi_libdir),
3129 'EFI lds directory: @0@'.format(efi_ldsdir),
3130 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003131 endif
3132endif
3133
3134found = []
3135missing = []
3136
3137foreach tuple : [
3138 ['libcryptsetup'],
3139 ['PAM'],
3140 ['AUDIT'],
3141 ['IMA'],
3142 ['AppArmor'],
3143 ['SELinux'],
3144 ['SECCOMP'],
3145 ['SMACK'],
3146 ['zlib'],
3147 ['xz'],
3148 ['lz4'],
3149 ['bzip2'],
3150 ['ACL'],
3151 ['gcrypt'],
3152 ['qrencode'],
3153 ['microhttpd'],
3154 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003155 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003156 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003157 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003158 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003159 ['libidn'],
3160 ['libiptc'],
3161 ['elfutils'],
3162 ['binfmt'],
3163 ['vconsole'],
3164 ['quotacheck'],
3165 ['tmpfiles'],
3166 ['environment.d'],
3167 ['sysusers'],
3168 ['firstboot'],
3169 ['randomseed'],
3170 ['backlight'],
3171 ['rfkill'],
3172 ['logind'],
3173 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003174 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003175 ['importd'],
3176 ['hostnamed'],
3177 ['timedated'],
3178 ['timesyncd'],
3179 ['localed'],
3180 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003181 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003182 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3183 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003184 ['coredump'],
3185 ['polkit'],
3186 ['legacy pkla', install_polkit_pkla],
3187 ['efi'],
3188 ['gnu-efi', have_gnu_efi],
3189 ['kmod'],
3190 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003191 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003192 ['blkid'],
3193 ['dbus'],
3194 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003195 ['nss-myhostname'],
3196 ['nss-mymachines'],
3197 ['nss-resolve'],
3198 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003199 ['hwdb'],
3200 ['tpm'],
3201 ['man pages', want_man],
3202 ['html pages', want_html],
3203 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003204 ['SysV compat'],
3205 ['utmp'],
3206 ['ldconfig'],
3207 ['hibernate'],
3208 ['adm group', get_option('adm-group')],
3209 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003210 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003211 ['debug hashmap'],
3212 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003213 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003214 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003215 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003216 ['link-udev-shared', get_option('link-udev-shared')],
3217 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003218]
3219
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003220 if tuple.length() >= 2
3221 cond = tuple[1]
3222 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003223 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3224 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003225 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003226 endif
3227 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003228 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003229 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003230 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003231 endif
3232endforeach
3233
3234status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003235 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003236 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003237 '',
3238 'disabled features: @0@'.format(', '.join(missing)),
3239 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003240message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003241
3242if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003243 warning('\n' +
3244 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3245 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3246 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003247endif