blob: f0f9bdb0ce43da2aac709af2dc3a9898482e7537 [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
452conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
453conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
454conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
455conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
456conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
457conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
458conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
459
460decl_headers = '''
461#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100462#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400463'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400464
465foreach decl : ['char16_t',
466 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100467 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400468 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400469
470 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200471 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
472
473 if decl == 'struct statx'
474 if have
475 want_linux_stat_h = false
476 else
477 have = cc.sizeof(decl,
478 prefix : decl_headers + '#include <linux/stat.h>',
479 args : '-D_GNU_SOURCE') > 0
480 want_linux_stat_h = have
481 endif
482 endif
483
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200484 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400485endforeach
486
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200487conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700488
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400489foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200490 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400491endforeach
492
493foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100494 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100495 ['gettid', '''#include <sys/types.h>
496 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100497 ['pivot_root', '''#include <stdlib.h>
498 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100499 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400500 #include <sys/stat.h>
501 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100502 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100503 ['renameat2', '''#include <stdio.h>
504 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400505 ['kcmp', '''#include <linux/kcmp.h>'''],
506 ['keyctl', '''#include <sys/types.h>
507 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100508 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400509 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200510 ['bpf', '''#include <sys/syscall.h>
511 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100512 ['statx', '''#include <sys/types.h>
513 #include <sys/stat.h>
514 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100515 ['explicit_bzero' , '''#include <string.h>'''],
516 ['reallocarray', '''#include <malloc.h>'''],
Michal Sekletarb070c7c2019-03-12 18:58:26 +0100517 ['set_mempolicy', '''#include <stdlib.h>
518 #include <unistd.h>'''],
519 ['get_mempolicy', '''#include <stdlib.h>
520 #include <unistd.h>'''],
Lennart Poettering5f152f42019-10-25 16:06:06 +0200521 ['pidfd_send_signal', '''#include <stdlib.h>
522 #include <unistd.h>
523 #include <signal.h>
524 #include <sys/wait.h>'''],
525 ['pidfd_open', '''#include <stdlib.h>
526 #include <unistd.h>
527 #include <signal.h>
528 #include <sys/wait.h>'''],
Lennart Poettering5ead4e82019-10-30 16:29:42 +0100529 ['rt_sigqueueinfo', '''#include <stdlib.h>
530 #include <unistd.h>
531 #include <signal.h>
532 #include <sys/wait.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400533]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400534
Lennart Poettering85db59b2017-12-25 12:01:14 +0100535 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200536 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400537endforeach
538
Lennart Poettering85db59b2017-12-25 12:01:14 +0100539if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200540 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200541 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400542else
543 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200544 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200545 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400546endif
547
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400548#####################################################################
549
Davide Cavalca1485aac2019-02-27 11:19:07 -0500550vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
551 project_source_root,
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100552 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100553 meson.project_version()]
554
Louis Taylord1084aa2019-01-21 21:45:36 +0000555version_h = vcs_tag(
556 input : 'src/version/version.h.in',
557 output : 'version.h',
558 command: vcs_tagger)
559
560versiondep = declare_dependency(sources: version_h)
561
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400562sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400563awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400564m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400565stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400566git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100567env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100568perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400569
Davide Cavalca1485aac2019-02-27 11:19:07 -0500570meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400571mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400572test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
573splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400574
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400575# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
576# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500577progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400578 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400579 ['kmod', '/usr/bin/kmod' ],
580 ['kexec', '/usr/sbin/kexec' ],
581 ['sulogin', '/usr/sbin/sulogin' ],
582 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
583 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
584 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
585 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
Michael Biebl6db90462019-07-18 01:24:00 +0200586 ['nologin', '/usr/sbin/nologin', ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400587 ]
588foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400589 path = get_option(prog[0] + '-path')
590 if path != ''
591 message('Using @1@ for @0@'.format(prog[0], path))
592 else
593 exe = find_program(prog[0],
594 '/usr/sbin/' + prog[0],
595 '/sbin/' + prog[0],
596 required: false)
597 path = exe.found() ? exe.path() : prog[1]
598 endif
599 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
600 conf.set_quoted(name, path)
601 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400602endforeach
603
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500604conf.set_quoted('TELINIT', get_option('telinit-path'))
605
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400606if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100607 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400608endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400609
610############################################################
611
612gperf = find_program('gperf')
613
614gperf_test_format = '''
615#include <string.h>
616const char * in_word_set(const char *, @0@);
617@1@
618'''
619gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
620gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
621gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
622if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400623 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400624else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400625 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
626 if cc.compiles(gperf_test)
627 gperf_len_type = 'unsigned'
628 else
629 error('unable to determine gperf len type')
630 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400631endif
632message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400633conf.set('GPERF_LEN_TYPE', gperf_len_type,
634 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400635
636############################################################
637
638if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400639 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400640endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100641foreach header : ['crypt.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400642 'linux/memfd.h',
643 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200644 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400645 'valgrind/memcheck.h',
646 'valgrind/valgrind.h',
647 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400648
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200649 conf.set10('HAVE_' + header.underscorify().to_upper(),
650 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400651endforeach
652
653############################################################
654
655conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400656conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
657gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400658
659default_hierarchy = get_option('default-hierarchy')
660conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
661 description : 'default cgroup hierarchy as string')
662if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400663 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400664elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400665 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400666else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400667 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400668endif
669
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100670default_net_naming_scheme = get_option('default-net-naming-scheme')
671conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
672
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400673time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900674if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400675 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900676 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400677endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400678conf.set('TIME_EPOCH', time_epoch)
679
680system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900681if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400682 system_uid_max = run_command(
683 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800684 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
685 '/etc/login.defs').stdout().strip()
686 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900687 system_uid_max = 999
688 else
689 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800690 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400691endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400692conf.set('SYSTEM_UID_MAX', system_uid_max)
693substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400694
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400695system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900696if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400697 system_gid_max = run_command(
698 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800699 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
700 '/etc/login.defs').stdout().strip()
701 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900702 system_gid_max = 999
703 else
704 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800705 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400706endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400707conf.set('SYSTEM_GID_MAX', system_gid_max)
708substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400709
Yu Watanabeac093402018-05-10 16:04:16 +0900710dynamic_uid_min = get_option('dynamic-uid-min')
711dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100712conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
713conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
714substs.set('dynamicuidmin', dynamic_uid_min)
715substs.set('dynamicuidmax', dynamic_uid_max)
716
Yu Watanabeac093402018-05-10 16:04:16 +0900717container_uid_base_min = get_option('container-uid-base-min')
718container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100719conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
720conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
721substs.set('containeruidbasemin', container_uid_base_min)
722substs.set('containeruidbasemax', container_uid_base_max)
723
Lennart Poetteringafde4572017-12-05 11:00:24 +0100724nobody_user = get_option('nobody-user')
725nobody_group = get_option('nobody-group')
726
Chen Qi2484bff2018-07-23 14:53:09 +0800727if not meson.is_cross_build()
728 getent_result = run_command('getent', 'passwd', '65534')
729 if getent_result.returncode() == 0
730 name = getent_result.stdout().split(':')[0]
731 if name != nobody_user
732 warning('\n' +
733 '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) +
734 'Your build will result in an user table setup that is incompatible with the local system.')
735 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100736 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800737 id_result = run_command('id', '-u', nobody_user)
738 if id_result.returncode() == 0
739 id = id_result.stdout().to_int()
740 if id != 65534
741 warning('\n' +
742 '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) +
743 'Your build will result in an user table setup that is incompatible with the local system.')
744 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100745 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100746
Chen Qi2484bff2018-07-23 14:53:09 +0800747 getent_result = run_command('getent', 'group', '65534')
748 if getent_result.returncode() == 0
749 name = getent_result.stdout().split(':')[0]
750 if name != nobody_group
751 warning('\n' +
752 '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) +
753 'Your build will result in an group table setup that is incompatible with the local system.')
754 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100755 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800756 id_result = run_command('id', '-g', nobody_group)
757 if id_result.returncode() == 0
758 id = id_result.stdout().to_int()
759 if id != 65534
760 warning('\n' +
761 '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) +
762 'Your build will result in an group table setup that is incompatible with the local system.')
763 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100764 endif
765endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900766if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900767 warning('\n' +
768 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
769 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900770endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100771
772conf.set_quoted('NOBODY_USER_NAME', nobody_user)
773conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900774substs.set('NOBODY_USER_NAME', nobody_user)
775substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100776
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400777tty_gid = get_option('tty-gid')
778conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400779substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400780
Ikey Doherty84786b82017-12-03 12:28:23 +0000781# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900782users_gid = get_option('users-gid')
783substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000784
Yu Watanabe348b4432018-05-07 18:17:35 +0900785conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
786conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400787
Michael Bieblace5e312018-07-13 23:36:13 +0200788dev_kvm_mode = get_option('dev-kvm-mode')
789substs.set('DEV_KVM_MODE', dev_kvm_mode)
790conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100791group_render_mode = get_option('group-render-mode')
792substs.set('GROUP_RENDER_MODE', group_render_mode)
793conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400794
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400795kill_user_processes = get_option('default-kill-user-processes')
796conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100797conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400798substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400799
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400800dns_servers = get_option('dns-servers')
801conf.set_quoted('DNS_SERVERS', dns_servers)
802substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400803
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400804ntp_servers = get_option('ntp-servers')
805conf.set_quoted('NTP_SERVERS', ntp_servers)
806substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400807
Dave Reisner8ca9e922018-12-28 07:38:36 -0500808default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900809if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800810 if not meson.is_cross_build()
811 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
812 default_locale = run_command(choose_default_locale_sh).stdout().strip()
813 else
814 default_locale = 'C.UTF-8'
815 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900816endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500817conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
818
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400819conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
820
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200821service_watchdog = get_option('service-watchdog')
Anita Zhang7bc9ea52019-10-25 15:46:21 -0700822watchdog_value = service_watchdog == '' ? '' : 'WatchdogSec=' + service_watchdog
823substs.set('SERVICE_WATCHDOG', watchdog_value)
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200824
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400825substs.set('SUSHELL', get_option('debug-shell'))
826substs.set('DEBUGTTY', get_option('debug-tty'))
Jan Synacek93912e82019-04-25 12:19:16 +0200827conf.set_quoted('DEBUGTTY', get_option('debug-tty'))
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400828
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200829enable_debug_hashmap = false
830enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900831enable_debug_siphash = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200832foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900833 if name == 'hashmap'
834 enable_debug_hashmap = true
835 elif name == 'mmap-cache'
836 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900837 elif name == 'siphash'
838 enable_debug_siphash = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900839 else
840 message('unknown debug option "@0@", ignoring'.format(name))
841 endif
842endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200843conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
844conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900845conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400846
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200847conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200848conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200849
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100850default_user_path = get_option('user-path')
851if default_user_path != ''
852 conf.set_quoted('DEFAULT_USER_PATH', default_user_path)
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100853 default_user_path_display = default_user_path
854else
855 # meson 0.49 fails when ?: is used in .format()
856 default_user_path_display = '(same as system services)'
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100857endif
858
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100859
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400860#####################################################################
861
862threads = dependency('threads')
863librt = cc.find_library('rt')
864libm = cc.find_library('m')
865libdl = cc.find_library('dl')
866libcrypt = cc.find_library('crypt')
867
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400868libcap = dependency('libcap', required : false)
869if not libcap.found()
870 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
871 libcap = cc.find_library('cap')
872endif
873
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400874libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100875 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400876
Lennart Poetteringe594a3b2019-12-10 21:31:41 +0100877want_libfdisk = get_option('fdisk')
878if want_libfdisk != 'false' and not skip_deps
879 libfdisk = dependency('fdisk',
880 required : want_libfdisk == 'true')
881 have = libfdisk.found()
882else
883 have = false
884 libfdisk = []
885endif
886conf.set10('HAVE_LIBFDISK', have)
887
Lennart Poettering70a5db52019-07-04 18:35:39 +0200888want_pwquality = get_option('pwquality')
889if want_pwquality != 'false' and not skip_deps
890 libpwquality = dependency('pwquality', required : want_pwquality == 'true')
891 have = libpwquality.found()
892else
893 have = false
894 libpwquality = []
895endif
896conf.set10('HAVE_PWQUALITY', have)
897
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400898want_seccomp = get_option('seccomp')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000899if want_seccomp != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400900 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400901 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400902 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200903 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400904else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200905 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400906 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400907endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200908conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400909
910want_selinux = get_option('selinux')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000911if want_selinux != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400912 libselinux = dependency('libselinux',
913 version : '>= 2.1.9',
914 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200915 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400916else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200917 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400918 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400919endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200920conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400921
922want_apparmor = get_option('apparmor')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000923if want_apparmor != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400924 libapparmor = dependency('libapparmor',
925 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200926 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400927else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200928 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400929 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400930endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200931conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400932
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400933smack_run_label = get_option('smack-run-label')
934if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400935 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400936endif
937
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400938want_polkit = get_option('polkit')
939install_polkit = false
940install_polkit_pkla = false
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000941if want_polkit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400942 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400943
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400944 libpolkit = dependency('polkit-gobject-1',
945 required : false)
946 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
947 message('Old polkit detected, will install pkla files')
948 install_polkit_pkla = true
949 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400950endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200951conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400952
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400953want_acl = get_option('acl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000954if want_acl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400955 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200956 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400957else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200958 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400959 libacl = []
960endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200961conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400962
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400963want_audit = get_option('audit')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000964if want_audit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400965 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200966 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400967else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200968 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400969 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400970endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200971conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400972
973want_blkid = get_option('blkid')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000974if want_blkid != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400975 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200976 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400977else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200978 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400979 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400980endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200981conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400982
983want_kmod = get_option('kmod')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000984if want_kmod != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400985 libkmod = dependency('libkmod',
986 version : '>= 15',
987 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200988 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400989else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200990 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400991 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400992endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200993conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400994
995want_pam = get_option('pam')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000996if want_pam != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400997 libpam = cc.find_library('pam', required : want_pam == 'true')
998 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200999 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001000else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001001 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001002 libpam = []
1003 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001004endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001005conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001006
1007want_microhttpd = get_option('microhttpd')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001008if want_microhttpd != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001009 libmicrohttpd = dependency('libmicrohttpd',
1010 version : '>= 0.9.33',
1011 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001012 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001013else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001014 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001015 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001016endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001017conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001018
1019want_libcryptsetup = get_option('libcryptsetup')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001020if want_libcryptsetup != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001021 libcryptsetup = dependency('libcryptsetup',
Jay Strictd90874b2019-09-26 15:54:29 +02001022 version : '>= 2.0.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001023 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001024 have = libcryptsetup.found()
Lennart Poettering70a5db52019-07-04 18:35:39 +02001025
1026 conf.set10('HAVE_CRYPT_SET_METADATA_SIZE',
1027 have and cc.has_function('crypt_set_metadata_size', dependencies : libcryptsetup))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001028else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001029 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001030 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001031endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001032conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001033
1034want_libcurl = get_option('libcurl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001035if want_libcurl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001036 libcurl = dependency('libcurl',
1037 version : '>= 7.32.0',
1038 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001039 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001040else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001041 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001042 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001043endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001044conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001045
1046want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001047want_libidn2 = get_option('libidn2')
1048if want_libidn == 'true' and want_libidn2 == 'true'
1049 error('libidn and libidn2 cannot be requested simultaneously')
1050endif
1051
Yu Watanabe1b931392019-06-29 03:13:30 +09001052if want_libidn2 != 'false' and want_libidn != 'true' and not skip_deps
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001053 libidn = dependency('libidn2',
1054 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001055 have = libidn.found()
1056else
1057 have = false
Yu Watanabe1b931392019-06-29 03:13:30 +09001058 libidn = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001059endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001060conf.set10('HAVE_LIBIDN2', have)
Yu Watanabe1b931392019-06-29 03:13:30 +09001061if not have and want_libidn != 'false' and not skip_deps
1062 # libidn is used for both libidn and libidn2 objects
1063 libidn = dependency('libidn',
1064 required : want_libidn == 'true')
1065 have = libidn.found()
1066else
1067 have = false
1068endif
1069conf.set10('HAVE_LIBIDN', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001070
1071want_libiptc = get_option('libiptc')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001072if want_libiptc != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001073 libiptc = dependency('libiptc',
1074 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001075 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001076else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001077 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001078 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001079endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001081
1082want_qrencode = get_option('qrencode')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001083if want_qrencode != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001084 libqrencode = dependency('libqrencode',
1085 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001086 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001087else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001088 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001089 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001090endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001091conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001092
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001093want_gcrypt = get_option('gcrypt')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001094if want_gcrypt != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001095 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1096 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001097 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001098else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001099 have = false
1100endif
1101if not have
1102 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001103 libgcrypt = []
1104 libgpg_error = []
1105endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001106conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001107
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001108want_gnutls = get_option('gnutls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001109if want_gnutls != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001110 libgnutls = dependency('gnutls',
1111 version : '>= 3.1.4',
1112 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001113 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001114else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001115 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001116 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001117endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001118conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001119
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001120want_openssl = get_option('openssl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001121if want_openssl != 'false' and not skip_deps
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001122 libopenssl = dependency('openssl',
1123 version : '>= 1.1.0',
1124 required : want_openssl == 'true')
1125 have = libopenssl.found()
1126else
1127 have = false
1128 libopenssl = []
1129endif
1130conf.set10('HAVE_OPENSSL', have)
1131
Lennart Poettering839fddb2019-11-05 11:49:27 +01001132want_p11kit = get_option('p11kit')
1133if want_p11kit != 'false' and not skip_deps
1134 libp11kit = dependency('p11-kit-1',
1135 version : '>= 0.23.3',
1136 required : want_p11kit == 'true')
1137 have = libp11kit.found()
1138else
1139 have = false
1140 libp11kit = []
1141endif
1142conf.set10('HAVE_P11KIT', have)
1143
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001144want_elfutils = get_option('elfutils')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001145if want_elfutils != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001146 libdw = dependency('libdw',
1147 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001148 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001149else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001150 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001151 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001152endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001153conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001154
1155want_zlib = get_option('zlib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001156if want_zlib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001157 libz = dependency('zlib',
1158 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001159 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001160else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001161 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001162 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001163endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001164conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001165
1166want_bzip2 = get_option('bzip2')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001167if want_bzip2 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001168 libbzip2 = cc.find_library('bz2',
1169 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001170 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001171else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001172 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001173 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001174endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001175conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001176
1177want_xz = get_option('xz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001178if want_xz != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001179 libxz = dependency('liblzma',
1180 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001181 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001182else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001183 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001184 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001185endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001186conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001187
1188want_lz4 = get_option('lz4')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001189if want_lz4 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001190 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001191 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001192 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001193 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001194else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001195 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001196 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001197endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001198conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001199
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001200want_xkbcommon = get_option('xkbcommon')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001201if want_xkbcommon != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001202 libxkbcommon = dependency('xkbcommon',
1203 version : '>= 0.3.0',
1204 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001205 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001206else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001207 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001208 libxkbcommon = []
1209endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001210conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001211
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001212want_pcre2 = get_option('pcre2')
1213if want_pcre2 != 'false'
1214 libpcre2 = dependency('libpcre2-8',
1215 required : want_pcre2 == 'true')
1216 have = libpcre2.found()
1217else
1218 have = false
1219 libpcre2 = []
1220endif
1221conf.set10('HAVE_PCRE2', have)
1222
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001223want_glib = get_option('glib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001224if want_glib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001225 libglib = dependency('glib-2.0',
1226 version : '>= 2.22.0',
1227 required : want_glib == 'true')
1228 libgobject = dependency('gobject-2.0',
1229 version : '>= 2.22.0',
1230 required : want_glib == 'true')
1231 libgio = dependency('gio-2.0',
1232 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001233 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001234else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001235 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001236 libglib = []
1237 libgobject = []
1238 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001239endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001240conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001241
1242want_dbus = get_option('dbus')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001243if want_dbus != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001244 libdbus = dependency('dbus-1',
1245 version : '>= 1.3.2',
1246 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001247 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001248else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001249 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001250 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001251endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001252conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001253
Yu Watanabe42303dc2017-06-18 05:22:32 +09001254default_dnssec = get_option('default-dnssec')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001255if skip_deps
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001256 default_dnssec = 'no'
1257endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001258if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001259 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1260 default_dnssec = 'no'
1261endif
1262conf.set('DEFAULT_DNSSEC_MODE',
1263 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1264substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1265
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001266dns_over_tls = get_option('dns-over-tls')
1267if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001268 if dns_over_tls == 'openssl'
1269 have_gnutls = false
1270 else
Iwan Timmer38e053c2019-10-29 20:26:05 +01001271 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.6.0'))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001272 if dns_over_tls == 'gnutls' and not have_gnutls
1273 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1274 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001275 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001276 if dns_over_tls == 'gnutls' or have_gnutls
1277 have_openssl = false
1278 else
1279 have_openssl = conf.get('HAVE_OPENSSL') == 1
1280 if dns_over_tls != 'auto' and not have_openssl
1281 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
Yu Watanabeb349bc52019-06-17 10:22:54 +09001282 error('DNS-over-TLS support was requested@0@, but dependencies are not available'.format(str))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001283 endif
1284 endif
1285 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001286else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001287 have = false
1288 have_gnutls = false
1289 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001290endif
1291conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001292conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1293conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001294
Iwan Timmerc9299be2018-06-13 20:26:24 +02001295default_dns_over_tls = get_option('default-dns-over-tls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001296if skip_deps
Iwan Timmerc9299be2018-06-13 20:26:24 +02001297 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001298endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001299if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
Iwan Timmer4310bfc2019-02-18 20:41:46 +01001300 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 +02001301 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001302endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001303conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1304 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1305substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001306
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01001307want_repart = get_option('repart')
1308if want_repart != 'false'
1309 have = (conf.get('HAVE_OPENSSL') == 1 and
1310 conf.get('HAVE_LIBFDISK') == 1)
1311 if want_repart == 'true' and not have
1312 error('repart support was requested, but dependencies are not available')
1313 endif
1314else
1315 have = false
1316endif
1317conf.set10('ENABLE_REPART', have)
1318
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001319want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001320if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001321 have = (conf.get('HAVE_LIBCURL') == 1 and
1322 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001323 conf.get('HAVE_XZ') == 1 and
1324 conf.get('HAVE_GCRYPT') == 1)
1325 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001326 error('importd support was requested, but dependencies are not available')
1327 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001328else
1329 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001330endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001331conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001332
Lennart Poettering70a5db52019-07-04 18:35:39 +02001333want_homed = get_option('homed')
1334if want_homed != 'false'
1335 have = (conf.get('HAVE_OPENSSL') == 1 and
1336 conf.get('HAVE_LIBFDISK') == 1 and
1337 conf.get('HAVE_LIBCRYPTSETUP') == 1)
1338 if want_homed == 'true' and not have
1339 error('homed support was requested, but dependencies are not available')
1340 endif
1341else
1342 have = false
1343endif
1344conf.set10('ENABLE_HOMED', 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)
2092endif
2093
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01002094foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
2095 meson.add_install_script(meson_make_symlink,
2096 join_paths(rootbindir, 'systemctl'),
2097 join_paths(rootsbindir, alias))
2098endforeach
2099
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002100if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002101 executable('systemd-backlight',
2102 'src/backlight/backlight.c',
2103 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002104 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002105 install_rpath : rootlibexecdir,
2106 install : true,
2107 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002108endif
2109
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002110if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002111 executable('systemd-rfkill',
2112 'src/rfkill/rfkill.c',
2113 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002114 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002115 install_rpath : rootlibexecdir,
2116 install : true,
2117 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002118endif
2119
2120executable('systemd-system-update-generator',
2121 'src/system-update-generator/system-update-generator.c',
2122 include_directories : includes,
2123 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002124 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002125 install : true,
2126 install_dir : systemgeneratordir)
2127
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002128if conf.get('HAVE_LIBCRYPTSETUP') == 1
Lennart Poettering08669702019-08-22 10:21:11 +02002129 systemd_cryptsetup_sources = files('''
2130 src/cryptsetup/cryptsetup.c
2131 src/cryptsetup/cryptsetup-pkcs11.h
2132'''.split())
2133
2134 if conf.get('HAVE_P11KIT') == 1
2135 systemd_cryptsetup_sources += files('src/cryptsetup/cryptsetup-pkcs11.c')
2136 endif
2137
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002138 executable('systemd-cryptsetup',
Lennart Poettering08669702019-08-22 10:21:11 +02002139 systemd_cryptsetup_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002140 include_directories : includes,
2141 link_with : [libshared],
Lennart Poettering08669702019-08-22 10:21:11 +02002142 dependencies : [libcryptsetup,
2143 libp11kit],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002144 install_rpath : rootlibexecdir,
2145 install : true,
2146 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002147
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002148 executable('systemd-cryptsetup-generator',
2149 'src/cryptsetup/cryptsetup-generator.c',
2150 include_directories : includes,
2151 link_with : [libshared],
2152 dependencies : [libcryptsetup],
2153 install_rpath : rootlibexecdir,
2154 install : true,
2155 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002156
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002157 executable('systemd-veritysetup',
2158 'src/veritysetup/veritysetup.c',
2159 include_directories : includes,
2160 link_with : [libshared],
2161 dependencies : [libcryptsetup],
2162 install_rpath : rootlibexecdir,
2163 install : true,
2164 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002165
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002166 executable('systemd-veritysetup-generator',
2167 'src/veritysetup/veritysetup-generator.c',
2168 include_directories : includes,
2169 link_with : [libshared],
2170 dependencies : [libcryptsetup],
2171 install_rpath : rootlibexecdir,
2172 install : true,
2173 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002174endif
2175
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002176if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002177 executable('systemd-sysv-generator',
2178 'src/sysv-generator/sysv-generator.c',
2179 include_directories : includes,
2180 link_with : [libshared],
2181 install_rpath : rootlibexecdir,
2182 install : true,
2183 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002184
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002185 executable('systemd-rc-local-generator',
2186 'src/rc-local-generator/rc-local-generator.c',
2187 include_directories : includes,
2188 link_with : [libshared],
2189 install_rpath : rootlibexecdir,
2190 install : true,
2191 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002192endif
2193
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002194if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002195 executable('systemd-hostnamed',
2196 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002197 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002198 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002199 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002200 install : true,
2201 install_dir : rootlibexecdir)
2202
2203 exe = executable('hostnamectl',
2204 'src/hostname/hostnamectl.c',
2205 include_directories : includes,
2206 link_with : [libshared],
2207 install_rpath : rootlibexecdir,
2208 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002209 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002210endif
2211
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002212if conf.get('ENABLE_LOCALED') == 1
2213 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002214 # logind will load libxkbcommon.so dynamically on its own
2215 deps = [libdl]
2216 else
2217 deps = []
2218 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002219
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002220 executable('systemd-localed',
2221 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002222 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002223 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002224 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002225 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002226 install : true,
2227 install_dir : rootlibexecdir)
2228
2229 exe = executable('localectl',
2230 localectl_sources,
2231 include_directories : includes,
2232 link_with : [libshared],
2233 install_rpath : rootlibexecdir,
2234 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002235 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002236endif
2237
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002238if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002239 executable('systemd-timedated',
2240 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002241 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002242 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002243 install_rpath : rootlibexecdir,
2244 install : true,
2245 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002246endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002247
Yu Watanabe6129ec82018-05-03 18:07:43 +09002248if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002249 exe = executable('timedatectl',
2250 'src/timedate/timedatectl.c',
2251 include_directories : includes,
2252 install_rpath : rootlibexecdir,
2253 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002254 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002255 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002256 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002257endif
2258
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002259if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002260 executable('systemd-timesyncd',
2261 systemd_timesyncd_sources,
2262 include_directories : includes,
2263 link_with : [libshared],
2264 dependencies : [threads,
2265 libm],
2266 install_rpath : rootlibexecdir,
2267 install : true,
2268 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002269
2270 executable('systemd-time-wait-sync',
2271 'src/time-wait-sync/time-wait-sync.c',
2272 include_directories : includes,
2273 link_with : [libshared],
2274 install_rpath : rootlibexecdir,
2275 install : true,
2276 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002277endif
2278
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002279if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002280 executable('systemd-machined',
2281 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002282 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002283 link_with : [libmachine_core,
2284 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002285 install_rpath : rootlibexecdir,
2286 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002287 install_dir : rootlibexecdir)
2288
2289 exe = executable('machinectl',
2290 'src/machine/machinectl.c',
2291 include_directories : includes,
2292 link_with : [libshared],
2293 dependencies : [threads,
2294 libxz,
2295 liblz4],
2296 install_rpath : rootlibexecdir,
2297 install : true,
2298 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002299 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002300endif
2301
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002302if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002303 executable('systemd-importd',
2304 systemd_importd_sources,
2305 include_directories : includes,
2306 link_with : [libshared],
2307 dependencies : [threads],
2308 install_rpath : rootlibexecdir,
2309 install : true,
2310 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002311
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002312 systemd_pull = executable('systemd-pull',
2313 systemd_pull_sources,
2314 include_directories : includes,
2315 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002316 dependencies : [versiondep,
2317 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002318 libz,
2319 libbzip2,
2320 libxz,
2321 libgcrypt],
2322 install_rpath : rootlibexecdir,
2323 install : true,
2324 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002325
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002326 systemd_import = executable('systemd-import',
2327 systemd_import_sources,
2328 include_directories : includes,
2329 link_with : [libshared],
2330 dependencies : [libcurl,
2331 libz,
2332 libbzip2,
2333 libxz],
2334 install_rpath : rootlibexecdir,
2335 install : true,
2336 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002337
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002338 systemd_import_fs = executable('systemd-import-fs',
2339 systemd_import_fs_sources,
2340 include_directories : includes,
2341 link_with : [libshared],
2342 install_rpath : rootlibexecdir,
2343 install : true,
2344 install_dir : rootlibexecdir)
2345
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002346 systemd_export = executable('systemd-export',
2347 systemd_export_sources,
2348 include_directories : includes,
2349 link_with : [libshared],
2350 dependencies : [libcurl,
2351 libz,
2352 libbzip2,
2353 libxz],
2354 install_rpath : rootlibexecdir,
2355 install : true,
2356 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002357
2358 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002359endif
2360
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002361if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002362 exe = executable('systemd-journal-upload',
2363 systemd_journal_upload_sources,
2364 include_directories : includes,
2365 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002366 dependencies : [versiondep,
2367 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002368 libcurl,
2369 libgnutls,
2370 libxz,
2371 liblz4],
2372 install_rpath : rootlibexecdir,
2373 install : true,
2374 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002375 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002376endif
2377
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002378if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002379 s_j_remote = executable('systemd-journal-remote',
2380 systemd_journal_remote_sources,
2381 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002382 link_with : [libshared,
2383 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002384 dependencies : [threads,
2385 libmicrohttpd,
2386 libgnutls,
2387 libxz,
2388 liblz4],
2389 install_rpath : rootlibexecdir,
2390 install : true,
2391 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002392
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002393 s_j_gatewayd = executable('systemd-journal-gatewayd',
2394 systemd_journal_gatewayd_sources,
2395 include_directories : includes,
2396 link_with : [libshared],
2397 dependencies : [threads,
2398 libmicrohttpd,
2399 libgnutls,
2400 libxz,
2401 liblz4],
2402 install_rpath : rootlibexecdir,
2403 install : true,
2404 install_dir : rootlibexecdir)
2405 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002406endif
2407
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002408if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002409 executable('systemd-coredump',
2410 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002411 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002412 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002413 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002414 libacl,
2415 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002416 libxz,
2417 liblz4],
2418 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002419 install : true,
2420 install_dir : rootlibexecdir)
2421
2422 exe = executable('coredumpctl',
2423 coredumpctl_sources,
2424 include_directories : includes,
2425 link_with : [libshared],
2426 dependencies : [threads,
2427 libxz,
2428 liblz4],
2429 install_rpath : rootlibexecdir,
2430 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002431 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002432endif
2433
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002434if conf.get('ENABLE_PSTORE') == 1
2435 executable('systemd-pstore',
2436 systemd_pstore_sources,
2437 include_directories : includes,
2438 link_with : [libshared],
2439 dependencies : [threads,
2440 libacl,
2441 libdw,
2442 libxz,
2443 liblz4],
2444 install_rpath : rootlibexecdir,
2445 install : true,
2446 install_dir : rootlibexecdir)
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002447endif
2448
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002449if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002450 exe = executable('systemd-binfmt',
2451 'src/binfmt/binfmt.c',
2452 include_directories : includes,
2453 link_with : [libshared],
2454 install_rpath : rootlibexecdir,
2455 install : true,
2456 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002457 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002458
2459 meson.add_install_script('sh', '-c',
2460 mkdir_p.format(binfmtdir))
2461 meson.add_install_script('sh', '-c',
2462 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2463endif
2464
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002465if conf.get('ENABLE_REPART') == 1
2466 executable('systemd-repart',
2467 systemd_repart_sources,
2468 include_directories : includes,
2469 link_with : [libshared],
2470 dependencies : [threads,
2471 libcryptsetup,
2472 libblkid,
2473 libfdisk,
2474 libopenssl],
2475 install_rpath : rootlibexecdir,
2476 install : true,
2477 install_dir : rootbindir)
2478endif
2479
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002480if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002481 executable('systemd-vconsole-setup',
2482 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002483 include_directories : includes,
2484 link_with : [libshared],
2485 install_rpath : rootlibexecdir,
2486 install : true,
2487 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002488endif
2489
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002490if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002491 executable('systemd-random-seed',
2492 'src/random-seed/random-seed.c',
2493 include_directories : includes,
2494 link_with : [libshared],
2495 install_rpath : rootlibexecdir,
2496 install : true,
2497 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002498endif
2499
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002500if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002501 executable('systemd-firstboot',
2502 'src/firstboot/firstboot.c',
2503 include_directories : includes,
2504 link_with : [libshared],
2505 dependencies : [libcrypt],
2506 install_rpath : rootlibexecdir,
2507 install : true,
2508 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002509endif
2510
2511executable('systemd-remount-fs',
2512 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002513 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002514 link_with : [libcore_shared,
2515 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002516 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002517 install : true,
2518 install_dir : rootlibexecdir)
2519
2520executable('systemd-machine-id-setup',
2521 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002522 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002523 link_with : [libcore_shared,
2524 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002525 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002526 install : true,
2527 install_dir : rootbindir)
2528
2529executable('systemd-fsck',
2530 'src/fsck/fsck.c',
2531 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002532 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002533 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002534 install : true,
2535 install_dir : rootlibexecdir)
2536
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002537executable('systemd-growfs',
2538 'src/partition/growfs.c',
2539 include_directories : includes,
2540 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002541 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002542 install_rpath : rootlibexecdir,
2543 install : true,
2544 install_dir : rootlibexecdir)
2545
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002546executable('systemd-makefs',
2547 'src/partition/makefs.c',
2548 include_directories : includes,
2549 link_with : [libshared],
2550 install_rpath : rootlibexecdir,
2551 install : true,
2552 install_dir : rootlibexecdir)
2553
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002554executable('systemd-sleep',
2555 'src/sleep/sleep.c',
2556 include_directories : includes,
2557 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002558 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002559 install : true,
2560 install_dir : rootlibexecdir)
2561
Yu Watanabed25e1272019-01-03 02:32:57 +09002562install_data('src/sleep/sleep.conf',
2563 install_dir : pkgsysconfdir)
2564
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002565exe = executable('systemd-sysctl',
2566 'src/sysctl/sysctl.c',
2567 include_directories : includes,
2568 link_with : [libshared],
2569 install_rpath : rootlibexecdir,
2570 install : true,
2571 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002572public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002573
2574executable('systemd-ac-power',
2575 'src/ac-power/ac-power.c',
2576 include_directories : includes,
2577 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002578 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002579 install : true,
2580 install_dir : rootlibexecdir)
2581
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002582exe = executable('systemd-detect-virt',
2583 'src/detect-virt/detect-virt.c',
2584 include_directories : includes,
2585 link_with : [libshared],
2586 install_rpath : rootlibexecdir,
2587 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002588public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002589
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002590exe = executable('systemd-delta',
2591 'src/delta/delta.c',
2592 include_directories : includes,
2593 link_with : [libshared],
2594 install_rpath : rootlibexecdir,
2595 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002596public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002597
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002598exe = executable('systemd-escape',
2599 'src/escape/escape.c',
2600 include_directories : includes,
2601 link_with : [libshared],
2602 install_rpath : rootlibexecdir,
2603 install : true,
2604 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002605public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002606
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002607exe = executable('systemd-notify',
2608 'src/notify/notify.c',
2609 include_directories : includes,
2610 link_with : [libshared],
2611 install_rpath : rootlibexecdir,
2612 install : true,
2613 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002614public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002615
2616executable('systemd-volatile-root',
2617 'src/volatile-root/volatile-root.c',
2618 include_directories : includes,
2619 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002620 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002621 install : true,
2622 install_dir : rootlibexecdir)
2623
2624executable('systemd-cgroups-agent',
2625 'src/cgroups-agent/cgroups-agent.c',
2626 include_directories : includes,
2627 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002628 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002629 install : true,
2630 install_dir : rootlibexecdir)
2631
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002632exe = executable('systemd-id128',
2633 'src/id128/id128.c',
2634 include_directories : includes,
2635 link_with : [libshared],
2636 install_rpath : rootlibexecdir,
2637 install : true)
2638public_programs += exe
2639
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002640exe = executable('systemd-path',
2641 'src/path/path.c',
2642 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002643 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002644 install_rpath : rootlibexecdir,
2645 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002646public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002647
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002648exe = executable('systemd-ask-password',
2649 'src/ask-password/ask-password.c',
2650 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002651 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002652 install_rpath : rootlibexecdir,
2653 install : true,
2654 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002655public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002656
2657executable('systemd-reply-password',
2658 'src/reply-password/reply-password.c',
2659 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002660 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-Szmek005a29f2017-04-13 11:52:05 -04002665exe = executable('systemd-tty-ask-password-agent',
2666 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2667 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002668 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002669 install_rpath : rootlibexecdir,
2670 install : true,
2671 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002672public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002673
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002674exe = executable('systemd-cgls',
2675 'src/cgls/cgls.c',
2676 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002677 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002678 install_rpath : rootlibexecdir,
2679 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002680public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002681
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002682exe = executable('systemd-cgtop',
2683 'src/cgtop/cgtop.c',
2684 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002685 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002686 install_rpath : rootlibexecdir,
2687 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002688public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002689
2690executable('systemd-initctl',
2691 'src/initctl/initctl.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-mount',
2699 'src/mount/mount-tool.c',
2700 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002701 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek7d991d42019-04-04 13:41:47 +02002702 dependencies: [libmount],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002703 install_rpath : rootlibexecdir,
2704 install : true)
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-Szmek7b76fce2017-04-09 23:55:50 -04002707meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002708 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002709
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002710exe = executable('systemd-run',
2711 'src/run/run.c',
2712 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002713 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002714 install_rpath : rootlibexecdir,
2715 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002716public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002717
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002718exe = executable('systemd-stdio-bridge',
2719 'src/stdio-bridge/stdio-bridge.c',
2720 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002721 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002722 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002723 install_rpath : rootlibexecdir,
2724 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002725public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002726
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002727exe = executable('busctl',
2728 'src/busctl/busctl.c',
2729 'src/busctl/busctl-introspect.c',
2730 'src/busctl/busctl-introspect.h',
2731 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002732 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002733 install_rpath : rootlibexecdir,
2734 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002735public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002736
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002737if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002738 exe = executable('systemd-sysusers',
2739 'src/sysusers/sysusers.c',
2740 include_directories : includes,
2741 link_with : [libshared],
2742 install_rpath : rootlibexecdir,
2743 install : true,
2744 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002745 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002746endif
2747
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002748if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002749 exe = executable('systemd-tmpfiles',
2750 'src/tmpfiles/tmpfiles.c',
2751 include_directories : includes,
2752 link_with : [libshared],
2753 dependencies : [libacl],
2754 install_rpath : rootlibexecdir,
2755 install : true,
2756 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002757 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002758
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002759 if want_tests != 'false'
2760 test('test-systemd-tmpfiles',
2761 test_systemd_tmpfiles_py,
2762 # https://github.com/mesonbuild/meson/issues/2681
2763 args : exe.full_path())
2764 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002765endif
2766
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002767if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002768 exe = executable('systemd-hwdb',
2769 'src/hwdb/hwdb.c',
2770 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2771 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002772 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002773 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002774 install : true,
2775 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002776 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002777endif
2778
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002779if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002780 executable('systemd-quotacheck',
2781 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002782 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002783 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002784 install_rpath : rootlibexecdir,
2785 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002786 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002787endif
2788
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002789exe = executable('systemd-socket-proxyd',
2790 'src/socket-proxy/socket-proxyd.c',
2791 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002792 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002793 dependencies : [threads],
2794 install_rpath : rootlibexecdir,
2795 install : true,
2796 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002797public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002798
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002799exe = executable('systemd-udevd',
2800 systemd_udevd_sources,
2801 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002802 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002803 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002804 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002805 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002806 dependencies : [versiondep,
2807 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002808 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002809 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002810 libacl,
2811 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002812 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002813 install : true,
2814 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002815public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002816
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002817exe = executable('udevadm',
2818 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002819 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002820 include_directories : includes,
2821 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002822 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002823 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002824 dependencies : [versiondep,
2825 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002826 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002827 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002828 libacl,
2829 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002830 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002831 install : true,
2832 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002833public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002834
2835executable('systemd-shutdown',
2836 systemd_shutdown_sources,
2837 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002838 link_with : [libcore_shared,
2839 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002840 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002841 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002842 install : true,
2843 install_dir : rootlibexecdir)
2844
2845executable('systemd-update-done',
2846 'src/update-done/update-done.c',
2847 include_directories : includes,
2848 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002849 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002850 install : true,
2851 install_dir : rootlibexecdir)
2852
2853executable('systemd-update-utmp',
2854 'src/update-utmp/update-utmp.c',
2855 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002856 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002857 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002858 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002859 install : true,
2860 install_dir : rootlibexecdir)
2861
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002862if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002863 executable('systemd-modules-load',
2864 'src/modules-load/modules-load.c',
2865 include_directories : includes,
2866 link_with : [libshared],
2867 dependencies : [libkmod],
2868 install_rpath : rootlibexecdir,
2869 install : true,
2870 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002871
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002872 meson.add_install_script('sh', '-c',
2873 mkdir_p.format(modulesloaddir))
2874 meson.add_install_script('sh', '-c',
2875 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002876endif
2877
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002878exe = executable('systemd-nspawn',
2879 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002880 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002881 link_with : [libcore_shared,
2882 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002883 libshared],
Franck Bui82384232019-03-22 11:09:08 +01002884 dependencies : [libblkid,
2885 libseccomp],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002886 install_rpath : rootlibexecdir,
2887 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002888public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002889
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002890if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002891 executable('systemd-networkd',
2892 systemd_networkd_sources,
Yu Watanabe737f1402019-10-30 17:02:15 +09002893 include_directories : network_include_dir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002894 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002895 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002896 libudev_static,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002897 networkd_link_with],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002898 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002899 install_rpath : rootlibexecdir,
2900 install : true,
2901 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002902
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002903 executable('systemd-networkd-wait-online',
2904 systemd_networkd_wait_online_sources,
2905 include_directories : includes,
2906 link_with : [libnetworkd_core,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002907 networkd_link_with],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002908 install_rpath : rootlibexecdir,
2909 install : true,
2910 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002911
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002912 exe = executable('networkctl',
2913 networkctl_sources,
2914 include_directories : includes,
2915 link_with : [libsystemd_network,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002916 networkd_link_with],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002917 install_rpath : rootlibexecdir,
2918 install : true,
2919 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002920 public_programs += exe
Yu Watanabe426c1d32019-07-13 03:35:04 +09002921
2922 executable('systemd-network-generator',
2923 network_generator_sources,
2924 include_directories : includes,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002925 link_with : [networkd_link_with],
Yu Watanabe426c1d32019-07-13 03:35:04 +09002926 install_rpath : rootlibexecdir,
2927 install : true,
2928 install_dir : rootlibexecdir)
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002929endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002930
2931executable('systemd-sulogin-shell',
2932 ['src/sulogin-shell/sulogin-shell.c'],
2933 include_directories : includes,
2934 link_with : [libshared],
2935 install_rpath : rootlibexecdir,
2936 install : true,
2937 install_dir : rootlibexecdir)
2938
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002939############################################################
2940
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002941custom_target(
2942 'systemd-runtest.env',
2943 output : 'systemd-runtest.env',
2944 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05002945 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002946 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002947 '} >@OUTPUT@'],
2948 build_by_default : true)
2949
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002950foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002951 sources = tuple[0]
2952 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2953 dependencies = tuple[2]
2954 condition = tuple.length() >= 4 ? tuple[3] : ''
2955 type = tuple.length() >= 5 ? tuple[4] : ''
2956 defs = tuple.length() >= 6 ? tuple[5] : []
2957 incs = tuple.length() >= 7 ? tuple[6] : includes
2958 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002959
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002960 name = sources[0].split('/')[-1].split('.')[0]
2961 if type.startswith('timeout=')
2962 timeout = type.split('=')[1].to_int()
2963 type = ''
2964 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002965
2966 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002967 exe = executable(
2968 name,
2969 sources,
2970 include_directories : incs,
2971 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002972 dependencies : [versiondep,
2973 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002974 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002975 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002976 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002977 install : install_tests,
2978 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002979
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002980 if type == 'manual'
2981 message('@0@ is a manual test'.format(name))
2982 elif type == 'unsafe' and want_tests != 'unsafe'
2983 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002984 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002985 test(name, exe,
2986 env : test_env,
2987 timeout : timeout)
2988 endif
2989 else
2990 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2991 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002992endforeach
2993
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002994exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002995 'test-libsystemd-sym',
2996 test_libsystemd_sym_c,
2997 include_directories : includes,
2998 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002999 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003000 install : install_tests,
3001 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003002if want_tests != 'false'
3003 test('test-libsystemd-sym', exe)
3004endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04003005
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003006exe = executable(
3007 'test-libsystemd-static-sym',
3008 test_libsystemd_sym_c,
3009 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003010 link_with : [install_libsystemd_static],
3011 dependencies : [threads], # threads is already included in dependencies on the library,
3012 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09003013 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003014 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003015 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003016if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003017 test('test-libsystemd-static-sym', exe)
3018endif
3019
3020exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003021 'test-libudev-sym',
3022 test_libudev_sym_c,
3023 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003024 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003025 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003026 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003027 install : install_tests,
3028 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003029if want_tests != 'false'
3030 test('test-libudev-sym', exe)
3031endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003032
3033exe = executable(
3034 'test-libudev-static-sym',
3035 test_libudev_sym_c,
3036 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003037 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003038 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003039 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003040 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003041 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003042if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003043 test('test-libudev-static-sym', exe)
3044endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04003045
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003046############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003047
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003048fuzzer_exes = []
3049
Michael Olbrich59967402018-11-11 11:27:35 +01003050if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003051foreach tuple : fuzzers
3052 sources = tuple[0]
3053 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3054 dependencies = tuple[2]
3055 defs = tuple.length() >= 4 ? tuple[3] : []
3056 incs = tuple.length() >= 5 ? tuple[4] : includes
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003057 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003058
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003059 if want_ossfuzz or want_fuzzbuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003060 dependencies += fuzzing_engine
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003061 elif want_libfuzzer
3062 if fuzzing_engine.found()
3063 dependencies += fuzzing_engine
3064 else
3065 link_args += ['-fsanitize=fuzzer']
3066 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003067 else
3068 sources += 'src/fuzz/fuzz-main.c'
3069 endif
3070
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00003071 if want_fuzzbuzz
3072 sources += 'src/fuzz/fuzzer-entry-point.c'
3073 endif
3074
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003075 name = sources[0].split('/')[-1].split('.')[0]
3076
3077 fuzzer_exes += executable(
3078 name,
3079 sources,
3080 include_directories : [incs, include_directories('src/fuzz')],
3081 link_with : link_with,
3082 dependencies : dependencies,
3083 c_args : defs,
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003084 link_args: link_args,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003085 install : false)
3086endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01003087endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003088
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01003089run_target('fuzzers',
3090 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003091 command : ['true'])
3092
3093############################################################
3094
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003095make_directive_index_py = find_program('tools/make-directive-index.py')
3096make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04003097xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04003098hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek62d39992019-11-15 11:32:24 +01003099autosuspend_update_sh = find_program('tools/meson-autosuspend-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003100
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003101subdir('sysctl.d')
3102subdir('sysusers.d')
3103subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmek4f10b802019-10-08 16:52:10 +02003104subdir('hwdb.d')
3105subdir('units')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01003106subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003107subdir('network')
3108subdir('man')
3109subdir('shell-completion/bash')
3110subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003111subdir('docs/sysvinit')
3112subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003113
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003114install_subdir('factory/etc',
3115 install_dir : factorydir)
3116
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003117install_data('xorg/50-systemd-user.sh',
3118 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01003119install_data('modprobe.d/systemd.conf',
3120 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003121install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003122 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003123 'NEWS',
3124 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05303125 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07003126 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003127 'docs/ENVIRONMENT.md',
Zbigniew Jędrzejewski-Szmek5425f8a2020-01-15 13:45:04 +01003128 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003129 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07003130 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003131 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003132 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
3133 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003134
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04003135meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
3136meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
3137
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003138############################################################
3139
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003140meson_check_help = find_program('tools/meson-check-help.sh')
3141
3142foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003143 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003144 if want_tests != 'false'
3145 test('check-help-' + name,
3146 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003147 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003148 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003149endforeach
3150
3151############################################################
3152
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02003153check_directives_sh = find_program('tools/check-directives.sh')
3154
3155if want_tests != 'false'
3156 test('check-directives',
3157 check_directives_sh,
3158 args : project_source_root)
3159endif
3160
3161############################################################
3162
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003163# Enable tests for all supported sanitizers
3164foreach tuple : sanitizers
3165 sanitizer = tuple[0]
3166 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003167
Yu Watanabe7a6397d2018-05-15 20:18:24 +09003168 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003169 prev = ''
3170 foreach p : fuzz_regression_tests
3171 b = p.split('/')[-2]
3172 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003173
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003174 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003175
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003176 if name != prev
3177 if want_tests == 'false'
3178 message('Not compiling @0@ because tests is set to false'.format(name))
3179 elif slow_tests
3180 exe = custom_target(
3181 name,
3182 output : name,
3183 depends : build,
3184 command : [env, 'ln', '-fs',
3185 join_paths(build.full_path(), b),
3186 '@OUTPUT@'],
3187 build_by_default : true)
3188 else
3189 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3190 endif
3191 endif
3192 prev = name
3193
3194 if want_tests != 'false' and slow_tests
3195 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3196 env,
3197 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003198 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003199 endif
3200 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003201 endif
3202endforeach
3203
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003204
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003205############################################################
3206
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003207if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003208 all_files = run_command(
3209 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003210 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003211 'ls-files',
3212 ':/*.[ch]'])
3213 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003214
userwithuide85a6902017-08-09 13:41:44 +00003215 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003216 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003217 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003218 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003219 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003220 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003221 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003222endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003223
3224if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003225 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003226 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003227 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003228 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003229endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003230
3231if git.found()
3232 git_head = run_command(
3233 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003234 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003235 'rev-parse', 'HEAD']).stdout().strip()
3236 git_head_short = run_command(
3237 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003238 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003239 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3240
3241 run_target(
3242 'git-snapshot',
3243 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003244 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003245 git_head_short),
3246 '--prefix', 'systemd-@0@/'.format(git_head),
3247 'HEAD'])
3248endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003249
3250############################################################
3251
Lennart Poettering51b13862017-12-20 12:51:14 +01003252meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3253run_target(
3254 'check-api-docs',
3255 depends : [man, libsystemd, libudev],
3256 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3257
3258############################################################
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003259watchdog_opt = service_watchdog == '' ? 'disabled' : service_watchdog
Lennart Poettering51b13862017-12-20 12:51:14 +01003260
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003261status = [
3262 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3263
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003264 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003265 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003266 'prefix directory: @0@'.format(prefixdir),
3267 'rootprefix directory: @0@'.format(rootprefixdir),
3268 'sysconf directory: @0@'.format(sysconfdir),
3269 'include directory: @0@'.format(includedir),
3270 'lib directory: @0@'.format(libdir),
3271 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003272 'SysV init scripts: @0@'.format(sysvinit_path),
3273 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003274 'PAM modules directory: @0@'.format(pamlibdir),
3275 'PAM configuration directory: @0@'.format(pamconfdir),
3276 'RPM macros directory: @0@'.format(rpmmacrosdir),
3277 'modprobe.d directory: @0@'.format(modprobedir),
3278 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3279 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3280 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3281 'bash completions directory: @0@'.format(bashcompletiondir),
3282 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003283 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003284 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3285 get_option('debug-tty')),
3286 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003287 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003288 'maximum system UID: @0@'.format(system_uid_max),
3289 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003290 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3291 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3292 'minimum container UID base: @0@'.format(container_uid_base_min),
3293 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003294 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003295 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003296 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003297 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003298 'nobody user name: @0@'.format(nobody_user),
3299 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003300 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003301 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003302
3303 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003304 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003305 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003306 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003307 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +02003308 'default locale: @0@'.format(default_locale),
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +01003309 'default user $PATH: @0@'.format(default_user_path_display),
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003310 'systemd service watchdog: @0@'.format(watchdog_opt)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003311
3312alt_dns_servers = '\n '.join(dns_servers.split(' '))
3313alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3314status += [
3315 'default DNS servers: @0@'.format(alt_dns_servers),
3316 'default NTP servers: @0@'.format(alt_ntp_servers)]
3317
3318alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3319 '@@0@'.format(time_epoch)).stdout().strip()
3320status += [
3321 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3322
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003323status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003324 'static libsystemd: @0@'.format(static_libsystemd),
3325 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003326
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003327# TODO:
3328# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3329# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3330# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3331
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003332if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003333 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003334
3335 if have_gnu_efi
3336 status += [
3337 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003338 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003339 'EFI lib directory: @0@'.format(efi_libdir),
3340 'EFI lds directory: @0@'.format(efi_ldsdir),
3341 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003342 endif
3343endif
3344
3345found = []
3346missing = []
3347
3348foreach tuple : [
3349 ['libcryptsetup'],
3350 ['PAM'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003351 ['pwquality'],
3352 ['fdisk'],
Lennart Poettering839fddb2019-11-05 11:49:27 +01003353 ['p11kit'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003354 ['AUDIT'],
3355 ['IMA'],
3356 ['AppArmor'],
3357 ['SELinux'],
3358 ['SECCOMP'],
3359 ['SMACK'],
3360 ['zlib'],
3361 ['xz'],
3362 ['lz4'],
3363 ['bzip2'],
3364 ['ACL'],
3365 ['gcrypt'],
3366 ['qrencode'],
3367 ['microhttpd'],
3368 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003369 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003370 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003371 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003372 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003373 ['libidn'],
3374 ['libiptc'],
3375 ['elfutils'],
3376 ['binfmt'],
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01003377 ['repart'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003378 ['vconsole'],
3379 ['quotacheck'],
3380 ['tmpfiles'],
3381 ['environment.d'],
3382 ['sysusers'],
3383 ['firstboot'],
3384 ['randomseed'],
3385 ['backlight'],
3386 ['rfkill'],
3387 ['logind'],
3388 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003389 ['portabled'],
Lennart Poetteringd093b622019-07-04 18:33:30 +02003390 ['userdb'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003391 ['homed'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003392 ['importd'],
3393 ['hostnamed'],
3394 ['timedated'],
3395 ['timesyncd'],
3396 ['localed'],
3397 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003398 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003399 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3400 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003401 ['coredump'],
Eric DeVolder9b4abc62019-05-16 08:59:01 -05003402 ['pstore'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003403 ['polkit'],
3404 ['legacy pkla', install_polkit_pkla],
3405 ['efi'],
3406 ['gnu-efi', have_gnu_efi],
3407 ['kmod'],
3408 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003409 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003410 ['blkid'],
3411 ['dbus'],
3412 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003413 ['nss-myhostname'],
3414 ['nss-mymachines'],
3415 ['nss-resolve'],
3416 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003417 ['hwdb'],
3418 ['tpm'],
3419 ['man pages', want_man],
3420 ['html pages', want_html],
3421 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003422 ['SysV compat'],
3423 ['utmp'],
3424 ['ldconfig'],
3425 ['hibernate'],
3426 ['adm group', get_option('adm-group')],
3427 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003428 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003429 ['debug hashmap'],
3430 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003431 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003432 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003433 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003434 ['link-udev-shared', get_option('link-udev-shared')],
3435 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Robert Scheck5ac8b502020-01-08 02:36:07 +01003436 ['link-networkd-shared', get_option('link-networkd-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003437]
3438
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003439 if tuple.length() >= 2
3440 cond = tuple[1]
3441 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003442 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3443 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003444 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003445 endif
3446 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003447 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003448 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003449 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003450 endif
3451endforeach
3452
3453status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003454 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003455 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003456 '',
3457 'disabled features: @0@'.format(', '.join(missing)),
3458 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003459message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003460
3461if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003462 warning('\n' +
3463 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3464 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3465 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003466endif