blob: 76f8153cd1a176eee3879844d082e069d64ae4c9 [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)
Lennart Poettering4aa0a8a2019-07-04 19:06:15 +02002092
2093 executable('homectl',
2094 homectl_sources,
2095 include_directories : includes,
2096 link_with : [libshared],
2097 dependencies : [threads,
2098 libcrypt,
2099 libopenssl,
2100 libp11kit,
2101 libpwquality],
2102 install_rpath : rootlibexecdir,
2103 install : true,
2104 install_dir : rootbindir)
Lennart Poettering70a5db52019-07-04 18:35:39 +02002105endif
2106
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01002107foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
2108 meson.add_install_script(meson_make_symlink,
2109 join_paths(rootbindir, 'systemctl'),
2110 join_paths(rootsbindir, alias))
2111endforeach
2112
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002113if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002114 executable('systemd-backlight',
2115 'src/backlight/backlight.c',
2116 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002117 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002118 install_rpath : rootlibexecdir,
2119 install : true,
2120 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002121endif
2122
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002123if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002124 executable('systemd-rfkill',
2125 'src/rfkill/rfkill.c',
2126 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002127 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002128 install_rpath : rootlibexecdir,
2129 install : true,
2130 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002131endif
2132
2133executable('systemd-system-update-generator',
2134 'src/system-update-generator/system-update-generator.c',
2135 include_directories : includes,
2136 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002137 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002138 install : true,
2139 install_dir : systemgeneratordir)
2140
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002141if conf.get('HAVE_LIBCRYPTSETUP') == 1
Lennart Poettering08669702019-08-22 10:21:11 +02002142 systemd_cryptsetup_sources = files('''
2143 src/cryptsetup/cryptsetup.c
2144 src/cryptsetup/cryptsetup-pkcs11.h
2145'''.split())
2146
2147 if conf.get('HAVE_P11KIT') == 1
2148 systemd_cryptsetup_sources += files('src/cryptsetup/cryptsetup-pkcs11.c')
2149 endif
2150
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002151 executable('systemd-cryptsetup',
Lennart Poettering08669702019-08-22 10:21:11 +02002152 systemd_cryptsetup_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002153 include_directories : includes,
2154 link_with : [libshared],
Lennart Poettering08669702019-08-22 10:21:11 +02002155 dependencies : [libcryptsetup,
2156 libp11kit],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002157 install_rpath : rootlibexecdir,
2158 install : true,
2159 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002160
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002161 executable('systemd-cryptsetup-generator',
2162 'src/cryptsetup/cryptsetup-generator.c',
2163 include_directories : includes,
2164 link_with : [libshared],
2165 dependencies : [libcryptsetup],
2166 install_rpath : rootlibexecdir,
2167 install : true,
2168 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002169
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002170 executable('systemd-veritysetup',
2171 'src/veritysetup/veritysetup.c',
2172 include_directories : includes,
2173 link_with : [libshared],
2174 dependencies : [libcryptsetup],
2175 install_rpath : rootlibexecdir,
2176 install : true,
2177 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002178
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002179 executable('systemd-veritysetup-generator',
2180 'src/veritysetup/veritysetup-generator.c',
2181 include_directories : includes,
2182 link_with : [libshared],
2183 dependencies : [libcryptsetup],
2184 install_rpath : rootlibexecdir,
2185 install : true,
2186 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002187endif
2188
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002189if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002190 executable('systemd-sysv-generator',
2191 'src/sysv-generator/sysv-generator.c',
2192 include_directories : includes,
2193 link_with : [libshared],
2194 install_rpath : rootlibexecdir,
2195 install : true,
2196 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002197
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002198 executable('systemd-rc-local-generator',
2199 'src/rc-local-generator/rc-local-generator.c',
2200 include_directories : includes,
2201 link_with : [libshared],
2202 install_rpath : rootlibexecdir,
2203 install : true,
2204 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002205endif
2206
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002207if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002208 executable('systemd-hostnamed',
2209 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002210 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002211 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002212 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002213 install : true,
2214 install_dir : rootlibexecdir)
2215
2216 exe = executable('hostnamectl',
2217 'src/hostname/hostnamectl.c',
2218 include_directories : includes,
2219 link_with : [libshared],
2220 install_rpath : rootlibexecdir,
2221 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002222 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002223endif
2224
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002225if conf.get('ENABLE_LOCALED') == 1
2226 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002227 # logind will load libxkbcommon.so dynamically on its own
2228 deps = [libdl]
2229 else
2230 deps = []
2231 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002232
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002233 executable('systemd-localed',
2234 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002235 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002236 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002237 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002238 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002239 install : true,
2240 install_dir : rootlibexecdir)
2241
2242 exe = executable('localectl',
2243 localectl_sources,
2244 include_directories : includes,
2245 link_with : [libshared],
2246 install_rpath : rootlibexecdir,
2247 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002248 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002249endif
2250
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002251if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002252 executable('systemd-timedated',
2253 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002254 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002255 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002256 install_rpath : rootlibexecdir,
2257 install : true,
2258 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002259endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002260
Yu Watanabe6129ec82018-05-03 18:07:43 +09002261if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002262 exe = executable('timedatectl',
2263 'src/timedate/timedatectl.c',
2264 include_directories : includes,
2265 install_rpath : rootlibexecdir,
2266 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002267 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002268 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002269 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002270endif
2271
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002272if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002273 executable('systemd-timesyncd',
2274 systemd_timesyncd_sources,
2275 include_directories : includes,
2276 link_with : [libshared],
2277 dependencies : [threads,
2278 libm],
2279 install_rpath : rootlibexecdir,
2280 install : true,
2281 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002282
2283 executable('systemd-time-wait-sync',
2284 'src/time-wait-sync/time-wait-sync.c',
2285 include_directories : includes,
2286 link_with : [libshared],
2287 install_rpath : rootlibexecdir,
2288 install : true,
2289 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002290endif
2291
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002292if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002293 executable('systemd-machined',
2294 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002295 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002296 link_with : [libmachine_core,
2297 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002298 install_rpath : rootlibexecdir,
2299 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002300 install_dir : rootlibexecdir)
2301
2302 exe = executable('machinectl',
2303 'src/machine/machinectl.c',
2304 include_directories : includes,
2305 link_with : [libshared],
2306 dependencies : [threads,
2307 libxz,
2308 liblz4],
2309 install_rpath : rootlibexecdir,
2310 install : true,
2311 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002312 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002313endif
2314
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002315if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002316 executable('systemd-importd',
2317 systemd_importd_sources,
2318 include_directories : includes,
2319 link_with : [libshared],
2320 dependencies : [threads],
2321 install_rpath : rootlibexecdir,
2322 install : true,
2323 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002324
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002325 systemd_pull = executable('systemd-pull',
2326 systemd_pull_sources,
2327 include_directories : includes,
2328 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002329 dependencies : [versiondep,
2330 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002331 libz,
2332 libbzip2,
2333 libxz,
2334 libgcrypt],
2335 install_rpath : rootlibexecdir,
2336 install : true,
2337 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002338
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002339 systemd_import = executable('systemd-import',
2340 systemd_import_sources,
2341 include_directories : includes,
2342 link_with : [libshared],
2343 dependencies : [libcurl,
2344 libz,
2345 libbzip2,
2346 libxz],
2347 install_rpath : rootlibexecdir,
2348 install : true,
2349 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002350
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002351 systemd_import_fs = executable('systemd-import-fs',
2352 systemd_import_fs_sources,
2353 include_directories : includes,
2354 link_with : [libshared],
2355 install_rpath : rootlibexecdir,
2356 install : true,
2357 install_dir : rootlibexecdir)
2358
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002359 systemd_export = executable('systemd-export',
2360 systemd_export_sources,
2361 include_directories : includes,
2362 link_with : [libshared],
2363 dependencies : [libcurl,
2364 libz,
2365 libbzip2,
2366 libxz],
2367 install_rpath : rootlibexecdir,
2368 install : true,
2369 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002370
2371 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002372endif
2373
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002374if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002375 exe = executable('systemd-journal-upload',
2376 systemd_journal_upload_sources,
2377 include_directories : includes,
2378 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002379 dependencies : [versiondep,
2380 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002381 libcurl,
2382 libgnutls,
2383 libxz,
2384 liblz4],
2385 install_rpath : rootlibexecdir,
2386 install : true,
2387 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002388 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002389endif
2390
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002391if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002392 s_j_remote = executable('systemd-journal-remote',
2393 systemd_journal_remote_sources,
2394 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002395 link_with : [libshared,
2396 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002397 dependencies : [threads,
2398 libmicrohttpd,
2399 libgnutls,
2400 libxz,
2401 liblz4],
2402 install_rpath : rootlibexecdir,
2403 install : true,
2404 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002405
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002406 s_j_gatewayd = executable('systemd-journal-gatewayd',
2407 systemd_journal_gatewayd_sources,
2408 include_directories : includes,
2409 link_with : [libshared],
2410 dependencies : [threads,
2411 libmicrohttpd,
2412 libgnutls,
2413 libxz,
2414 liblz4],
2415 install_rpath : rootlibexecdir,
2416 install : true,
2417 install_dir : rootlibexecdir)
2418 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002419endif
2420
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002421if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002422 executable('systemd-coredump',
2423 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002424 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002425 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002426 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002427 libacl,
2428 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002429 libxz,
2430 liblz4],
2431 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002432 install : true,
2433 install_dir : rootlibexecdir)
2434
2435 exe = executable('coredumpctl',
2436 coredumpctl_sources,
2437 include_directories : includes,
2438 link_with : [libshared],
2439 dependencies : [threads,
2440 libxz,
2441 liblz4],
2442 install_rpath : rootlibexecdir,
2443 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002444 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002445endif
2446
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002447if conf.get('ENABLE_PSTORE') == 1
2448 executable('systemd-pstore',
2449 systemd_pstore_sources,
2450 include_directories : includes,
2451 link_with : [libshared],
2452 dependencies : [threads,
2453 libacl,
2454 libdw,
2455 libxz,
2456 liblz4],
2457 install_rpath : rootlibexecdir,
2458 install : true,
2459 install_dir : rootlibexecdir)
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002460endif
2461
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002462if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002463 exe = executable('systemd-binfmt',
2464 'src/binfmt/binfmt.c',
2465 include_directories : includes,
2466 link_with : [libshared],
2467 install_rpath : rootlibexecdir,
2468 install : true,
2469 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002470 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002471
2472 meson.add_install_script('sh', '-c',
2473 mkdir_p.format(binfmtdir))
2474 meson.add_install_script('sh', '-c',
2475 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2476endif
2477
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002478if conf.get('ENABLE_REPART') == 1
2479 executable('systemd-repart',
2480 systemd_repart_sources,
2481 include_directories : includes,
2482 link_with : [libshared],
2483 dependencies : [threads,
2484 libcryptsetup,
2485 libblkid,
2486 libfdisk,
2487 libopenssl],
2488 install_rpath : rootlibexecdir,
2489 install : true,
2490 install_dir : rootbindir)
2491endif
2492
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002493if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002494 executable('systemd-vconsole-setup',
2495 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002496 include_directories : includes,
2497 link_with : [libshared],
2498 install_rpath : rootlibexecdir,
2499 install : true,
2500 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002501endif
2502
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002503if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002504 executable('systemd-random-seed',
2505 'src/random-seed/random-seed.c',
2506 include_directories : includes,
2507 link_with : [libshared],
2508 install_rpath : rootlibexecdir,
2509 install : true,
2510 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002511endif
2512
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002513if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002514 executable('systemd-firstboot',
2515 'src/firstboot/firstboot.c',
2516 include_directories : includes,
2517 link_with : [libshared],
2518 dependencies : [libcrypt],
2519 install_rpath : rootlibexecdir,
2520 install : true,
2521 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002522endif
2523
2524executable('systemd-remount-fs',
2525 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002526 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002527 link_with : [libcore_shared,
2528 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002529 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002530 install : true,
2531 install_dir : rootlibexecdir)
2532
2533executable('systemd-machine-id-setup',
2534 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002535 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002536 link_with : [libcore_shared,
2537 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002538 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002539 install : true,
2540 install_dir : rootbindir)
2541
2542executable('systemd-fsck',
2543 'src/fsck/fsck.c',
2544 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002545 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002546 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002547 install : true,
2548 install_dir : rootlibexecdir)
2549
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002550executable('systemd-growfs',
2551 'src/partition/growfs.c',
2552 include_directories : includes,
2553 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002554 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002555 install_rpath : rootlibexecdir,
2556 install : true,
2557 install_dir : rootlibexecdir)
2558
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002559executable('systemd-makefs',
2560 'src/partition/makefs.c',
2561 include_directories : includes,
2562 link_with : [libshared],
2563 install_rpath : rootlibexecdir,
2564 install : true,
2565 install_dir : rootlibexecdir)
2566
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002567executable('systemd-sleep',
2568 'src/sleep/sleep.c',
2569 include_directories : includes,
2570 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002571 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002572 install : true,
2573 install_dir : rootlibexecdir)
2574
Yu Watanabed25e1272019-01-03 02:32:57 +09002575install_data('src/sleep/sleep.conf',
2576 install_dir : pkgsysconfdir)
2577
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002578exe = executable('systemd-sysctl',
2579 'src/sysctl/sysctl.c',
2580 include_directories : includes,
2581 link_with : [libshared],
2582 install_rpath : rootlibexecdir,
2583 install : true,
2584 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002585public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002586
2587executable('systemd-ac-power',
2588 'src/ac-power/ac-power.c',
2589 include_directories : includes,
2590 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002591 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002592 install : true,
2593 install_dir : rootlibexecdir)
2594
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002595exe = executable('systemd-detect-virt',
2596 'src/detect-virt/detect-virt.c',
2597 include_directories : includes,
2598 link_with : [libshared],
2599 install_rpath : rootlibexecdir,
2600 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002601public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002602
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002603exe = executable('systemd-delta',
2604 'src/delta/delta.c',
2605 include_directories : includes,
2606 link_with : [libshared],
2607 install_rpath : rootlibexecdir,
2608 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002609public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002610
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002611exe = executable('systemd-escape',
2612 'src/escape/escape.c',
2613 include_directories : includes,
2614 link_with : [libshared],
2615 install_rpath : rootlibexecdir,
2616 install : true,
2617 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002618public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002619
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002620exe = executable('systemd-notify',
2621 'src/notify/notify.c',
2622 include_directories : includes,
2623 link_with : [libshared],
2624 install_rpath : rootlibexecdir,
2625 install : true,
2626 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002627public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002628
2629executable('systemd-volatile-root',
2630 'src/volatile-root/volatile-root.c',
2631 include_directories : includes,
2632 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002633 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002634 install : true,
2635 install_dir : rootlibexecdir)
2636
2637executable('systemd-cgroups-agent',
2638 'src/cgroups-agent/cgroups-agent.c',
2639 include_directories : includes,
2640 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002641 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002642 install : true,
2643 install_dir : rootlibexecdir)
2644
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002645exe = executable('systemd-id128',
2646 'src/id128/id128.c',
2647 include_directories : includes,
2648 link_with : [libshared],
2649 install_rpath : rootlibexecdir,
2650 install : true)
2651public_programs += exe
2652
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002653exe = executable('systemd-path',
2654 'src/path/path.c',
2655 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002656 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002657 install_rpath : rootlibexecdir,
2658 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002659public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002660
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002661exe = executable('systemd-ask-password',
2662 'src/ask-password/ask-password.c',
2663 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002664 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002665 install_rpath : rootlibexecdir,
2666 install : true,
2667 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002668public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002669
2670executable('systemd-reply-password',
2671 'src/reply-password/reply-password.c',
2672 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002673 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002674 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002675 install : true,
2676 install_dir : rootlibexecdir)
2677
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002678exe = executable('systemd-tty-ask-password-agent',
2679 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2680 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002681 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002682 install_rpath : rootlibexecdir,
2683 install : true,
2684 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002685public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002686
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002687exe = executable('systemd-cgls',
2688 'src/cgls/cgls.c',
2689 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002690 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002691 install_rpath : rootlibexecdir,
2692 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002693public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002694
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002695exe = executable('systemd-cgtop',
2696 'src/cgtop/cgtop.c',
2697 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002698 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002699 install_rpath : rootlibexecdir,
2700 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002701public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002702
2703executable('systemd-initctl',
2704 'src/initctl/initctl.c',
2705 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002706 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002707 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002708 install : true,
2709 install_dir : rootlibexecdir)
2710
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002711exe = executable('systemd-mount',
2712 'src/mount/mount-tool.c',
2713 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002714 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek7d991d42019-04-04 13:41:47 +02002715 dependencies: [libmount],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002716 install_rpath : rootlibexecdir,
2717 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002718public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002719
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002720meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002721 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002722
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002723exe = executable('systemd-run',
2724 'src/run/run.c',
2725 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002726 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002727 install_rpath : rootlibexecdir,
2728 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002729public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002730
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002731exe = executable('systemd-stdio-bridge',
2732 'src/stdio-bridge/stdio-bridge.c',
2733 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002734 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002735 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002736 install_rpath : rootlibexecdir,
2737 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002738public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002739
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002740exe = executable('busctl',
2741 'src/busctl/busctl.c',
2742 'src/busctl/busctl-introspect.c',
2743 'src/busctl/busctl-introspect.h',
2744 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002745 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002746 install_rpath : rootlibexecdir,
2747 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002748public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002749
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002750if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002751 exe = executable('systemd-sysusers',
2752 'src/sysusers/sysusers.c',
2753 include_directories : includes,
2754 link_with : [libshared],
2755 install_rpath : rootlibexecdir,
2756 install : true,
2757 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002758 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002759endif
2760
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002761if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002762 exe = executable('systemd-tmpfiles',
2763 'src/tmpfiles/tmpfiles.c',
2764 include_directories : includes,
2765 link_with : [libshared],
2766 dependencies : [libacl],
2767 install_rpath : rootlibexecdir,
2768 install : true,
2769 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002770 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002771
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002772 if want_tests != 'false'
2773 test('test-systemd-tmpfiles',
2774 test_systemd_tmpfiles_py,
2775 # https://github.com/mesonbuild/meson/issues/2681
2776 args : exe.full_path())
2777 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002778endif
2779
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002780if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002781 exe = executable('systemd-hwdb',
2782 'src/hwdb/hwdb.c',
2783 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2784 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002785 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002786 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002787 install : true,
2788 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002789 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002790endif
2791
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002792if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002793 executable('systemd-quotacheck',
2794 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002795 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002796 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002797 install_rpath : rootlibexecdir,
2798 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002799 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002800endif
2801
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002802exe = executable('systemd-socket-proxyd',
2803 'src/socket-proxy/socket-proxyd.c',
2804 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002805 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002806 dependencies : [threads],
2807 install_rpath : rootlibexecdir,
2808 install : true,
2809 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002810public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002811
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002812exe = executable('systemd-udevd',
2813 systemd_udevd_sources,
2814 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002815 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002816 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002817 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002818 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002819 dependencies : [versiondep,
2820 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002821 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002822 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002823 libacl,
2824 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002825 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002826 install : true,
2827 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002828public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002829
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002830exe = executable('udevadm',
2831 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002832 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002833 include_directories : includes,
2834 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002835 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002836 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002837 dependencies : [versiondep,
2838 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002839 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002840 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002841 libacl,
2842 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002843 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002844 install : true,
2845 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002846public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002847
2848executable('systemd-shutdown',
2849 systemd_shutdown_sources,
2850 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002851 link_with : [libcore_shared,
2852 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002853 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002854 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002855 install : true,
2856 install_dir : rootlibexecdir)
2857
2858executable('systemd-update-done',
2859 'src/update-done/update-done.c',
2860 include_directories : includes,
2861 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002862 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002863 install : true,
2864 install_dir : rootlibexecdir)
2865
2866executable('systemd-update-utmp',
2867 'src/update-utmp/update-utmp.c',
2868 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002869 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002870 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002871 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002872 install : true,
2873 install_dir : rootlibexecdir)
2874
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002875if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002876 executable('systemd-modules-load',
2877 'src/modules-load/modules-load.c',
2878 include_directories : includes,
2879 link_with : [libshared],
2880 dependencies : [libkmod],
2881 install_rpath : rootlibexecdir,
2882 install : true,
2883 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002884
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002885 meson.add_install_script('sh', '-c',
2886 mkdir_p.format(modulesloaddir))
2887 meson.add_install_script('sh', '-c',
2888 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002889endif
2890
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002891exe = executable('systemd-nspawn',
2892 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002893 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002894 link_with : [libcore_shared,
2895 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002896 libshared],
Franck Bui82384232019-03-22 11:09:08 +01002897 dependencies : [libblkid,
2898 libseccomp],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002899 install_rpath : rootlibexecdir,
2900 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002901public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002902
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002903if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002904 executable('systemd-networkd',
2905 systemd_networkd_sources,
Yu Watanabe737f1402019-10-30 17:02:15 +09002906 include_directories : network_include_dir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002907 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002908 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002909 libudev_static,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002910 networkd_link_with],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002911 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002912 install_rpath : rootlibexecdir,
2913 install : true,
2914 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002915
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002916 executable('systemd-networkd-wait-online',
2917 systemd_networkd_wait_online_sources,
2918 include_directories : includes,
2919 link_with : [libnetworkd_core,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002920 networkd_link_with],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002921 install_rpath : rootlibexecdir,
2922 install : true,
2923 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002924
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002925 exe = executable('networkctl',
2926 networkctl_sources,
2927 include_directories : includes,
2928 link_with : [libsystemd_network,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002929 networkd_link_with],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002930 install_rpath : rootlibexecdir,
2931 install : true,
2932 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002933 public_programs += exe
Yu Watanabe426c1d32019-07-13 03:35:04 +09002934
2935 executable('systemd-network-generator',
2936 network_generator_sources,
2937 include_directories : includes,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002938 link_with : [networkd_link_with],
Yu Watanabe426c1d32019-07-13 03:35:04 +09002939 install_rpath : rootlibexecdir,
2940 install : true,
2941 install_dir : rootlibexecdir)
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002942endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002943
2944executable('systemd-sulogin-shell',
2945 ['src/sulogin-shell/sulogin-shell.c'],
2946 include_directories : includes,
2947 link_with : [libshared],
2948 install_rpath : rootlibexecdir,
2949 install : true,
2950 install_dir : rootlibexecdir)
2951
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002952############################################################
2953
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002954custom_target(
2955 'systemd-runtest.env',
2956 output : 'systemd-runtest.env',
2957 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05002958 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002959 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002960 '} >@OUTPUT@'],
2961 build_by_default : true)
2962
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002963foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002964 sources = tuple[0]
2965 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2966 dependencies = tuple[2]
2967 condition = tuple.length() >= 4 ? tuple[3] : ''
2968 type = tuple.length() >= 5 ? tuple[4] : ''
2969 defs = tuple.length() >= 6 ? tuple[5] : []
2970 incs = tuple.length() >= 7 ? tuple[6] : includes
2971 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002972
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002973 name = sources[0].split('/')[-1].split('.')[0]
2974 if type.startswith('timeout=')
2975 timeout = type.split('=')[1].to_int()
2976 type = ''
2977 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002978
2979 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002980 exe = executable(
2981 name,
2982 sources,
2983 include_directories : incs,
2984 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002985 dependencies : [versiondep,
2986 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002987 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002988 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002989 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002990 install : install_tests,
2991 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002992
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002993 if type == 'manual'
2994 message('@0@ is a manual test'.format(name))
2995 elif type == 'unsafe' and want_tests != 'unsafe'
2996 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002997 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002998 test(name, exe,
2999 env : test_env,
3000 timeout : timeout)
3001 endif
3002 else
3003 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
3004 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003005endforeach
3006
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003007exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003008 'test-libsystemd-sym',
3009 test_libsystemd_sym_c,
3010 include_directories : includes,
3011 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003012 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003013 install : install_tests,
3014 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003015if want_tests != 'false'
3016 test('test-libsystemd-sym', exe)
3017endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04003018
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003019exe = executable(
3020 'test-libsystemd-static-sym',
3021 test_libsystemd_sym_c,
3022 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003023 link_with : [install_libsystemd_static],
3024 dependencies : [threads], # threads is already included in dependencies on the library,
3025 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09003026 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003027 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003028 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003029if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003030 test('test-libsystemd-static-sym', exe)
3031endif
3032
3033exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003034 'test-libudev-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-Szmek37efbbd2017-04-17 19:25:00 -04003038 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003039 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003040 install : install_tests,
3041 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003042if want_tests != 'false'
3043 test('test-libudev-sym', exe)
3044endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003045
3046exe = executable(
3047 'test-libudev-static-sym',
3048 test_libudev_sym_c,
3049 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003050 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003051 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003052 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003053 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003054 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003055if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003056 test('test-libudev-static-sym', exe)
3057endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04003058
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003059############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003060
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003061fuzzer_exes = []
3062
Michael Olbrich59967402018-11-11 11:27:35 +01003063if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003064foreach tuple : fuzzers
3065 sources = tuple[0]
3066 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3067 dependencies = tuple[2]
3068 defs = tuple.length() >= 4 ? tuple[3] : []
3069 incs = tuple.length() >= 5 ? tuple[4] : includes
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003070 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003071
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003072 if want_ossfuzz or want_fuzzbuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003073 dependencies += fuzzing_engine
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003074 elif want_libfuzzer
3075 if fuzzing_engine.found()
3076 dependencies += fuzzing_engine
3077 else
3078 link_args += ['-fsanitize=fuzzer']
3079 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003080 else
3081 sources += 'src/fuzz/fuzz-main.c'
3082 endif
3083
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00003084 if want_fuzzbuzz
3085 sources += 'src/fuzz/fuzzer-entry-point.c'
3086 endif
3087
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003088 name = sources[0].split('/')[-1].split('.')[0]
3089
3090 fuzzer_exes += executable(
3091 name,
3092 sources,
3093 include_directories : [incs, include_directories('src/fuzz')],
3094 link_with : link_with,
3095 dependencies : dependencies,
3096 c_args : defs,
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003097 link_args: link_args,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003098 install : false)
3099endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01003100endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003101
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01003102run_target('fuzzers',
3103 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003104 command : ['true'])
3105
3106############################################################
3107
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003108make_directive_index_py = find_program('tools/make-directive-index.py')
3109make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04003110xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04003111hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek62d39992019-11-15 11:32:24 +01003112autosuspend_update_sh = find_program('tools/meson-autosuspend-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003113
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003114subdir('sysctl.d')
3115subdir('sysusers.d')
3116subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmek4f10b802019-10-08 16:52:10 +02003117subdir('hwdb.d')
3118subdir('units')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01003119subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003120subdir('network')
3121subdir('man')
3122subdir('shell-completion/bash')
3123subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003124subdir('docs/sysvinit')
3125subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003126
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003127install_subdir('factory/etc',
3128 install_dir : factorydir)
3129
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003130install_data('xorg/50-systemd-user.sh',
3131 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01003132install_data('modprobe.d/systemd.conf',
3133 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003134install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003135 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003136 'NEWS',
3137 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05303138 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07003139 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003140 'docs/ENVIRONMENT.md',
Zbigniew Jędrzejewski-Szmek5425f8a2020-01-15 13:45:04 +01003141 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003142 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07003143 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003144 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003145 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
3146 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003147
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04003148meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
3149meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
3150
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003151############################################################
3152
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003153meson_check_help = find_program('tools/meson-check-help.sh')
3154
3155foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003156 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003157 if want_tests != 'false'
3158 test('check-help-' + name,
3159 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003160 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003161 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003162endforeach
3163
3164############################################################
3165
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02003166check_directives_sh = find_program('tools/check-directives.sh')
3167
3168if want_tests != 'false'
3169 test('check-directives',
3170 check_directives_sh,
3171 args : project_source_root)
3172endif
3173
3174############################################################
3175
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003176# Enable tests for all supported sanitizers
3177foreach tuple : sanitizers
3178 sanitizer = tuple[0]
3179 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003180
Yu Watanabe7a6397d2018-05-15 20:18:24 +09003181 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003182 prev = ''
3183 foreach p : fuzz_regression_tests
3184 b = p.split('/')[-2]
3185 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003186
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003187 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003188
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003189 if name != prev
3190 if want_tests == 'false'
3191 message('Not compiling @0@ because tests is set to false'.format(name))
3192 elif slow_tests
3193 exe = custom_target(
3194 name,
3195 output : name,
3196 depends : build,
3197 command : [env, 'ln', '-fs',
3198 join_paths(build.full_path(), b),
3199 '@OUTPUT@'],
3200 build_by_default : true)
3201 else
3202 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3203 endif
3204 endif
3205 prev = name
3206
3207 if want_tests != 'false' and slow_tests
3208 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3209 env,
3210 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003211 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003212 endif
3213 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003214 endif
3215endforeach
3216
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003217
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003218############################################################
3219
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003220if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003221 all_files = run_command(
3222 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003223 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003224 'ls-files',
3225 ':/*.[ch]'])
3226 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003227
userwithuide85a6902017-08-09 13:41:44 +00003228 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003229 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003230 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003231 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003232 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003233 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003234 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003235endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003236
3237if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003238 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003239 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003240 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003241 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003242endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003243
3244if git.found()
3245 git_head = run_command(
3246 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003247 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003248 'rev-parse', 'HEAD']).stdout().strip()
3249 git_head_short = run_command(
3250 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003251 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003252 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3253
3254 run_target(
3255 'git-snapshot',
3256 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003257 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003258 git_head_short),
3259 '--prefix', 'systemd-@0@/'.format(git_head),
3260 'HEAD'])
3261endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003262
3263############################################################
3264
Lennart Poettering51b13862017-12-20 12:51:14 +01003265meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3266run_target(
3267 'check-api-docs',
3268 depends : [man, libsystemd, libudev],
3269 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3270
3271############################################################
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003272watchdog_opt = service_watchdog == '' ? 'disabled' : service_watchdog
Lennart Poettering51b13862017-12-20 12:51:14 +01003273
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003274status = [
3275 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3276
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003277 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003278 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003279 'prefix directory: @0@'.format(prefixdir),
3280 'rootprefix directory: @0@'.format(rootprefixdir),
3281 'sysconf directory: @0@'.format(sysconfdir),
3282 'include directory: @0@'.format(includedir),
3283 'lib directory: @0@'.format(libdir),
3284 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003285 'SysV init scripts: @0@'.format(sysvinit_path),
3286 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003287 'PAM modules directory: @0@'.format(pamlibdir),
3288 'PAM configuration directory: @0@'.format(pamconfdir),
3289 'RPM macros directory: @0@'.format(rpmmacrosdir),
3290 'modprobe.d directory: @0@'.format(modprobedir),
3291 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3292 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3293 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3294 'bash completions directory: @0@'.format(bashcompletiondir),
3295 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003296 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003297 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3298 get_option('debug-tty')),
3299 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003300 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003301 'maximum system UID: @0@'.format(system_uid_max),
3302 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003303 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3304 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3305 'minimum container UID base: @0@'.format(container_uid_base_min),
3306 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003307 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003308 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003309 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003310 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003311 'nobody user name: @0@'.format(nobody_user),
3312 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003313 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003314 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003315
3316 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003317 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003318 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003319 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003320 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +02003321 'default locale: @0@'.format(default_locale),
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +01003322 'default user $PATH: @0@'.format(default_user_path_display),
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003323 'systemd service watchdog: @0@'.format(watchdog_opt)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003324
3325alt_dns_servers = '\n '.join(dns_servers.split(' '))
3326alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3327status += [
3328 'default DNS servers: @0@'.format(alt_dns_servers),
3329 'default NTP servers: @0@'.format(alt_ntp_servers)]
3330
3331alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3332 '@@0@'.format(time_epoch)).stdout().strip()
3333status += [
3334 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3335
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003336status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003337 'static libsystemd: @0@'.format(static_libsystemd),
3338 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003339
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003340# TODO:
3341# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3342# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3343# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3344
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003345if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003346 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003347
3348 if have_gnu_efi
3349 status += [
3350 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003351 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003352 'EFI lib directory: @0@'.format(efi_libdir),
3353 'EFI lds directory: @0@'.format(efi_ldsdir),
3354 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003355 endif
3356endif
3357
3358found = []
3359missing = []
3360
3361foreach tuple : [
3362 ['libcryptsetup'],
3363 ['PAM'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003364 ['pwquality'],
3365 ['fdisk'],
Lennart Poettering839fddb2019-11-05 11:49:27 +01003366 ['p11kit'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003367 ['AUDIT'],
3368 ['IMA'],
3369 ['AppArmor'],
3370 ['SELinux'],
3371 ['SECCOMP'],
3372 ['SMACK'],
3373 ['zlib'],
3374 ['xz'],
3375 ['lz4'],
3376 ['bzip2'],
3377 ['ACL'],
3378 ['gcrypt'],
3379 ['qrencode'],
3380 ['microhttpd'],
3381 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003382 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003383 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003384 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003385 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003386 ['libidn'],
3387 ['libiptc'],
3388 ['elfutils'],
3389 ['binfmt'],
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01003390 ['repart'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003391 ['vconsole'],
3392 ['quotacheck'],
3393 ['tmpfiles'],
3394 ['environment.d'],
3395 ['sysusers'],
3396 ['firstboot'],
3397 ['randomseed'],
3398 ['backlight'],
3399 ['rfkill'],
3400 ['logind'],
3401 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003402 ['portabled'],
Lennart Poetteringd093b622019-07-04 18:33:30 +02003403 ['userdb'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003404 ['homed'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003405 ['importd'],
3406 ['hostnamed'],
3407 ['timedated'],
3408 ['timesyncd'],
3409 ['localed'],
3410 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003411 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003412 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3413 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003414 ['coredump'],
Eric DeVolder9b4abc62019-05-16 08:59:01 -05003415 ['pstore'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003416 ['polkit'],
3417 ['legacy pkla', install_polkit_pkla],
3418 ['efi'],
3419 ['gnu-efi', have_gnu_efi],
3420 ['kmod'],
3421 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003422 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003423 ['blkid'],
3424 ['dbus'],
3425 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003426 ['nss-myhostname'],
3427 ['nss-mymachines'],
3428 ['nss-resolve'],
3429 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003430 ['hwdb'],
3431 ['tpm'],
3432 ['man pages', want_man],
3433 ['html pages', want_html],
3434 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003435 ['SysV compat'],
3436 ['utmp'],
3437 ['ldconfig'],
3438 ['hibernate'],
3439 ['adm group', get_option('adm-group')],
3440 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003441 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003442 ['debug hashmap'],
3443 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003444 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003445 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003446 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003447 ['link-udev-shared', get_option('link-udev-shared')],
3448 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Robert Scheck5ac8b502020-01-08 02:36:07 +01003449 ['link-networkd-shared', get_option('link-networkd-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003450]
3451
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003452 if tuple.length() >= 2
3453 cond = tuple[1]
3454 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003455 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3456 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003457 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003458 endif
3459 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003460 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003461 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003462 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003463 endif
3464endforeach
3465
3466status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003467 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003468 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003469 '',
3470 'disabled features: @0@'.format(', '.join(missing)),
3471 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003472message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003473
3474if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003475 warning('\n' +
3476 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3477 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3478 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003479endif