blob: 0779c5bd54c18a63d47e8b4e68f43ea1f5ae73df [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-Szmek78af8a72019-11-22 14:41:10 +01004 version : '244',
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-Szmek827ca902019-11-10 11:39:15 +010011 'warning_level=2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040012 ],
Yu Watanabe7a6397d2018-05-15 20:18:24 +090013 meson_version : '>= 0.46',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040014 )
15
Zbigniew Jędrzejewski-Szmek78af8a72019-11-22 14:41:10 +010016libsystemd_version = '0.27.1'
17libudev_version = '1.6.16'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020018
Yu Watanabe348b4432018-05-07 18:17:35 +090019# We need the same data in two different formats, ugh!
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040020# Also, for hysterical reasons, we use different variable
21# names, sometimes. Not all variables are included in every
22# set. Ugh, ugh, ugh!
23conf = configuration_data()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010024conf.set('PROJECT_VERSION', meson.project_version())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040025
26substs = configuration_data()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010027substs.set('PROJECT_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
28substs.set('PROJECT_VERSION', meson.project_version())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040029
Davide Cavalca1485aac2019-02-27 11:19:07 -050030# This is to be used instead of meson.source_root(), as the latter will return
31# the wrong result when systemd is being built as a meson subproject
32project_source_root = meson.current_source_dir()
Zbigniew Jędrzejewski-Szmeka0b15b42019-06-07 14:41:36 +020033relative_source_path = run_command('realpath',
34 '--relative-to=@0@'.format(meson.current_build_dir()),
35 project_source_root).stdout().strip()
36conf.set_quoted('RELATIVE_SOURCE_PATH', relative_source_path)
Davide Cavalca1485aac2019-02-27 11:19:07 -050037
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020038want_ossfuzz = get_option('oss-fuzz')
39want_libfuzzer = get_option('llvm-fuzz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +000040want_fuzzbuzz = get_option('fuzzbuzz')
41if want_ossfuzz + want_libfuzzer + want_fuzzbuzz > 1
42 error('only one of oss-fuzz, llvm-fuzz or fuzzbuzz can be specified')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020043endif
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +000044
45skip_deps = want_ossfuzz or want_libfuzzer
46fuzzer_build = want_ossfuzz or want_libfuzzer or want_fuzzbuzz
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020047
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040048#####################################################################
49
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040050# Try to install the git pre-commit hook
Davide Cavalca1485aac2019-02-27 11:19:07 -050051git_hook = run_command(join_paths(project_source_root, 'tools/add-git-hook.sh'))
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040052if git_hook.returncode() == 0
53 message(git_hook.stdout().strip())
54endif
55
56#####################################################################
57
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010058if get_option('split-usr') == 'auto'
59 split_usr = run_command('test', '-L', '/bin').returncode() != 0
60else
61 split_usr = get_option('split-usr') == 'true'
62endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010063conf.set10('HAVE_SPLIT_USR', split_usr,
64 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010065
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010066if get_option('split-bin') == 'auto'
67 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
68else
69 split_bin = get_option('split-bin') == 'true'
70endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010071conf.set10('HAVE_SPLIT_BIN', split_bin,
72 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010073
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010074rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010075# Unusual rootprefixdir values are used by some distros
76# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010077rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010078if rootprefixdir == ''
79 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010080endif
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010081rootprefixdir_noslash = rootprefixdir == '/' ? '' : rootprefixdir
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040082
83sysvinit_path = get_option('sysvinit-path')
84sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090085conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020086 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040087
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020088conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
89conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
Lennart Poettering09dad042018-11-15 09:50:42 +010090conf.set('HIGH_RLIMIT_NOFILE', 512*1024)
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020091
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010092# join_paths ignores the preceding arguments if an absolute component is
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040093# encountered, so this should canonicalize various paths when they are
94# absolute or relative.
95prefixdir = get_option('prefix')
96if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040097 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040098endif
99bindir = join_paths(prefixdir, get_option('bindir'))
100libdir = join_paths(prefixdir, get_option('libdir'))
101sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
102includedir = join_paths(prefixdir, get_option('includedir'))
103datadir = join_paths(prefixdir, get_option('datadir'))
104localstatedir = join_paths('/', get_option('localstatedir'))
105
106rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +0100107rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400108rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
109
110rootlibdir = get_option('rootlibdir')
111if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400112 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400113endif
114
115# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +0200116pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
117pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400118polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
119polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
120polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400121xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900122rpmmacrosdir = get_option('rpmmacrosdir')
123if rpmmacrosdir != 'no'
124 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
125endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200126modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400127
128# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400129pkgdatadir = join_paths(datadir, 'systemd')
130environmentdir = join_paths(prefixdir, 'lib/environment.d')
131pkgsysconfdir = join_paths(sysconfdir, 'systemd')
132userunitdir = join_paths(prefixdir, 'lib/systemd/user')
133userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
134tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
135sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
136sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
137binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
138modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
139networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
140pkgincludedir = join_paths(includedir, 'systemd')
141systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
142usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
143systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
144userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
145systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
146systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
147systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
148systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
149udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400150udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
151udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
152catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
153kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
154factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400155bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
156testsdir = join_paths(prefixdir, 'lib/systemd/tests')
157systemdstatedir = join_paths(localstatedir, 'lib/systemd')
158catalogstatedir = join_paths(systemdstatedir, 'catalog')
159randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200160profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmeke5ea7412019-07-22 14:47:51 +0200161ntpservicelistdir = join_paths(rootprefixdir, 'lib/systemd/ntp-units.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400162
tblume75aaade2018-02-01 22:46:15 +0100163docdir = get_option('docdir')
164if docdir == ''
165 docdir = join_paths(datadir, 'doc/systemd')
166endif
167
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400168dbuspolicydir = get_option('dbuspolicydir')
169if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400170 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400171endif
172
173dbussessionservicedir = get_option('dbussessionservicedir')
174if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400175 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400176endif
177
178dbussystemservicedir = get_option('dbussystemservicedir')
179if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400180 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400181endif
182
183pamlibdir = get_option('pamlibdir')
184if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400185 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400186endif
187
188pamconfdir = get_option('pamconfdir')
189if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400190 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400191endif
192
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100193memory_accounting_default = get_option('memory-accounting-default')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200194status_unit_format_default = get_option('status-unit-format-default')
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100195
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400196conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400197conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400198conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
199conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
200conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400201conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100202
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100203conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100204
Michael Bieble17e5ba2017-04-13 10:30:56 -0400205conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400206conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
207conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400208conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
209conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
210conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
211conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100212conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100213conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400214conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
215conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
216conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
217conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
218conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100219conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400220conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400221conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
222conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400223conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
224conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
225conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
226conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
227conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
228conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400229conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
230conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700231conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700232conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400233conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400234conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400235conf.set_quoted('LIBDIR', libdir)
236conf.set_quoted('ROOTLIBDIR', rootlibdir)
237conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
238conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400239conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
240conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
Lennart Poettering1d7579c2018-10-10 21:20:08 +0200241conf.set_quoted('SYSTEMD_IMPORT_FS_PATH', join_paths(rootlibexecdir, 'systemd-import-fs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400242conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
243conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
244conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
245conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Lennart Poettering70a5db52019-07-04 18:35:39 +0200246conf.set_quoted('SYSTEMD_HOMEWORK_PATH', join_paths(rootlibexecdir, 'systemd-homework'))
Lennart Poetteringd093b622019-07-04 18:33:30 +0200247conf.set_quoted('SYSTEMD_USERWORK_PATH', join_paths(rootlibexecdir, 'systemd-userwork'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200248conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100249conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200250conf.set('STATUS_UNIT_FORMAT_DEFAULT', 'STATUS_UNIT_FORMAT_' + status_unit_format_default.to_upper())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400251
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400252substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100253substs.set('rootprefix', rootprefixdir)
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +0100254substs.set('rootprefix_noslash', rootprefixdir_noslash)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400255substs.set('exec_prefix', prefixdir)
256substs.set('libdir', libdir)
257substs.set('rootlibdir', rootlibdir)
258substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100259substs.set('sysconfdir', sysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400260substs.set('bindir', bindir)
261substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400262substs.set('rootlibexecdir', rootlibexecdir)
263substs.set('systemunitdir', systemunitdir)
264substs.set('userunitdir', userunitdir)
265substs.set('systempresetdir', systempresetdir)
266substs.set('userpresetdir', userpresetdir)
267substs.set('udevhwdbdir', udevhwdbdir)
268substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400269substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200270substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400271substs.set('catalogdir', catalogdir)
272substs.set('tmpfilesdir', tmpfilesdir)
273substs.set('sysusersdir', sysusersdir)
274substs.set('sysctldir', sysctldir)
275substs.set('binfmtdir', binfmtdir)
276substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200277substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400278substs.set('systemgeneratordir', systemgeneratordir)
279substs.set('usergeneratordir', usergeneratordir)
280substs.set('systemenvgeneratordir', systemenvgeneratordir)
281substs.set('userenvgeneratordir', userenvgeneratordir)
282substs.set('systemshutdowndir', systemshutdowndir)
283substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400284substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400285substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400286substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
287substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
288substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100289substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200290substs.set('STATUS_UNIT_FORMAT_DEFAULT', status_unit_format_default)
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200291substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmeke9bbff12019-05-09 13:23:50 +0200292substs.set('BUILD_ROOT', meson.current_build_dir())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400293
294#####################################################################
295
296cc = meson.get_compiler('c')
297pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400298check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100299meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400300
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200301want_tests = get_option('tests')
302slow_tests = want_tests != 'false' and get_option('slow-tests')
303install_tests = get_option('install-tests')
304
James Hilliard46e63a22018-12-27 09:16:20 +0800305if add_languages('cpp', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200306 # Used only for tests
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100307 cxx = meson.get_compiler('cpp')
308 cxx_cmd = ' '.join(cxx.cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200309else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200310 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400311endif
312
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500313if want_libfuzzer
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +0200314 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer', required : false)
315 if fuzzing_engine.found()
316 add_project_arguments('-fsanitize-coverage=trace-pc-guard,trace-cmp', language : 'c')
317 elif cc.has_argument('-fsanitize=fuzzer-no-link')
318 add_project_arguments('-fsanitize=fuzzer-no-link', language : 'c')
319 else
320 error('Looks like neither libFuzzer nor -fsanitize=fuzzer-no-link is supported')
321 endif
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200322elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500323 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000324elif want_fuzzbuzz
325 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 -0500326endif
327
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100328# Those generate many false positives, and we do not want to change the code to
329# avoid them.
330basic_disabled_warnings = [
331 '-Wno-unused-parameter',
332 '-Wno-missing-field-initializers',
333 '-Wno-unused-result',
334 '-Wno-format-signedness',
335]
336if get_option('b_ndebug') == 'true'
337 # With asserts disabled with get a bunch of warnings about variables which
338 # are used only in the asserts. This is not useful at all, so let's just silence
339 # those warnings.
340 basic_disabled_warnings += [
341 '-Wno-unused-variable',
342 '-Wno-unused-but-set-variable',
343 ]
344endif
345
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900346possible_cc_flags = [
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900347 '-Werror=undef',
348 '-Wlogical-op',
349 '-Wmissing-include-dirs',
350 '-Wold-style-definition',
351 '-Wpointer-arith',
352 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900353 '-Wfloat-equal',
354 '-Wsuggest-attribute=noreturn',
355 '-Werror=missing-prototypes',
356 '-Werror=implicit-function-declaration',
357 '-Werror=missing-declarations',
358 '-Werror=return-type',
359 '-Werror=incompatible-pointer-types',
360 '-Werror=format=2',
361 '-Wstrict-prototypes',
362 '-Wredundant-decls',
363 '-Wmissing-noreturn',
364 '-Wimplicit-fallthrough=5',
365 '-Wshadow',
366 '-Wendif-labels',
367 '-Wstrict-aliasing=2',
368 '-Wwrite-strings',
369 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200370 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200371 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900372 '-Wdate-time',
373 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700374
375 # negative arguments are correctly detected starting with meson 0.46.
Zbigniew Jędrzejewski-Szmekeed33622019-03-07 10:56:15 +0100376 '-Wno-error=#warnings', # clang
377 '-Wno-string-plus-int', # clang
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700378
379 # work-around for gcc 7.1 turning this on on its own.
380 '-Wno-error=nonnull',
381
382 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
383 # optimizations enabled, producing essentially false positives.
384 '-Wno-maybe-uninitialized',
385
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900386 '-ffast-math',
387 '-fno-common',
388 '-fdiagnostics-show-option',
389 '-fno-strict-aliasing',
390 '-fvisibility=hidden',
391 '-fstack-protector',
392 '-fstack-protector-strong',
393 '--param=ssp-buffer-size=4',
394]
395
396# --as-needed and --no-undefined are provided by meson by default,
397# run mesonconf to see what is enabled
398possible_link_flags = [
399 '-Wl,-z,relro',
400 '-Wl,-z,now',
Norbert Lange68e70ac2019-09-19 17:49:20 +0200401 '-fstack-protector',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900402]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400403
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900404if cc.get_id() == 'clang'
405 possible_cc_flags += [
406 '-Wno-typedef-redefinition',
407 '-Wno-gnu-variable-sized-type-not-at-end',
408 ]
409endif
410
411if get_option('buildtype') != 'debug'
412 possible_cc_flags += [
413 '-ffunction-sections',
414 '-fdata-sections',
415 ]
416
417 possible_link_flags += '-Wl,--gc-sections'
418endif
419
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100420add_project_arguments(cc.get_supported_arguments(basic_disabled_warnings), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900421add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900422add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900423
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800424if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400425 #include <time.h>
426 #include <inttypes.h>
427 typedef uint64_t usec_t;
428 usec_t now(clockid_t clock);
429 int main(void) {
430 struct timespec now;
431 return 0;
432 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100433''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400434 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400435endif
436
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100437if cxx_cmd != ''
438 add_project_arguments(cxx.get_supported_arguments(basic_disabled_warnings), language : 'cpp')
439endif
440
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200441cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400442
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200443has_wstringop_truncation = cc.has_argument('-Wstringop-truncation')
444
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400445#####################################################################
446# compilation result tests
447
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400448conf.set('_GNU_SOURCE', true)
449conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200450conf.set10('HAVE_WSTRINGOP_TRUNCATION', has_wstringop_truncation)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400451
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400452conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
453conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
454conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
455conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
456
457decl_headers = '''
458#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100459#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400460'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400461
462foreach decl : ['char16_t',
463 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100464 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400465 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400466
467 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200468 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
469
470 if decl == 'struct statx'
471 if have
472 want_linux_stat_h = false
473 else
474 have = cc.sizeof(decl,
475 prefix : decl_headers + '#include <linux/stat.h>',
476 args : '-D_GNU_SOURCE') > 0
477 want_linux_stat_h = have
478 endif
479 endif
480
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200481 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400482endforeach
483
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200484conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700485
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400486foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200487 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400488endforeach
489
490foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100491 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100492 ['gettid', '''#include <sys/types.h>
493 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100494 ['pivot_root', '''#include <stdlib.h>
495 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100496 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400497 #include <sys/stat.h>
498 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100499 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100500 ['renameat2', '''#include <stdio.h>
501 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400502 ['kcmp', '''#include <linux/kcmp.h>'''],
503 ['keyctl', '''#include <sys/types.h>
504 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100505 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400506 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200507 ['bpf', '''#include <sys/syscall.h>
508 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100509 ['statx', '''#include <sys/types.h>
510 #include <sys/stat.h>
511 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100512 ['explicit_bzero' , '''#include <string.h>'''],
513 ['reallocarray', '''#include <malloc.h>'''],
Michal Sekletarb070c7c2019-03-12 18:58:26 +0100514 ['set_mempolicy', '''#include <stdlib.h>
515 #include <unistd.h>'''],
516 ['get_mempolicy', '''#include <stdlib.h>
517 #include <unistd.h>'''],
Lennart Poettering5f152f42019-10-25 16:06:06 +0200518 ['pidfd_send_signal', '''#include <stdlib.h>
519 #include <unistd.h>
520 #include <signal.h>
521 #include <sys/wait.h>'''],
522 ['pidfd_open', '''#include <stdlib.h>
523 #include <unistd.h>
524 #include <signal.h>
525 #include <sys/wait.h>'''],
Lennart Poettering5ead4e82019-10-30 16:29:42 +0100526 ['rt_sigqueueinfo', '''#include <stdlib.h>
527 #include <unistd.h>
528 #include <signal.h>
529 #include <sys/wait.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400530]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400531
Lennart Poettering85db59b2017-12-25 12:01:14 +0100532 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200533 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400534endforeach
535
Lennart Poettering85db59b2017-12-25 12:01:14 +0100536if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200537 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200538 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400539else
540 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200541 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200542 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400543endif
544
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400545#####################################################################
546
Davide Cavalca1485aac2019-02-27 11:19:07 -0500547vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
548 project_source_root,
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100549 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100550 meson.project_version()]
551
Louis Taylord1084aa2019-01-21 21:45:36 +0000552version_h = vcs_tag(
553 input : 'src/version/version.h.in',
554 output : 'version.h',
555 command: vcs_tagger)
556
557versiondep = declare_dependency(sources: version_h)
558
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400559sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400560awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400561m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400562stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400563git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100564env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100565perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400566
Davide Cavalca1485aac2019-02-27 11:19:07 -0500567meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400568mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400569test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
570splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400571
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400572# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
573# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500574progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400575 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400576 ['kmod', '/usr/bin/kmod' ],
577 ['kexec', '/usr/sbin/kexec' ],
578 ['sulogin', '/usr/sbin/sulogin' ],
579 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
580 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
581 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
582 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
Michael Biebl6db90462019-07-18 01:24:00 +0200583 ['nologin', '/usr/sbin/nologin', ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400584 ]
585foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400586 path = get_option(prog[0] + '-path')
587 if path != ''
588 message('Using @1@ for @0@'.format(prog[0], path))
589 else
590 exe = find_program(prog[0],
591 '/usr/sbin/' + prog[0],
592 '/sbin/' + prog[0],
593 required: false)
594 path = exe.found() ? exe.path() : prog[1]
595 endif
596 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
597 conf.set_quoted(name, path)
598 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400599endforeach
600
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500601conf.set_quoted('TELINIT', get_option('telinit-path'))
602
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400603if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100604 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400605endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400606
607############################################################
608
609gperf = find_program('gperf')
610
611gperf_test_format = '''
612#include <string.h>
613const char * in_word_set(const char *, @0@);
614@1@
615'''
616gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
617gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
618gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
619if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400620 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400621else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400622 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
623 if cc.compiles(gperf_test)
624 gperf_len_type = 'unsigned'
625 else
626 error('unable to determine gperf len type')
627 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400628endif
629message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400630conf.set('GPERF_LEN_TYPE', gperf_len_type,
631 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400632
633############################################################
634
635if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400636 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400637endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100638foreach header : ['crypt.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400639 'linux/memfd.h',
640 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200641 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400642 'valgrind/memcheck.h',
643 'valgrind/valgrind.h',
644 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400645
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200646 conf.set10('HAVE_' + header.underscorify().to_upper(),
647 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400648endforeach
649
650############################################################
651
652conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400653conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
654gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400655
656default_hierarchy = get_option('default-hierarchy')
657conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
658 description : 'default cgroup hierarchy as string')
659if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400660 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400661elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400662 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400663else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400664 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400665endif
666
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100667default_net_naming_scheme = get_option('default-net-naming-scheme')
668conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
669
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400670time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900671if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400672 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900673 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400674endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400675conf.set('TIME_EPOCH', time_epoch)
676
677system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900678if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400679 system_uid_max = run_command(
680 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800681 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
682 '/etc/login.defs').stdout().strip()
683 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900684 system_uid_max = 999
685 else
686 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800687 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400688endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400689conf.set('SYSTEM_UID_MAX', system_uid_max)
690substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400691
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400692system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900693if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400694 system_gid_max = run_command(
695 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800696 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
697 '/etc/login.defs').stdout().strip()
698 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900699 system_gid_max = 999
700 else
701 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800702 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400703endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400704conf.set('SYSTEM_GID_MAX', system_gid_max)
705substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400706
Yu Watanabeac093402018-05-10 16:04:16 +0900707dynamic_uid_min = get_option('dynamic-uid-min')
708dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100709conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
710conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
711substs.set('dynamicuidmin', dynamic_uid_min)
712substs.set('dynamicuidmax', dynamic_uid_max)
713
Yu Watanabeac093402018-05-10 16:04:16 +0900714container_uid_base_min = get_option('container-uid-base-min')
715container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100716conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
717conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
718substs.set('containeruidbasemin', container_uid_base_min)
719substs.set('containeruidbasemax', container_uid_base_max)
720
Lennart Poetteringafde4572017-12-05 11:00:24 +0100721nobody_user = get_option('nobody-user')
722nobody_group = get_option('nobody-group')
723
Chen Qi2484bff2018-07-23 14:53:09 +0800724if not meson.is_cross_build()
725 getent_result = run_command('getent', 'passwd', '65534')
726 if getent_result.returncode() == 0
727 name = getent_result.stdout().split(':')[0]
728 if name != nobody_user
729 warning('\n' +
730 '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) +
731 'Your build will result in an user table setup that is incompatible with the local system.')
732 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100733 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800734 id_result = run_command('id', '-u', nobody_user)
735 if id_result.returncode() == 0
736 id = id_result.stdout().to_int()
737 if id != 65534
738 warning('\n' +
739 '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) +
740 'Your build will result in an user table setup that is incompatible with the local system.')
741 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100742 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100743
Chen Qi2484bff2018-07-23 14:53:09 +0800744 getent_result = run_command('getent', 'group', '65534')
745 if getent_result.returncode() == 0
746 name = getent_result.stdout().split(':')[0]
747 if name != nobody_group
748 warning('\n' +
749 '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) +
750 'Your build will result in an group table setup that is incompatible with the local system.')
751 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100752 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800753 id_result = run_command('id', '-g', nobody_group)
754 if id_result.returncode() == 0
755 id = id_result.stdout().to_int()
756 if id != 65534
757 warning('\n' +
758 '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) +
759 'Your build will result in an group table setup that is incompatible with the local system.')
760 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100761 endif
762endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900763if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900764 warning('\n' +
765 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
766 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900767endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100768
769conf.set_quoted('NOBODY_USER_NAME', nobody_user)
770conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900771substs.set('NOBODY_USER_NAME', nobody_user)
772substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100773
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400774tty_gid = get_option('tty-gid')
775conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400776substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400777
Ikey Doherty84786b82017-12-03 12:28:23 +0000778# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900779users_gid = get_option('users-gid')
780substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000781
Yu Watanabe348b4432018-05-07 18:17:35 +0900782conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
783conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400784
Michael Bieblace5e312018-07-13 23:36:13 +0200785dev_kvm_mode = get_option('dev-kvm-mode')
786substs.set('DEV_KVM_MODE', dev_kvm_mode)
787conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100788group_render_mode = get_option('group-render-mode')
789substs.set('GROUP_RENDER_MODE', group_render_mode)
790conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400791
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400792kill_user_processes = get_option('default-kill-user-processes')
793conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100794conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400795substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400796
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400797dns_servers = get_option('dns-servers')
798conf.set_quoted('DNS_SERVERS', dns_servers)
799substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400800
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400801ntp_servers = get_option('ntp-servers')
802conf.set_quoted('NTP_SERVERS', ntp_servers)
803substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400804
Dave Reisner8ca9e922018-12-28 07:38:36 -0500805default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900806if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800807 if not meson.is_cross_build()
808 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
809 default_locale = run_command(choose_default_locale_sh).stdout().strip()
810 else
811 default_locale = 'C.UTF-8'
812 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900813endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500814conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
815
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400816conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
817
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200818service_watchdog = get_option('service-watchdog')
Anita Zhang7bc9ea52019-10-25 15:46:21 -0700819watchdog_value = service_watchdog == '' ? '' : 'WatchdogSec=' + service_watchdog
820substs.set('SERVICE_WATCHDOG', watchdog_value)
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200821
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400822substs.set('SUSHELL', get_option('debug-shell'))
823substs.set('DEBUGTTY', get_option('debug-tty'))
Jan Synacek93912e82019-04-25 12:19:16 +0200824conf.set_quoted('DEBUGTTY', get_option('debug-tty'))
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400825
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200826enable_debug_hashmap = false
827enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900828enable_debug_siphash = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200829foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900830 if name == 'hashmap'
831 enable_debug_hashmap = true
832 elif name == 'mmap-cache'
833 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900834 elif name == 'siphash'
835 enable_debug_siphash = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900836 else
837 message('unknown debug option "@0@", ignoring'.format(name))
838 endif
839endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200840conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
841conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900842conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400843
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200844conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200845conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200846
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100847default_user_path = get_option('user-path')
848if default_user_path != ''
849 conf.set_quoted('DEFAULT_USER_PATH', default_user_path)
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100850 default_user_path_display = default_user_path
851else
852 # meson 0.49 fails when ?: is used in .format()
853 default_user_path_display = '(same as system services)'
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100854endif
855
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100856
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400857#####################################################################
858
859threads = dependency('threads')
860librt = cc.find_library('rt')
861libm = cc.find_library('m')
862libdl = cc.find_library('dl')
863libcrypt = cc.find_library('crypt')
864
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400865libcap = dependency('libcap', required : false)
866if not libcap.found()
867 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
868 libcap = cc.find_library('cap')
869endif
870
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400871libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100872 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400873
Lennart Poetteringe594a3b2019-12-10 21:31:41 +0100874want_libfdisk = get_option('fdisk')
875if want_libfdisk != 'false' and not skip_deps
876 libfdisk = dependency('fdisk',
877 required : want_libfdisk == 'true')
878 have = libfdisk.found()
879else
880 have = false
881 libfdisk = []
882endif
883conf.set10('HAVE_LIBFDISK', have)
884
Lennart Poettering70a5db52019-07-04 18:35:39 +0200885want_pwquality = get_option('pwquality')
886if want_pwquality != 'false' and not skip_deps
887 libpwquality = dependency('pwquality', required : want_pwquality == 'true')
888 have = libpwquality.found()
889else
890 have = false
891 libpwquality = []
892endif
893conf.set10('HAVE_PWQUALITY', have)
894
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400895want_seccomp = get_option('seccomp')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000896if want_seccomp != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400897 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400898 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400899 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200900 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400901else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200902 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400903 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400904endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200905conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400906
907want_selinux = get_option('selinux')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000908if want_selinux != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400909 libselinux = dependency('libselinux',
910 version : '>= 2.1.9',
911 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200912 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400913else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200914 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400915 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400916endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200917conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400918
919want_apparmor = get_option('apparmor')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000920if want_apparmor != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400921 libapparmor = dependency('libapparmor',
922 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200923 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400924else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200925 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400926 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400927endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200928conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400929
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400930smack_run_label = get_option('smack-run-label')
931if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400932 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400933endif
934
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400935want_polkit = get_option('polkit')
936install_polkit = false
937install_polkit_pkla = false
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000938if want_polkit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400939 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400940
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400941 libpolkit = dependency('polkit-gobject-1',
942 required : false)
943 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
944 message('Old polkit detected, will install pkla files')
945 install_polkit_pkla = true
946 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400947endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200948conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400949
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400950want_acl = get_option('acl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000951if want_acl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400952 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200953 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400954else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200955 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400956 libacl = []
957endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200958conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400959
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400960want_audit = get_option('audit')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000961if want_audit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400962 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200963 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400964else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200965 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400966 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400967endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200968conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400969
970want_blkid = get_option('blkid')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000971if want_blkid != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400972 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200973 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400974else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200975 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400976 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400977endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200978conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400979
980want_kmod = get_option('kmod')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000981if want_kmod != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400982 libkmod = dependency('libkmod',
983 version : '>= 15',
984 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200985 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400986else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200987 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400988 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400989endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200990conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400991
992want_pam = get_option('pam')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000993if want_pam != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400994 libpam = cc.find_library('pam', required : want_pam == 'true')
995 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400997else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200998 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400999 libpam = []
1000 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001001endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001002conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001003
1004want_microhttpd = get_option('microhttpd')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001005if want_microhttpd != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001006 libmicrohttpd = dependency('libmicrohttpd',
1007 version : '>= 0.9.33',
1008 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001009 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001010else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001011 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001012 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001013endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001014conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001015
1016want_libcryptsetup = get_option('libcryptsetup')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001017if want_libcryptsetup != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001018 libcryptsetup = dependency('libcryptsetup',
Jay Strictd90874b2019-09-26 15:54:29 +02001019 version : '>= 2.0.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001020 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001021 have = libcryptsetup.found()
Lennart Poettering70a5db52019-07-04 18:35:39 +02001022
1023 conf.set10('HAVE_CRYPT_SET_METADATA_SIZE',
1024 have and cc.has_function('crypt_set_metadata_size', dependencies : libcryptsetup))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001025else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001026 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001027 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001028endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001029conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001030
1031want_libcurl = get_option('libcurl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001032if want_libcurl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001033 libcurl = dependency('libcurl',
1034 version : '>= 7.32.0',
1035 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001036 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001037else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001038 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001039 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001040endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001041conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001042
1043want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001044want_libidn2 = get_option('libidn2')
1045if want_libidn == 'true' and want_libidn2 == 'true'
1046 error('libidn and libidn2 cannot be requested simultaneously')
1047endif
1048
Yu Watanabe1b931392019-06-29 03:13:30 +09001049if want_libidn2 != 'false' and want_libidn != 'true' and not skip_deps
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001050 libidn = dependency('libidn2',
1051 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001052 have = libidn.found()
1053else
1054 have = false
Yu Watanabe1b931392019-06-29 03:13:30 +09001055 libidn = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001056endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001057conf.set10('HAVE_LIBIDN2', have)
Yu Watanabe1b931392019-06-29 03:13:30 +09001058if not have and want_libidn != 'false' and not skip_deps
1059 # libidn is used for both libidn and libidn2 objects
1060 libidn = dependency('libidn',
1061 required : want_libidn == 'true')
1062 have = libidn.found()
1063else
1064 have = false
1065endif
1066conf.set10('HAVE_LIBIDN', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001067
1068want_libiptc = get_option('libiptc')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001069if want_libiptc != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001070 libiptc = dependency('libiptc',
1071 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001072 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001073else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001074 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001075 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001076endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001077conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001078
1079want_qrencode = get_option('qrencode')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001080if want_qrencode != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001081 libqrencode = dependency('libqrencode',
1082 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001083 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001084else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001085 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001086 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001087endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001088conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001089
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001090want_gcrypt = get_option('gcrypt')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001091if want_gcrypt != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001092 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1093 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001094 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001095else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001096 have = false
1097endif
1098if not have
1099 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001100 libgcrypt = []
1101 libgpg_error = []
1102endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001103conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001104
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001105want_gnutls = get_option('gnutls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001106if want_gnutls != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001107 libgnutls = dependency('gnutls',
1108 version : '>= 3.1.4',
1109 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001110 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001111else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001112 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001113 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001114endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001115conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001116
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001117want_openssl = get_option('openssl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001118if want_openssl != 'false' and not skip_deps
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001119 libopenssl = dependency('openssl',
1120 version : '>= 1.1.0',
1121 required : want_openssl == 'true')
1122 have = libopenssl.found()
1123else
1124 have = false
1125 libopenssl = []
1126endif
1127conf.set10('HAVE_OPENSSL', have)
1128
Lennart Poettering839fddb2019-11-05 11:49:27 +01001129want_p11kit = get_option('p11kit')
1130if want_p11kit != 'false' and not skip_deps
1131 libp11kit = dependency('p11-kit-1',
1132 version : '>= 0.23.3',
1133 required : want_p11kit == 'true')
1134 have = libp11kit.found()
1135else
1136 have = false
1137 libp11kit = []
1138endif
1139conf.set10('HAVE_P11KIT', have)
1140
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001141want_elfutils = get_option('elfutils')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001142if want_elfutils != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001143 libdw = dependency('libdw',
1144 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001145 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001146else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001147 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001148 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001149endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001150conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001151
1152want_zlib = get_option('zlib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001153if want_zlib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001154 libz = dependency('zlib',
1155 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001156 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001157else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001158 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001159 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001160endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001161conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001162
1163want_bzip2 = get_option('bzip2')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001164if want_bzip2 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001165 libbzip2 = cc.find_library('bz2',
1166 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001167 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001168else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001169 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001170 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001171endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001172conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001173
1174want_xz = get_option('xz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001175if want_xz != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001176 libxz = dependency('liblzma',
1177 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001178 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001179else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001180 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001181 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001182endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001183conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001184
1185want_lz4 = get_option('lz4')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001186if want_lz4 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001187 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001188 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001189 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001190 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001191else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001192 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001193 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001194endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001195conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001196
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001197want_xkbcommon = get_option('xkbcommon')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001198if want_xkbcommon != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001199 libxkbcommon = dependency('xkbcommon',
1200 version : '>= 0.3.0',
1201 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001202 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001203else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001204 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001205 libxkbcommon = []
1206endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001207conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001208
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001209want_pcre2 = get_option('pcre2')
1210if want_pcre2 != 'false'
1211 libpcre2 = dependency('libpcre2-8',
1212 required : want_pcre2 == 'true')
1213 have = libpcre2.found()
1214else
1215 have = false
1216 libpcre2 = []
1217endif
1218conf.set10('HAVE_PCRE2', have)
1219
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001220want_glib = get_option('glib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001221if want_glib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001222 libglib = dependency('glib-2.0',
1223 version : '>= 2.22.0',
1224 required : want_glib == 'true')
1225 libgobject = dependency('gobject-2.0',
1226 version : '>= 2.22.0',
1227 required : want_glib == 'true')
1228 libgio = dependency('gio-2.0',
1229 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001230 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001231else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001232 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001233 libglib = []
1234 libgobject = []
1235 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001236endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001237conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001238
1239want_dbus = get_option('dbus')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001240if want_dbus != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001241 libdbus = dependency('dbus-1',
1242 version : '>= 1.3.2',
1243 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001244 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001245else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001246 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001247 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001248endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001249conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001250
Yu Watanabe42303dc2017-06-18 05:22:32 +09001251default_dnssec = get_option('default-dnssec')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001252if skip_deps
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001253 default_dnssec = 'no'
1254endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001255if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001256 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1257 default_dnssec = 'no'
1258endif
1259conf.set('DEFAULT_DNSSEC_MODE',
1260 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1261substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1262
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001263dns_over_tls = get_option('dns-over-tls')
1264if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001265 if dns_over_tls == 'openssl'
1266 have_gnutls = false
1267 else
Iwan Timmer38e053c2019-10-29 20:26:05 +01001268 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.6.0'))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001269 if dns_over_tls == 'gnutls' and not have_gnutls
1270 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1271 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001272 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001273 if dns_over_tls == 'gnutls' or have_gnutls
1274 have_openssl = false
1275 else
1276 have_openssl = conf.get('HAVE_OPENSSL') == 1
1277 if dns_over_tls != 'auto' and not have_openssl
1278 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
Yu Watanabeb349bc52019-06-17 10:22:54 +09001279 error('DNS-over-TLS support was requested@0@, but dependencies are not available'.format(str))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001280 endif
1281 endif
1282 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001283else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001284 have = false
1285 have_gnutls = false
1286 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001287endif
1288conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001289conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1290conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001291
Iwan Timmerc9299be2018-06-13 20:26:24 +02001292default_dns_over_tls = get_option('default-dns-over-tls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001293if skip_deps
Iwan Timmerc9299be2018-06-13 20:26:24 +02001294 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001295endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001296if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
Iwan Timmer4310bfc2019-02-18 20:41:46 +01001297 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 +02001298 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001299endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001300conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1301 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1302substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001303
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01001304want_repart = get_option('repart')
1305if want_repart != 'false'
1306 have = (conf.get('HAVE_OPENSSL') == 1 and
1307 conf.get('HAVE_LIBFDISK') == 1)
1308 if want_repart == 'true' and not have
1309 error('repart support was requested, but dependencies are not available')
1310 endif
1311else
1312 have = false
1313endif
1314conf.set10('ENABLE_REPART', have)
1315
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001316want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001317if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001318 have = (conf.get('HAVE_LIBCURL') == 1 and
1319 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001320 conf.get('HAVE_XZ') == 1 and
1321 conf.get('HAVE_GCRYPT') == 1)
1322 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001323 error('importd support was requested, but dependencies are not available')
1324 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001325else
1326 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001327endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001328conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001329
Lennart Poettering70a5db52019-07-04 18:35:39 +02001330want_homed = get_option('homed')
1331if want_homed != 'false'
1332 have = (conf.get('HAVE_OPENSSL') == 1 and
1333 conf.get('HAVE_LIBFDISK') == 1 and
1334 conf.get('HAVE_LIBCRYPTSETUP') == 1)
1335 if want_homed == 'true' and not have
1336 error('homed support was requested, but dependencies are not available')
1337 endif
1338else
1339 have = false
1340endif
1341conf.set10('ENABLE_HOMED', have)
1342
Yu Watanabeaf06ddf2020-02-01 11:01:41 +09001343have = have and conf.get('HAVE_PAM') == 1
1344conf.set10('ENABLE_PAM_HOME', have)
1345
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001346want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001347if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001348 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1349 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001350 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1351 # it's possible to build one without the other. Complain only if
Ben Boeckel5238e952019-04-26 20:22:40 -04001352 # support was explicitly requested. The auxiliary files like sysusers
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001353 # config should be installed when any of the programs are built.
1354 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1355 error('remote support was requested, but dependencies are not available')
1356 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001357 have = have_deps[0] or have_deps[1]
1358else
1359 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001360endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001361conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001362
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001363foreach term : ['utmp',
1364 'hibernate',
1365 'environment-d',
1366 'binfmt',
1367 'coredump',
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001368 'pstore',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001369 'resolve',
1370 'logind',
1371 'hostnamed',
1372 'localed',
1373 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001374 'portabled',
Lennart Poetteringd093b622019-07-04 18:33:30 +02001375 'userdb',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001376 'networkd',
1377 'timedated',
1378 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001379 'firstboot',
1380 'randomseed',
1381 'backlight',
1382 'vconsole',
1383 'quotacheck',
1384 'sysusers',
1385 'tmpfiles',
1386 'hwdb',
1387 'rfkill',
1388 'ldconfig',
1389 'efi',
1390 'tpm',
1391 'ima',
1392 'smack',
1393 'gshadow',
1394 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001395 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001396 'nss-systemd']
1397 have = get_option(term)
1398 name = 'ENABLE_' + term.underscorify().to_upper()
1399 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001400endforeach
1401
Yu Watanabe08540a92018-07-18 09:25:57 +09001402foreach tuple : [['nss-mymachines', 'machined'],
1403 ['nss-resolve', 'resolve']]
1404 want = get_option(tuple[0])
1405 if want != 'false'
1406 have = get_option(tuple[1])
1407 if want == 'true' and not have
1408 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1409 endif
1410 else
1411 have = false
1412 endif
1413 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1414 conf.set10(name, have)
1415endforeach
1416
1417enable_nss = false
1418foreach term : ['ENABLE_NSS_MYHOSTNAME',
1419 'ENABLE_NSS_MYMACHINES',
1420 'ENABLE_NSS_RESOLVE',
1421 'ENABLE_NSS_SYSTEMD']
1422 if conf.get(term) == 1
1423 enable_nss = true
1424 endif
1425endforeach
1426conf.set10('ENABLE_NSS', enable_nss)
1427
Yu Watanabe348b4432018-05-07 18:17:35 +09001428conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001429
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001430tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001431fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001432
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001433conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001434
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001435#####################################################################
1436
1437if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001438 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001439
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001440 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001441 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001442 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001443 elif efi_arch == 'x86_64'
1444 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001445 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001446 elif efi_arch == 'arm'
1447 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001448 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001449 elif efi_arch == 'aarch64'
1450 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001451 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001452 else
1453 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001454 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001455 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001456
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001457 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001458 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001459
Yu Watanabeac093402018-05-10 16:04:16 +09001460 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001461else
1462 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001463endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001464conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001465
1466#####################################################################
1467
1468config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001469 output : 'config.h',
1470 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001471
Yu Watanabe348b4432018-05-07 18:17:35 +09001472meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1473
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001474includes = include_directories('src/basic',
Zbigniew Jędrzejewski-Szmek91b08bb2019-07-02 13:01:23 +02001475 'src/boot',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001476 'src/shared',
1477 'src/systemd',
1478 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001479 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001480 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001481 'src/resolve',
1482 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001483 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001484 'src/login',
1485 'src/udev',
1486 'src/libudev',
1487 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001488 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001489 'src/libsystemd/sd-bus',
1490 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001491 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001492 'src/libsystemd/sd-hwdb',
1493 'src/libsystemd/sd-id128',
1494 'src/libsystemd/sd-netlink',
1495 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001496 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001497 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001498 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001499
1500add_project_arguments('-include', 'config.h', language : 'c')
1501
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001502generate_gperfs = find_program('tools/generate-gperfs.py')
1503
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001504subdir('po')
1505subdir('catalog')
1506subdir('src/systemd')
1507subdir('src/basic')
1508subdir('src/libsystemd')
1509subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001510subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001511subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001512
1513libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001514 'journal-core',
1515 libjournal_core_sources,
1516 journald_gperf_c,
1517 include_directories : includes,
1518 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001519
Davide Cavalca1485aac2019-02-27 11:19:07 -05001520libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001521libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001522 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001523 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001524 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001525 include_directories : includes,
1526 link_args : ['-shared',
1527 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001528 link_with : [libbasic,
1529 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001530 link_whole : [libsystemd_static,
1531 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001532 dependencies : [threads,
1533 librt,
1534 libxz,
1535 liblz4],
1536 link_depends : libsystemd_sym,
1537 install : true,
1538 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001539
Davide Cavalca70848ec2018-04-09 02:43:35 -07001540static_libsystemd = get_option('static-libsystemd')
1541static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1542
1543install_libsystemd_static = static_library(
1544 'systemd',
1545 libsystemd_sources,
1546 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001547 basic_sources,
1548 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001549 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001550 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001551 build_by_default : static_libsystemd != 'false',
1552 install : static_libsystemd != 'false',
1553 install_dir : rootlibdir,
1554 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1555 dependencies : [threads,
1556 librt,
1557 libxz,
1558 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001559 libcap,
1560 libblkid,
1561 libmount,
1562 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001563 libgcrypt],
1564 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1565
Mario Limonciellob61d7772019-09-09 22:49:35 +01001566#Generate autosuspend rules
1567make_autosuspend_rules_py = find_program('tools/make-autosuspend-rules.py')
1568
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001569############################################################
1570
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001571# binaries that have --help and are intended for use by humans,
1572# usually, but not always, installed in /bin.
1573public_programs = []
1574
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001575subdir('src/libudev')
1576subdir('src/shared')
1577subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001578subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001579subdir('src/udev')
1580subdir('src/network')
1581
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001582subdir('src/analyze')
1583subdir('src/journal-remote')
1584subdir('src/coredump')
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001585subdir('src/pstore')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001586subdir('src/hostname')
1587subdir('src/import')
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01001588subdir('src/partition')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001589subdir('src/kernel-install')
1590subdir('src/locale')
1591subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001592subdir('src/portable')
Lennart Poetteringd093b622019-07-04 18:33:30 +02001593subdir('src/userdb')
Lennart Poettering70a5db52019-07-04 18:35:39 +02001594subdir('src/home')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001595subdir('src/nspawn')
1596subdir('src/resolve')
1597subdir('src/timedate')
1598subdir('src/timesync')
1599subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001600subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001601
1602subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001603subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmekef2ad302019-10-08 16:43:18 +02001604subdir('rules.d')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001605subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001606
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001607############################################################
1608
1609# only static linking apart from libdl, to make sure that the
1610# module is linked to all libraries that it uses.
1611test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001612 'test-dlopen',
1613 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001614 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001615 include_directories : includes,
1616 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001617 dependencies : [libdl],
1618 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001619
Yu Watanabe08540a92018-07-18 09:25:57 +09001620foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Lennart Poettering1684c562019-07-04 18:31:11 +02001621 ['systemd', 'ENABLE_NSS_SYSTEMD', 'src/nss-systemd/userdb-glue.c src/nss-systemd/userdb-glue.h'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001622 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1623 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001624
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001625 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001626 if condition
1627 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001628
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001629 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001630 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001631
Lennart Poettering1684c562019-07-04 18:31:11 +02001632 sources = ['src/nss-@0@/nss-@0@.c'.format(module)]
1633 if tuple.length() > 2
1634 sources += tuple[2].split()
1635 endif
1636
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001637 nss = shared_library(
1638 'nss_' + module,
Lennart Poettering1684c562019-07-04 18:31:11 +02001639 sources,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001640 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001641 version : '2',
1642 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001643 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1644 link_args : ['-Wl,-z,nodelete',
1645 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001646 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001647 link_with : [libsystemd_static,
Lennart Poettering733cbd02019-07-23 14:22:06 +02001648 libshared_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001649 libbasic],
1650 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001651 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001652 link_depends : sym,
1653 install : true,
1654 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001655
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001656 # We cannot use shared_module because it does not support version suffix.
1657 # Unfortunately shared_library insists on creating the symlink…
1658 meson.add_install_script('sh', '-c',
1659 'rm $DESTDIR@0@/libnss_@1@.so'
1660 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001661
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001662 if want_tests != 'false'
1663 test('dlopen-nss_' + module,
1664 test_dlopen,
1665 # path to dlopen must include a slash
1666 args : nss.full_path())
1667 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001668 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001669endforeach
1670
1671############################################################
1672
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001673executable('systemd',
1674 systemd_sources,
1675 include_directories : includes,
1676 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001677 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001678 dependencies : [versiondep,
1679 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001680 librt,
1681 libseccomp,
1682 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001683 libmount,
1684 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001685 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001686 install : true,
1687 install_dir : rootlibexecdir)
1688
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001689meson.add_install_script(meson_make_symlink,
1690 join_paths(rootlibexecdir, 'systemd'),
1691 join_paths(rootsbindir, 'init'))
1692
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001693exe = executable('systemd-analyze',
1694 systemd_analyze_sources,
1695 include_directories : includes,
1696 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001697 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001698 dependencies : [versiondep,
1699 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001700 librt,
1701 libseccomp,
1702 libselinux,
1703 libmount,
1704 libblkid],
1705 install_rpath : rootlibexecdir,
1706 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001707public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001708
1709executable('systemd-journald',
1710 systemd_journald_sources,
1711 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001712 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001713 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001714 dependencies : [threads,
1715 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001716 liblz4,
1717 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001718 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001719 install : true,
1720 install_dir : rootlibexecdir)
1721
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001722exe = executable('systemd-cat',
1723 systemd_cat_sources,
1724 include_directories : includes,
1725 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001726 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001727 dependencies : [threads],
1728 install_rpath : rootlibexecdir,
1729 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001730public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001731
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001732exe = executable('journalctl',
1733 journalctl_sources,
1734 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001735 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001736 dependencies : [threads,
1737 libqrencode,
1738 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001739 liblz4,
1740 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001741 install_rpath : rootlibexecdir,
1742 install : true,
1743 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001744public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001745
1746executable('systemd-getty-generator',
1747 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001748 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001749 link_with : [libshared],
1750 install_rpath : rootlibexecdir,
1751 install : true,
1752 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001753
1754executable('systemd-debug-generator',
1755 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001756 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001757 link_with : [libshared],
1758 install_rpath : rootlibexecdir,
1759 install : true,
1760 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001761
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001762executable('systemd-run-generator',
1763 'src/run-generator/run-generator.c',
1764 include_directories : includes,
1765 link_with : [libshared],
1766 install_rpath : rootlibexecdir,
1767 install : true,
1768 install_dir : systemgeneratordir)
1769
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001770executable('systemd-fstab-generator',
1771 'src/fstab-generator/fstab-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001772 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01001773 link_with : [libcore_shared,
1774 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001775 install_rpath : rootlibexecdir,
1776 install : true,
1777 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001778
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001779if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001780 executable('30-systemd-environment-d-generator',
1781 'src/environment-d-generator/environment-d-generator.c',
1782 include_directories : includes,
1783 link_with : [libshared],
1784 install_rpath : rootlibexecdir,
1785 install : true,
1786 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001787
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001788 meson.add_install_script(meson_make_symlink,
1789 join_paths(sysconfdir, 'environment'),
1790 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001791endif
1792
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001793if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001794 executable('systemd-hibernate-resume-generator',
1795 'src/hibernate-resume/hibernate-resume-generator.c',
1796 include_directories : includes,
1797 link_with : [libshared],
1798 install_rpath : rootlibexecdir,
1799 install : true,
1800 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001801
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001802 executable('systemd-hibernate-resume',
1803 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001804 include_directories : includes,
1805 link_with : [libshared],
1806 install_rpath : rootlibexecdir,
1807 install : true,
1808 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001809endif
1810
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001811if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001812 executable('systemd-gpt-auto-generator',
1813 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001814 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001815 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001816 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001817 dependencies : libblkid,
1818 install_rpath : rootlibexecdir,
1819 install : true,
1820 install_dir : systemgeneratordir)
1821
1822 exe = executable('systemd-dissect',
1823 'src/dissect/dissect.c',
1824 include_directories : includes,
1825 link_with : [libshared],
1826 install_rpath : rootlibexecdir,
1827 install : true,
1828 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001829 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001830endif
1831
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001832if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001833 executable('systemd-resolved',
1834 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001835 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001836 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001837 libbasic_gcrypt,
1838 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001839 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001840 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001841 install : true,
1842 install_dir : rootlibexecdir)
1843
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001844 exe = executable('resolvectl',
1845 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001846 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001847 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001848 libbasic_gcrypt,
1849 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001850 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001851 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001852 libm,
1853 libidn],
1854 install_rpath : rootlibexecdir,
1855 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001856 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001857
1858 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001859 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001860 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001861
1862 meson.add_install_script(meson_make_symlink,
1863 join_paths(bindir, 'resolvectl'),
1864 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001865endif
1866
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001867if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001868 executable('systemd-logind',
1869 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001870 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001871 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001872 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001873 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001874 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001875 install_rpath : rootlibexecdir,
1876 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001877 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001878
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001879 exe = executable('loginctl',
1880 loginctl_sources,
1881 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001882 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001883 dependencies : [threads,
1884 liblz4,
1885 libxz],
1886 install_rpath : rootlibexecdir,
1887 install : true,
1888 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001889 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001890
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001891 exe = executable('systemd-inhibit',
1892 'src/login/inhibit.c',
1893 include_directories : includes,
1894 link_with : [libshared],
1895 install_rpath : rootlibexecdir,
1896 install : true,
1897 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001898 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001899
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001900 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001901 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001902 pam_systemd = shared_library(
1903 'pam_systemd',
1904 pam_systemd_c,
1905 name_prefix : '',
1906 include_directories : includes,
1907 link_args : ['-shared',
1908 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001909 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001910 libshared_static],
1911 dependencies : [threads,
1912 libpam,
1913 libpam_misc],
1914 link_depends : pam_systemd_sym,
1915 install : true,
1916 install_dir : pamlibdir)
1917
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001918 if want_tests != 'false'
1919 test('dlopen-pam_systemd',
1920 test_dlopen,
1921 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001922 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001923 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001924 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001925
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001926 executable('systemd-user-runtime-dir',
1927 user_runtime_dir_sources,
1928 include_directories : includes,
1929 link_with : [libshared],
1930 install_rpath : rootlibexecdir,
1931 install : true,
1932 install_dir : rootlibexecdir)
1933endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001934
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001935if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001936 executable('systemd-user-sessions',
1937 'src/user-sessions/user-sessions.c',
1938 include_directories : includes,
1939 link_with : [libshared],
1940 install_rpath : rootlibexecdir,
1941 install : true,
1942 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001943endif
1944
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001945if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001946 exe = executable('bootctl',
1947 'src/boot/bootctl.c',
1948 include_directories : includes,
1949 link_with : [libshared],
1950 dependencies : [libblkid],
1951 install_rpath : rootlibexecdir,
1952 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001953 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001954
1955 executable('systemd-bless-boot',
1956 'src/boot/bless-boot.c',
1957 include_directories : includes,
1958 link_with : [libshared],
1959 dependencies : [libblkid],
1960 install_rpath : rootlibexecdir,
1961 install : true,
1962 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001963
1964 executable('systemd-bless-boot-generator',
1965 'src/boot/bless-boot-generator.c',
1966 include_directories : includes,
1967 link_with : [libshared],
1968 install_rpath : rootlibexecdir,
1969 install : true,
1970 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001971endif
1972
Lennart Poetteringf876f532018-06-25 16:07:33 +02001973executable('systemd-boot-check-no-failures',
1974 'src/boot/boot-check-no-failures.c',
1975 include_directories : includes,
1976 link_with : [libshared],
1977 dependencies : [libblkid],
1978 install_rpath : rootlibexecdir,
1979 install : true,
1980 install_dir : rootlibexecdir)
1981
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001982exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1983 include_directories : includes,
1984 link_with : [libshared],
1985 dependencies : [threads],
1986 install_rpath : rootlibexecdir,
1987 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001988public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001989
Felipe Satelerf3794362018-05-22 15:08:57 -04001990
1991if get_option('link-systemctl-shared')
1992 systemctl_link_with = [libshared]
1993else
1994 systemctl_link_with = [libsystemd_static,
1995 libshared_static,
1996 libjournal_client,
1997 libbasic_gcrypt]
1998endif
1999
Lennart Poettering63a3b3c2019-03-22 20:05:08 +01002000exe = executable('systemctl',
2001 'src/systemctl/systemctl.c',
2002 'src/systemctl/sysv-compat.h',
2003 'src/systemctl/sysv-compat.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002004 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04002005 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002006 dependencies : [threads,
2007 libcap,
2008 libselinux,
2009 libxz,
2010 liblz4],
2011 install_rpath : rootlibexecdir,
2012 install : true,
2013 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002014public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002015
Lennart Poettering61d05782018-04-16 21:41:40 +02002016if conf.get('ENABLE_PORTABLED') == 1
2017 executable('systemd-portabled',
2018 systemd_portabled_sources,
2019 include_directories : includes,
2020 link_with : [libshared],
2021 dependencies : [threads],
2022 install_rpath : rootlibexecdir,
2023 install : true,
2024 install_dir : rootlibexecdir)
2025
2026 exe = executable('portablectl', 'src/portable/portablectl.c',
2027 include_directories : includes,
2028 link_with : [libshared],
2029 dependencies : [threads],
2030 install_rpath : rootlibexecdir,
2031 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02002032 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002033 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02002034endif
2035
Lennart Poetteringd093b622019-07-04 18:33:30 +02002036if conf.get('ENABLE_USERDB') == 1
2037 executable('systemd-userwork',
2038 systemd_userwork_sources,
2039 include_directories : includes,
2040 link_with : [libshared],
2041 dependencies : [threads],
2042 install_rpath : rootlibexecdir,
2043 install : true,
2044 install_dir : rootlibexecdir)
2045
2046 executable('systemd-userdbd',
2047 systemd_userdbd_sources,
2048 include_directories : includes,
2049 link_with : [libshared],
2050 dependencies : [threads],
2051 install_rpath : rootlibexecdir,
2052 install : true,
2053 install_dir : rootlibexecdir)
Lennart Poettering16049372019-08-05 18:22:01 +02002054
2055 executable('userdbctl',
2056 userdbctl_sources,
2057 include_directories : includes,
2058 link_with : [libshared],
2059 dependencies : [threads],
2060 install_rpath : rootlibexecdir,
2061 install : true,
2062 install_dir : rootbindir)
Lennart Poetteringd093b622019-07-04 18:33:30 +02002063endif
2064
Lennart Poettering70a5db52019-07-04 18:35:39 +02002065if conf.get('ENABLE_HOMED') == 1
2066 executable('systemd-homework',
2067 systemd_homework_sources,
2068 include_directories : includes,
2069 link_with : [libshared],
2070 dependencies : [threads,
2071 libcryptsetup,
2072 libblkid,
2073 libcrypt,
2074 libopenssl,
2075 libfdisk,
2076 libp11kit],
2077 install_rpath : rootlibexecdir,
2078 install : true,
2079 install_dir : rootlibexecdir)
2080
2081 executable('systemd-homed',
2082 systemd_homed_sources,
2083 include_directories : includes,
2084 link_with : [libshared],
2085 dependencies : [threads,
2086 libcrypt,
2087 libopenssl,
2088 libpwquality],
2089 install_rpath : rootlibexecdir,
2090 install : true,
2091 install_dir : rootlibexecdir)
Lennart Poettering4aa0a8a2019-07-04 19:06:15 +02002092
2093 executable('homectl',
2094 homectl_sources,
2095 include_directories : includes,
2096 link_with : [libshared],
2097 dependencies : [threads,
2098 libcrypt,
2099 libopenssl,
2100 libp11kit,
2101 libpwquality],
2102 install_rpath : rootlibexecdir,
2103 install : true,
2104 install_dir : rootbindir)
Lennart Poettering26cf9fb2019-07-04 19:06:26 +02002105
2106 if conf.get('HAVE_PAM') == 1
2107 version_script_arg = join_paths(project_source_root, pam_systemd_home_sym)
2108 pam_systemd = shared_library(
2109 'pam_systemd_home',
2110 pam_systemd_home_c,
2111 name_prefix : '',
2112 include_directories : includes,
2113 link_args : ['-shared',
2114 '-Wl,--version-script=' + version_script_arg],
2115 link_with : [libsystemd_static,
2116 libshared_static],
2117 dependencies : [threads,
2118 libpam,
2119 libpam_misc,
2120 libcrypt],
2121 link_depends : pam_systemd_home_sym,
2122 install : true,
2123 install_dir : pamlibdir)
2124 endif
Lennart Poettering70a5db52019-07-04 18:35:39 +02002125endif
2126
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01002127foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
2128 meson.add_install_script(meson_make_symlink,
2129 join_paths(rootbindir, 'systemctl'),
2130 join_paths(rootsbindir, alias))
2131endforeach
2132
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002133if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002134 executable('systemd-backlight',
2135 'src/backlight/backlight.c',
2136 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002137 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002138 install_rpath : rootlibexecdir,
2139 install : true,
2140 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002141endif
2142
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002143if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002144 executable('systemd-rfkill',
2145 'src/rfkill/rfkill.c',
2146 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002147 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002148 install_rpath : rootlibexecdir,
2149 install : true,
2150 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002151endif
2152
2153executable('systemd-system-update-generator',
2154 'src/system-update-generator/system-update-generator.c',
2155 include_directories : includes,
2156 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002157 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002158 install : true,
2159 install_dir : systemgeneratordir)
2160
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002161if conf.get('HAVE_LIBCRYPTSETUP') == 1
Lennart Poettering08669702019-08-22 10:21:11 +02002162 systemd_cryptsetup_sources = files('''
2163 src/cryptsetup/cryptsetup.c
2164 src/cryptsetup/cryptsetup-pkcs11.h
2165'''.split())
2166
2167 if conf.get('HAVE_P11KIT') == 1
2168 systemd_cryptsetup_sources += files('src/cryptsetup/cryptsetup-pkcs11.c')
2169 endif
2170
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002171 executable('systemd-cryptsetup',
Lennart Poettering08669702019-08-22 10:21:11 +02002172 systemd_cryptsetup_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002173 include_directories : includes,
2174 link_with : [libshared],
Lennart Poettering08669702019-08-22 10:21:11 +02002175 dependencies : [libcryptsetup,
2176 libp11kit],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002177 install_rpath : rootlibexecdir,
2178 install : true,
2179 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002180
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002181 executable('systemd-cryptsetup-generator',
2182 'src/cryptsetup/cryptsetup-generator.c',
2183 include_directories : includes,
2184 link_with : [libshared],
2185 dependencies : [libcryptsetup],
2186 install_rpath : rootlibexecdir,
2187 install : true,
2188 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002189
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002190 executable('systemd-veritysetup',
2191 'src/veritysetup/veritysetup.c',
2192 include_directories : includes,
2193 link_with : [libshared],
2194 dependencies : [libcryptsetup],
2195 install_rpath : rootlibexecdir,
2196 install : true,
2197 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002198
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002199 executable('systemd-veritysetup-generator',
2200 'src/veritysetup/veritysetup-generator.c',
2201 include_directories : includes,
2202 link_with : [libshared],
2203 dependencies : [libcryptsetup],
2204 install_rpath : rootlibexecdir,
2205 install : true,
2206 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002207endif
2208
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002209if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002210 executable('systemd-sysv-generator',
2211 'src/sysv-generator/sysv-generator.c',
2212 include_directories : includes,
2213 link_with : [libshared],
2214 install_rpath : rootlibexecdir,
2215 install : true,
2216 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002217
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002218 executable('systemd-rc-local-generator',
2219 'src/rc-local-generator/rc-local-generator.c',
2220 include_directories : includes,
2221 link_with : [libshared],
2222 install_rpath : rootlibexecdir,
2223 install : true,
2224 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002225endif
2226
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002227if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002228 executable('systemd-hostnamed',
2229 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002230 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002231 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002232 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002233 install : true,
2234 install_dir : rootlibexecdir)
2235
2236 exe = executable('hostnamectl',
2237 'src/hostname/hostnamectl.c',
2238 include_directories : includes,
2239 link_with : [libshared],
2240 install_rpath : rootlibexecdir,
2241 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002242 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002243endif
2244
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002245if conf.get('ENABLE_LOCALED') == 1
2246 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002247 # logind will load libxkbcommon.so dynamically on its own
2248 deps = [libdl]
2249 else
2250 deps = []
2251 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002252
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002253 executable('systemd-localed',
2254 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002255 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002256 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002257 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002258 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002259 install : true,
2260 install_dir : rootlibexecdir)
2261
2262 exe = executable('localectl',
2263 localectl_sources,
2264 include_directories : includes,
2265 link_with : [libshared],
2266 install_rpath : rootlibexecdir,
2267 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002268 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002269endif
2270
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002271if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002272 executable('systemd-timedated',
2273 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002274 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002275 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002276 install_rpath : rootlibexecdir,
2277 install : true,
2278 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002279endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002280
Yu Watanabe6129ec82018-05-03 18:07:43 +09002281if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002282 exe = executable('timedatectl',
2283 'src/timedate/timedatectl.c',
2284 include_directories : includes,
2285 install_rpath : rootlibexecdir,
2286 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002287 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002288 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002289 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002290endif
2291
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002292if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002293 executable('systemd-timesyncd',
2294 systemd_timesyncd_sources,
2295 include_directories : includes,
2296 link_with : [libshared],
2297 dependencies : [threads,
2298 libm],
2299 install_rpath : rootlibexecdir,
2300 install : true,
2301 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002302
2303 executable('systemd-time-wait-sync',
2304 'src/time-wait-sync/time-wait-sync.c',
2305 include_directories : includes,
2306 link_with : [libshared],
2307 install_rpath : rootlibexecdir,
2308 install : true,
2309 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002310endif
2311
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002312if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002313 executable('systemd-machined',
2314 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002315 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002316 link_with : [libmachine_core,
2317 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002318 install_rpath : rootlibexecdir,
2319 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002320 install_dir : rootlibexecdir)
2321
2322 exe = executable('machinectl',
2323 'src/machine/machinectl.c',
2324 include_directories : includes,
2325 link_with : [libshared],
2326 dependencies : [threads,
2327 libxz,
2328 liblz4],
2329 install_rpath : rootlibexecdir,
2330 install : true,
2331 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002332 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002333endif
2334
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002335if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002336 executable('systemd-importd',
2337 systemd_importd_sources,
2338 include_directories : includes,
2339 link_with : [libshared],
2340 dependencies : [threads],
2341 install_rpath : rootlibexecdir,
2342 install : true,
2343 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002344
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002345 systemd_pull = executable('systemd-pull',
2346 systemd_pull_sources,
2347 include_directories : includes,
2348 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002349 dependencies : [versiondep,
2350 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002351 libz,
2352 libbzip2,
2353 libxz,
2354 libgcrypt],
2355 install_rpath : rootlibexecdir,
2356 install : true,
2357 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002358
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002359 systemd_import = executable('systemd-import',
2360 systemd_import_sources,
2361 include_directories : includes,
2362 link_with : [libshared],
2363 dependencies : [libcurl,
2364 libz,
2365 libbzip2,
2366 libxz],
2367 install_rpath : rootlibexecdir,
2368 install : true,
2369 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002370
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002371 systemd_import_fs = executable('systemd-import-fs',
2372 systemd_import_fs_sources,
2373 include_directories : includes,
2374 link_with : [libshared],
2375 install_rpath : rootlibexecdir,
2376 install : true,
2377 install_dir : rootlibexecdir)
2378
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002379 systemd_export = executable('systemd-export',
2380 systemd_export_sources,
2381 include_directories : includes,
2382 link_with : [libshared],
2383 dependencies : [libcurl,
2384 libz,
2385 libbzip2,
2386 libxz],
2387 install_rpath : rootlibexecdir,
2388 install : true,
2389 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002390
2391 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002392endif
2393
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002394if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002395 exe = executable('systemd-journal-upload',
2396 systemd_journal_upload_sources,
2397 include_directories : includes,
2398 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002399 dependencies : [versiondep,
2400 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002401 libcurl,
2402 libgnutls,
2403 libxz,
2404 liblz4],
2405 install_rpath : rootlibexecdir,
2406 install : true,
2407 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002408 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002409endif
2410
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002411if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002412 s_j_remote = executable('systemd-journal-remote',
2413 systemd_journal_remote_sources,
2414 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002415 link_with : [libshared,
2416 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002417 dependencies : [threads,
2418 libmicrohttpd,
2419 libgnutls,
2420 libxz,
2421 liblz4],
2422 install_rpath : rootlibexecdir,
2423 install : true,
2424 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002425
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002426 s_j_gatewayd = executable('systemd-journal-gatewayd',
2427 systemd_journal_gatewayd_sources,
2428 include_directories : includes,
2429 link_with : [libshared],
2430 dependencies : [threads,
2431 libmicrohttpd,
2432 libgnutls,
2433 libxz,
2434 liblz4],
2435 install_rpath : rootlibexecdir,
2436 install : true,
2437 install_dir : rootlibexecdir)
2438 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002439endif
2440
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002441if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002442 executable('systemd-coredump',
2443 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002444 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002445 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002446 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002447 libacl,
2448 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002449 libxz,
2450 liblz4],
2451 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002452 install : true,
2453 install_dir : rootlibexecdir)
2454
2455 exe = executable('coredumpctl',
2456 coredumpctl_sources,
2457 include_directories : includes,
2458 link_with : [libshared],
2459 dependencies : [threads,
2460 libxz,
2461 liblz4],
2462 install_rpath : rootlibexecdir,
2463 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002464 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002465endif
2466
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002467if conf.get('ENABLE_PSTORE') == 1
2468 executable('systemd-pstore',
2469 systemd_pstore_sources,
2470 include_directories : includes,
2471 link_with : [libshared],
2472 dependencies : [threads,
2473 libacl,
2474 libdw,
2475 libxz,
2476 liblz4],
2477 install_rpath : rootlibexecdir,
2478 install : true,
2479 install_dir : rootlibexecdir)
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002480endif
2481
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002482if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002483 exe = executable('systemd-binfmt',
2484 'src/binfmt/binfmt.c',
2485 include_directories : includes,
2486 link_with : [libshared],
2487 install_rpath : rootlibexecdir,
2488 install : true,
2489 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002490 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002491
2492 meson.add_install_script('sh', '-c',
2493 mkdir_p.format(binfmtdir))
2494 meson.add_install_script('sh', '-c',
2495 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2496endif
2497
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002498if conf.get('ENABLE_REPART') == 1
2499 executable('systemd-repart',
2500 systemd_repart_sources,
2501 include_directories : includes,
2502 link_with : [libshared],
2503 dependencies : [threads,
2504 libcryptsetup,
2505 libblkid,
2506 libfdisk,
2507 libopenssl],
2508 install_rpath : rootlibexecdir,
2509 install : true,
2510 install_dir : rootbindir)
2511endif
2512
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002513if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002514 executable('systemd-vconsole-setup',
2515 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002516 include_directories : includes,
2517 link_with : [libshared],
2518 install_rpath : rootlibexecdir,
2519 install : true,
2520 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002521endif
2522
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002523if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002524 executable('systemd-random-seed',
2525 'src/random-seed/random-seed.c',
2526 include_directories : includes,
2527 link_with : [libshared],
2528 install_rpath : rootlibexecdir,
2529 install : true,
2530 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002531endif
2532
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002533if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002534 executable('systemd-firstboot',
2535 'src/firstboot/firstboot.c',
2536 include_directories : includes,
2537 link_with : [libshared],
2538 dependencies : [libcrypt],
2539 install_rpath : rootlibexecdir,
2540 install : true,
2541 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002542endif
2543
2544executable('systemd-remount-fs',
2545 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002546 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002547 link_with : [libcore_shared,
2548 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002549 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002550 install : true,
2551 install_dir : rootlibexecdir)
2552
2553executable('systemd-machine-id-setup',
2554 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002555 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002556 link_with : [libcore_shared,
2557 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002558 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002559 install : true,
2560 install_dir : rootbindir)
2561
2562executable('systemd-fsck',
2563 'src/fsck/fsck.c',
2564 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002565 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002566 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002567 install : true,
2568 install_dir : rootlibexecdir)
2569
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002570executable('systemd-growfs',
2571 'src/partition/growfs.c',
2572 include_directories : includes,
2573 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002574 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002575 install_rpath : rootlibexecdir,
2576 install : true,
2577 install_dir : rootlibexecdir)
2578
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002579executable('systemd-makefs',
2580 'src/partition/makefs.c',
2581 include_directories : includes,
2582 link_with : [libshared],
2583 install_rpath : rootlibexecdir,
2584 install : true,
2585 install_dir : rootlibexecdir)
2586
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002587executable('systemd-sleep',
2588 'src/sleep/sleep.c',
2589 include_directories : includes,
2590 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002591 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002592 install : true,
2593 install_dir : rootlibexecdir)
2594
Yu Watanabed25e1272019-01-03 02:32:57 +09002595install_data('src/sleep/sleep.conf',
2596 install_dir : pkgsysconfdir)
2597
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002598exe = executable('systemd-sysctl',
2599 'src/sysctl/sysctl.c',
2600 include_directories : includes,
2601 link_with : [libshared],
2602 install_rpath : rootlibexecdir,
2603 install : true,
2604 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002605public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002606
2607executable('systemd-ac-power',
2608 'src/ac-power/ac-power.c',
2609 include_directories : includes,
2610 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002611 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002612 install : true,
2613 install_dir : rootlibexecdir)
2614
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002615exe = executable('systemd-detect-virt',
2616 'src/detect-virt/detect-virt.c',
2617 include_directories : includes,
2618 link_with : [libshared],
2619 install_rpath : rootlibexecdir,
2620 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002621public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002622
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002623exe = executable('systemd-delta',
2624 'src/delta/delta.c',
2625 include_directories : includes,
2626 link_with : [libshared],
2627 install_rpath : rootlibexecdir,
2628 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002629public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002630
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002631exe = executable('systemd-escape',
2632 'src/escape/escape.c',
2633 include_directories : includes,
2634 link_with : [libshared],
2635 install_rpath : rootlibexecdir,
2636 install : true,
2637 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002638public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002639
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002640exe = executable('systemd-notify',
2641 'src/notify/notify.c',
2642 include_directories : includes,
2643 link_with : [libshared],
2644 install_rpath : rootlibexecdir,
2645 install : true,
2646 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002647public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002648
2649executable('systemd-volatile-root',
2650 'src/volatile-root/volatile-root.c',
2651 include_directories : includes,
2652 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002653 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002654 install : true,
2655 install_dir : rootlibexecdir)
2656
2657executable('systemd-cgroups-agent',
2658 'src/cgroups-agent/cgroups-agent.c',
2659 include_directories : includes,
2660 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002661 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002662 install : true,
2663 install_dir : rootlibexecdir)
2664
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002665exe = executable('systemd-id128',
2666 'src/id128/id128.c',
2667 include_directories : includes,
2668 link_with : [libshared],
2669 install_rpath : rootlibexecdir,
2670 install : true)
2671public_programs += exe
2672
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002673exe = executable('systemd-path',
2674 'src/path/path.c',
2675 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002676 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002677 install_rpath : rootlibexecdir,
2678 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002679public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002680
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002681exe = executable('systemd-ask-password',
2682 'src/ask-password/ask-password.c',
2683 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002684 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002685 install_rpath : rootlibexecdir,
2686 install : true,
2687 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002688public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002689
2690executable('systemd-reply-password',
2691 'src/reply-password/reply-password.c',
2692 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002693 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002694 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002695 install : true,
2696 install_dir : rootlibexecdir)
2697
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002698exe = executable('systemd-tty-ask-password-agent',
2699 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2700 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002701 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002702 install_rpath : rootlibexecdir,
2703 install : true,
2704 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002705public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002706
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002707exe = executable('systemd-cgls',
2708 'src/cgls/cgls.c',
2709 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002710 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002711 install_rpath : rootlibexecdir,
2712 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002713public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002714
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002715exe = executable('systemd-cgtop',
2716 'src/cgtop/cgtop.c',
2717 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002718 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002719 install_rpath : rootlibexecdir,
2720 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002721public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002722
2723executable('systemd-initctl',
2724 'src/initctl/initctl.c',
2725 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002726 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002727 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002728 install : true,
2729 install_dir : rootlibexecdir)
2730
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002731exe = executable('systemd-mount',
2732 'src/mount/mount-tool.c',
2733 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002734 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek7d991d42019-04-04 13:41:47 +02002735 dependencies: [libmount],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002736 install_rpath : rootlibexecdir,
2737 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002738public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002739
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002740meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002741 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002742
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002743exe = executable('systemd-run',
2744 'src/run/run.c',
2745 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002746 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002747 install_rpath : rootlibexecdir,
2748 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002749public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002750
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002751exe = executable('systemd-stdio-bridge',
2752 'src/stdio-bridge/stdio-bridge.c',
2753 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002754 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002755 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002756 install_rpath : rootlibexecdir,
2757 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002758public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002759
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002760exe = executable('busctl',
2761 'src/busctl/busctl.c',
2762 'src/busctl/busctl-introspect.c',
2763 'src/busctl/busctl-introspect.h',
2764 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002765 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002766 install_rpath : rootlibexecdir,
2767 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002768public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002769
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002770if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002771 exe = executable('systemd-sysusers',
2772 'src/sysusers/sysusers.c',
2773 include_directories : includes,
2774 link_with : [libshared],
2775 install_rpath : rootlibexecdir,
2776 install : true,
2777 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002778 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002779endif
2780
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002781if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002782 exe = executable('systemd-tmpfiles',
2783 'src/tmpfiles/tmpfiles.c',
2784 include_directories : includes,
2785 link_with : [libshared],
2786 dependencies : [libacl],
2787 install_rpath : rootlibexecdir,
2788 install : true,
2789 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002790 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002791
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002792 if want_tests != 'false'
2793 test('test-systemd-tmpfiles',
2794 test_systemd_tmpfiles_py,
2795 # https://github.com/mesonbuild/meson/issues/2681
2796 args : exe.full_path())
2797 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002798endif
2799
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002800if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002801 exe = executable('systemd-hwdb',
2802 'src/hwdb/hwdb.c',
2803 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2804 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002805 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002806 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002807 install : true,
2808 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002809 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002810endif
2811
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002812if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002813 executable('systemd-quotacheck',
2814 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002815 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002816 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002817 install_rpath : rootlibexecdir,
2818 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002819 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002820endif
2821
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002822exe = executable('systemd-socket-proxyd',
2823 'src/socket-proxy/socket-proxyd.c',
2824 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002825 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002826 dependencies : [threads],
2827 install_rpath : rootlibexecdir,
2828 install : true,
2829 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002830public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002831
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002832exe = executable('systemd-udevd',
2833 systemd_udevd_sources,
2834 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002835 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002836 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002837 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002838 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002839 dependencies : [versiondep,
2840 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002841 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002842 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002843 libacl,
2844 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002845 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002846 install : true,
2847 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002848public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002849
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002850exe = executable('udevadm',
2851 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002852 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002853 include_directories : includes,
2854 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002855 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002856 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002857 dependencies : [versiondep,
2858 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002859 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002860 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002861 libacl,
2862 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002863 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002864 install : true,
2865 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002866public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002867
2868executable('systemd-shutdown',
2869 systemd_shutdown_sources,
2870 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002871 link_with : [libcore_shared,
2872 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002873 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002874 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002875 install : true,
2876 install_dir : rootlibexecdir)
2877
2878executable('systemd-update-done',
2879 'src/update-done/update-done.c',
2880 include_directories : includes,
2881 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002882 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002883 install : true,
2884 install_dir : rootlibexecdir)
2885
2886executable('systemd-update-utmp',
2887 'src/update-utmp/update-utmp.c',
2888 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002889 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002890 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002891 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002892 install : true,
2893 install_dir : rootlibexecdir)
2894
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002895if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002896 executable('systemd-modules-load',
2897 'src/modules-load/modules-load.c',
2898 include_directories : includes,
2899 link_with : [libshared],
2900 dependencies : [libkmod],
2901 install_rpath : rootlibexecdir,
2902 install : true,
2903 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002904
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002905 meson.add_install_script('sh', '-c',
2906 mkdir_p.format(modulesloaddir))
2907 meson.add_install_script('sh', '-c',
2908 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002909endif
2910
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002911exe = executable('systemd-nspawn',
2912 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002913 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002914 link_with : [libcore_shared,
2915 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002916 libshared],
Franck Bui82384232019-03-22 11:09:08 +01002917 dependencies : [libblkid,
2918 libseccomp],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002919 install_rpath : rootlibexecdir,
2920 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002921public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002922
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002923if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002924 executable('systemd-networkd',
2925 systemd_networkd_sources,
Yu Watanabe737f1402019-10-30 17:02:15 +09002926 include_directories : network_include_dir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002927 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002928 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002929 libudev_static,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002930 networkd_link_with],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002931 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002932 install_rpath : rootlibexecdir,
2933 install : true,
2934 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002935
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002936 executable('systemd-networkd-wait-online',
2937 systemd_networkd_wait_online_sources,
2938 include_directories : includes,
2939 link_with : [libnetworkd_core,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002940 networkd_link_with],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002941 install_rpath : rootlibexecdir,
2942 install : true,
2943 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002944
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002945 exe = executable('networkctl',
2946 networkctl_sources,
2947 include_directories : includes,
2948 link_with : [libsystemd_network,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002949 networkd_link_with],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002950 install_rpath : rootlibexecdir,
2951 install : true,
2952 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002953 public_programs += exe
Yu Watanabe426c1d32019-07-13 03:35:04 +09002954
2955 executable('systemd-network-generator',
2956 network_generator_sources,
2957 include_directories : includes,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002958 link_with : [networkd_link_with],
Yu Watanabe426c1d32019-07-13 03:35:04 +09002959 install_rpath : rootlibexecdir,
2960 install : true,
2961 install_dir : rootlibexecdir)
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002962endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002963
2964executable('systemd-sulogin-shell',
2965 ['src/sulogin-shell/sulogin-shell.c'],
2966 include_directories : includes,
2967 link_with : [libshared],
2968 install_rpath : rootlibexecdir,
2969 install : true,
2970 install_dir : rootlibexecdir)
2971
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002972############################################################
2973
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002974custom_target(
2975 'systemd-runtest.env',
2976 output : 'systemd-runtest.env',
2977 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05002978 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002979 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002980 '} >@OUTPUT@'],
2981 build_by_default : true)
2982
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002983foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002984 sources = tuple[0]
2985 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2986 dependencies = tuple[2]
2987 condition = tuple.length() >= 4 ? tuple[3] : ''
2988 type = tuple.length() >= 5 ? tuple[4] : ''
2989 defs = tuple.length() >= 6 ? tuple[5] : []
2990 incs = tuple.length() >= 7 ? tuple[6] : includes
2991 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002992
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002993 name = sources[0].split('/')[-1].split('.')[0]
2994 if type.startswith('timeout=')
2995 timeout = type.split('=')[1].to_int()
2996 type = ''
2997 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002998
2999 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003000 exe = executable(
3001 name,
3002 sources,
3003 include_directories : incs,
3004 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01003005 dependencies : [versiondep,
3006 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003007 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003008 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003009 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02003010 install : install_tests,
3011 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04003012
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003013 if type == 'manual'
3014 message('@0@ is a manual test'.format(name))
3015 elif type == 'unsafe' and want_tests != 'unsafe'
3016 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003017 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003018 test(name, exe,
3019 env : test_env,
3020 timeout : timeout)
3021 endif
3022 else
3023 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
3024 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003025endforeach
3026
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003027exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003028 'test-libsystemd-sym',
3029 test_libsystemd_sym_c,
3030 include_directories : includes,
3031 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003032 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003033 install : install_tests,
3034 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003035if want_tests != 'false'
3036 test('test-libsystemd-sym', exe)
3037endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04003038
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003039exe = executable(
3040 'test-libsystemd-static-sym',
3041 test_libsystemd_sym_c,
3042 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003043 link_with : [install_libsystemd_static],
3044 dependencies : [threads], # threads is already included in dependencies on the library,
3045 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09003046 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003047 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003048 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003049if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003050 test('test-libsystemd-static-sym', exe)
3051endif
3052
3053exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003054 'test-libudev-sym',
3055 test_libudev_sym_c,
3056 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003057 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003058 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003059 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003060 install : install_tests,
3061 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003062if want_tests != 'false'
3063 test('test-libudev-sym', exe)
3064endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003065
3066exe = executable(
3067 'test-libudev-static-sym',
3068 test_libudev_sym_c,
3069 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003070 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003071 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003072 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003073 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003074 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003075if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003076 test('test-libudev-static-sym', exe)
3077endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04003078
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003079############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003080
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003081fuzzer_exes = []
3082
Michael Olbrich59967402018-11-11 11:27:35 +01003083if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003084foreach tuple : fuzzers
3085 sources = tuple[0]
3086 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3087 dependencies = tuple[2]
3088 defs = tuple.length() >= 4 ? tuple[3] : []
3089 incs = tuple.length() >= 5 ? tuple[4] : includes
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003090 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003091
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003092 if want_ossfuzz or want_fuzzbuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003093 dependencies += fuzzing_engine
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003094 elif want_libfuzzer
3095 if fuzzing_engine.found()
3096 dependencies += fuzzing_engine
3097 else
3098 link_args += ['-fsanitize=fuzzer']
3099 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003100 else
3101 sources += 'src/fuzz/fuzz-main.c'
3102 endif
3103
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00003104 if want_fuzzbuzz
3105 sources += 'src/fuzz/fuzzer-entry-point.c'
3106 endif
3107
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003108 name = sources[0].split('/')[-1].split('.')[0]
3109
3110 fuzzer_exes += executable(
3111 name,
3112 sources,
3113 include_directories : [incs, include_directories('src/fuzz')],
3114 link_with : link_with,
3115 dependencies : dependencies,
3116 c_args : defs,
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003117 link_args: link_args,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003118 install : false)
3119endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01003120endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003121
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01003122run_target('fuzzers',
3123 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003124 command : ['true'])
3125
3126############################################################
3127
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003128make_directive_index_py = find_program('tools/make-directive-index.py')
3129make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04003130xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04003131hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek62d39992019-11-15 11:32:24 +01003132autosuspend_update_sh = find_program('tools/meson-autosuspend-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003133
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003134subdir('sysctl.d')
3135subdir('sysusers.d')
3136subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmek4f10b802019-10-08 16:52:10 +02003137subdir('hwdb.d')
3138subdir('units')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01003139subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003140subdir('network')
3141subdir('man')
3142subdir('shell-completion/bash')
3143subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003144subdir('docs/sysvinit')
3145subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003146
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003147install_subdir('factory/etc',
3148 install_dir : factorydir)
3149
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003150install_data('xorg/50-systemd-user.sh',
3151 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01003152install_data('modprobe.d/systemd.conf',
3153 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003154install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003155 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003156 'NEWS',
3157 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05303158 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07003159 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003160 'docs/ENVIRONMENT.md',
Zbigniew Jędrzejewski-Szmek5425f8a2020-01-15 13:45:04 +01003161 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003162 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07003163 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003164 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003165 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
3166 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003167
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04003168meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
3169meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
3170
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003171############################################################
3172
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003173meson_check_help = find_program('tools/meson-check-help.sh')
3174
3175foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003176 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003177 if want_tests != 'false'
3178 test('check-help-' + name,
3179 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003180 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003181 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003182endforeach
3183
3184############################################################
3185
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02003186check_directives_sh = find_program('tools/check-directives.sh')
3187
3188if want_tests != 'false'
3189 test('check-directives',
3190 check_directives_sh,
3191 args : project_source_root)
3192endif
3193
3194############################################################
3195
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003196# Enable tests for all supported sanitizers
3197foreach tuple : sanitizers
3198 sanitizer = tuple[0]
3199 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003200
Yu Watanabe7a6397d2018-05-15 20:18:24 +09003201 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003202 prev = ''
3203 foreach p : fuzz_regression_tests
3204 b = p.split('/')[-2]
3205 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003206
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003207 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003208
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003209 if name != prev
3210 if want_tests == 'false'
3211 message('Not compiling @0@ because tests is set to false'.format(name))
3212 elif slow_tests
3213 exe = custom_target(
3214 name,
3215 output : name,
3216 depends : build,
3217 command : [env, 'ln', '-fs',
3218 join_paths(build.full_path(), b),
3219 '@OUTPUT@'],
3220 build_by_default : true)
3221 else
3222 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3223 endif
3224 endif
3225 prev = name
3226
3227 if want_tests != 'false' and slow_tests
3228 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3229 env,
3230 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003231 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003232 endif
3233 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003234 endif
3235endforeach
3236
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003237
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003238############################################################
3239
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003240if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003241 all_files = run_command(
3242 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003243 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003244 'ls-files',
3245 ':/*.[ch]'])
3246 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003247
userwithuide85a6902017-08-09 13:41:44 +00003248 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003249 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003250 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003251 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003252 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003253 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003254 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003255endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003256
3257if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003258 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003259 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003260 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003261 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003262endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003263
3264if git.found()
3265 git_head = run_command(
3266 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003267 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003268 'rev-parse', 'HEAD']).stdout().strip()
3269 git_head_short = run_command(
3270 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003271 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003272 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3273
3274 run_target(
3275 'git-snapshot',
3276 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003277 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003278 git_head_short),
3279 '--prefix', 'systemd-@0@/'.format(git_head),
3280 'HEAD'])
3281endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003282
3283############################################################
3284
Lennart Poettering51b13862017-12-20 12:51:14 +01003285meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3286run_target(
3287 'check-api-docs',
3288 depends : [man, libsystemd, libudev],
3289 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3290
3291############################################################
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003292watchdog_opt = service_watchdog == '' ? 'disabled' : service_watchdog
Lennart Poettering51b13862017-12-20 12:51:14 +01003293
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003294status = [
3295 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3296
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003297 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003298 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003299 'prefix directory: @0@'.format(prefixdir),
3300 'rootprefix directory: @0@'.format(rootprefixdir),
3301 'sysconf directory: @0@'.format(sysconfdir),
3302 'include directory: @0@'.format(includedir),
3303 'lib directory: @0@'.format(libdir),
3304 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003305 'SysV init scripts: @0@'.format(sysvinit_path),
3306 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003307 'PAM modules directory: @0@'.format(pamlibdir),
3308 'PAM configuration directory: @0@'.format(pamconfdir),
3309 'RPM macros directory: @0@'.format(rpmmacrosdir),
3310 'modprobe.d directory: @0@'.format(modprobedir),
3311 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3312 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3313 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3314 'bash completions directory: @0@'.format(bashcompletiondir),
3315 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003316 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003317 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3318 get_option('debug-tty')),
3319 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003320 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003321 'maximum system UID: @0@'.format(system_uid_max),
3322 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003323 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3324 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3325 'minimum container UID base: @0@'.format(container_uid_base_min),
3326 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003327 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003328 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003329 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003330 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003331 'nobody user name: @0@'.format(nobody_user),
3332 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003333 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003334 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003335
3336 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003337 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003338 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003339 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003340 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +02003341 'default locale: @0@'.format(default_locale),
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +01003342 'default user $PATH: @0@'.format(default_user_path_display),
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003343 'systemd service watchdog: @0@'.format(watchdog_opt)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003344
3345alt_dns_servers = '\n '.join(dns_servers.split(' '))
3346alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3347status += [
3348 'default DNS servers: @0@'.format(alt_dns_servers),
3349 'default NTP servers: @0@'.format(alt_ntp_servers)]
3350
3351alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3352 '@@0@'.format(time_epoch)).stdout().strip()
3353status += [
3354 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3355
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003356status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003357 'static libsystemd: @0@'.format(static_libsystemd),
3358 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003359
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003360# TODO:
3361# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3362# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3363# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3364
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003365if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003366 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003367
3368 if have_gnu_efi
3369 status += [
3370 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003371 'EFI CC @0@'.format(' '.join(efi_cc)),
Zbigniew Jędrzejewski-Szmekce4121c2020-02-03 20:38:54 +01003372 'EFI lds: @0@'.format(efi_lds),
3373 'EFI crt0: @0@'.format(efi_crt0),
Yu Watanabe359b4962017-11-25 20:35:24 +09003374 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003375 endif
3376endif
3377
3378found = []
3379missing = []
3380
3381foreach tuple : [
3382 ['libcryptsetup'],
3383 ['PAM'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003384 ['pwquality'],
Yu Watanabec7575172020-01-31 00:03:38 +09003385 ['libfdisk'],
Lennart Poettering839fddb2019-11-05 11:49:27 +01003386 ['p11kit'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003387 ['AUDIT'],
3388 ['IMA'],
3389 ['AppArmor'],
3390 ['SELinux'],
3391 ['SECCOMP'],
3392 ['SMACK'],
3393 ['zlib'],
3394 ['xz'],
3395 ['lz4'],
3396 ['bzip2'],
3397 ['ACL'],
3398 ['gcrypt'],
3399 ['qrencode'],
3400 ['microhttpd'],
3401 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003402 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003403 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003404 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003405 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003406 ['libidn'],
3407 ['libiptc'],
3408 ['elfutils'],
3409 ['binfmt'],
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01003410 ['repart'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003411 ['vconsole'],
3412 ['quotacheck'],
3413 ['tmpfiles'],
3414 ['environment.d'],
3415 ['sysusers'],
3416 ['firstboot'],
3417 ['randomseed'],
3418 ['backlight'],
3419 ['rfkill'],
3420 ['logind'],
3421 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003422 ['portabled'],
Lennart Poetteringd093b622019-07-04 18:33:30 +02003423 ['userdb'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003424 ['homed'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003425 ['importd'],
3426 ['hostnamed'],
3427 ['timedated'],
3428 ['timesyncd'],
3429 ['localed'],
3430 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003431 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003432 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3433 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003434 ['coredump'],
Eric DeVolder9b4abc62019-05-16 08:59:01 -05003435 ['pstore'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003436 ['polkit'],
3437 ['legacy pkla', install_polkit_pkla],
3438 ['efi'],
3439 ['gnu-efi', have_gnu_efi],
3440 ['kmod'],
3441 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003442 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003443 ['blkid'],
3444 ['dbus'],
3445 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003446 ['nss-myhostname'],
3447 ['nss-mymachines'],
3448 ['nss-resolve'],
3449 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003450 ['hwdb'],
3451 ['tpm'],
3452 ['man pages', want_man],
3453 ['html pages', want_html],
3454 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003455 ['SysV compat'],
3456 ['utmp'],
3457 ['ldconfig'],
3458 ['hibernate'],
3459 ['adm group', get_option('adm-group')],
3460 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003461 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003462 ['debug hashmap'],
3463 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003464 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003465 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003466 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003467 ['link-udev-shared', get_option('link-udev-shared')],
3468 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Robert Scheck5ac8b502020-01-08 02:36:07 +01003469 ['link-networkd-shared', get_option('link-networkd-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003470]
3471
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003472 if tuple.length() >= 2
3473 cond = tuple[1]
3474 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003475 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3476 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003477 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003478 endif
3479 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003480 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003481 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003482 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003483 endif
3484endforeach
3485
3486status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003487 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003488 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003489 '',
3490 'disabled features: @0@'.format(', '.join(missing)),
3491 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003492message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003493
3494if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003495 warning('\n' +
3496 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3497 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3498 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003499endif