blob: 2175ccac1d4bd550d87bc8e3325faa35014b460f [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
Yu Watanabeaf06ddf2020-02-01 11:01:41 +09001346have = have and conf.get('HAVE_PAM') == 1
1347conf.set10('ENABLE_PAM_HOME', have)
1348
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001349want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001350if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001351 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1352 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001353 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1354 # it's possible to build one without the other. Complain only if
Ben Boeckel5238e952019-04-26 20:22:40 -04001355 # support was explicitly requested. The auxiliary files like sysusers
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001356 # config should be installed when any of the programs are built.
1357 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1358 error('remote support was requested, but dependencies are not available')
1359 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001360 have = have_deps[0] or have_deps[1]
1361else
1362 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001363endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001364conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001365
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001366foreach term : ['utmp',
1367 'hibernate',
1368 'environment-d',
1369 'binfmt',
1370 'coredump',
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001371 'pstore',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001372 'resolve',
1373 'logind',
1374 'hostnamed',
1375 'localed',
1376 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001377 'portabled',
Lennart Poetteringd093b622019-07-04 18:33:30 +02001378 'userdb',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001379 'networkd',
1380 'timedated',
1381 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001382 'firstboot',
1383 'randomseed',
1384 'backlight',
1385 'vconsole',
1386 'quotacheck',
1387 'sysusers',
1388 'tmpfiles',
1389 'hwdb',
1390 'rfkill',
1391 'ldconfig',
1392 'efi',
1393 'tpm',
1394 'ima',
1395 'smack',
1396 'gshadow',
1397 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001398 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001399 'nss-systemd']
1400 have = get_option(term)
1401 name = 'ENABLE_' + term.underscorify().to_upper()
1402 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001403endforeach
1404
Yu Watanabe08540a92018-07-18 09:25:57 +09001405foreach tuple : [['nss-mymachines', 'machined'],
1406 ['nss-resolve', 'resolve']]
1407 want = get_option(tuple[0])
1408 if want != 'false'
1409 have = get_option(tuple[1])
1410 if want == 'true' and not have
1411 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1412 endif
1413 else
1414 have = false
1415 endif
1416 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1417 conf.set10(name, have)
1418endforeach
1419
1420enable_nss = false
1421foreach term : ['ENABLE_NSS_MYHOSTNAME',
1422 'ENABLE_NSS_MYMACHINES',
1423 'ENABLE_NSS_RESOLVE',
1424 'ENABLE_NSS_SYSTEMD']
1425 if conf.get(term) == 1
1426 enable_nss = true
1427 endif
1428endforeach
1429conf.set10('ENABLE_NSS', enable_nss)
1430
Yu Watanabe348b4432018-05-07 18:17:35 +09001431conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001432
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001433tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001434fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001435
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001436conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001437
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001438#####################################################################
1439
1440if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001441 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001442
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001443 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001444 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001445 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001446 elif efi_arch == 'x86_64'
1447 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001448 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001449 elif efi_arch == 'arm'
1450 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001451 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001452 elif efi_arch == 'aarch64'
1453 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001454 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001455 else
1456 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001457 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001458 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001459
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001460 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001461 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001462
Yu Watanabeac093402018-05-10 16:04:16 +09001463 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001464else
1465 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001466endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001467conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001468
1469#####################################################################
1470
1471config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001472 output : 'config.h',
1473 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001474
Yu Watanabe348b4432018-05-07 18:17:35 +09001475meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1476
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001477includes = include_directories('src/basic',
Zbigniew Jędrzejewski-Szmek91b08bb2019-07-02 13:01:23 +02001478 'src/boot',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001479 'src/shared',
1480 'src/systemd',
1481 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001482 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001483 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001484 'src/resolve',
1485 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001486 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001487 'src/login',
1488 'src/udev',
1489 'src/libudev',
1490 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001491 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001492 'src/libsystemd/sd-bus',
1493 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001494 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001495 'src/libsystemd/sd-hwdb',
1496 'src/libsystemd/sd-id128',
1497 'src/libsystemd/sd-netlink',
1498 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001499 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001500 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001501 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001502
1503add_project_arguments('-include', 'config.h', language : 'c')
1504
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001505generate_gperfs = find_program('tools/generate-gperfs.py')
1506
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001507subdir('po')
1508subdir('catalog')
1509subdir('src/systemd')
1510subdir('src/basic')
1511subdir('src/libsystemd')
1512subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001513subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001514subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001515
1516libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001517 'journal-core',
1518 libjournal_core_sources,
1519 journald_gperf_c,
1520 include_directories : includes,
1521 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001522
Davide Cavalca1485aac2019-02-27 11:19:07 -05001523libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001524libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001525 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001526 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001527 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001528 include_directories : includes,
1529 link_args : ['-shared',
1530 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001531 link_with : [libbasic,
1532 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001533 link_whole : [libsystemd_static,
1534 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001535 dependencies : [threads,
1536 librt,
1537 libxz,
1538 liblz4],
1539 link_depends : libsystemd_sym,
1540 install : true,
1541 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001542
Davide Cavalca70848ec2018-04-09 02:43:35 -07001543static_libsystemd = get_option('static-libsystemd')
1544static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1545
1546install_libsystemd_static = static_library(
1547 'systemd',
1548 libsystemd_sources,
1549 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001550 basic_sources,
1551 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001552 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001553 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001554 build_by_default : static_libsystemd != 'false',
1555 install : static_libsystemd != 'false',
1556 install_dir : rootlibdir,
1557 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1558 dependencies : [threads,
1559 librt,
1560 libxz,
1561 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001562 libcap,
1563 libblkid,
1564 libmount,
1565 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001566 libgcrypt],
1567 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1568
Mario Limonciellob61d7772019-09-09 22:49:35 +01001569#Generate autosuspend rules
1570make_autosuspend_rules_py = find_program('tools/make-autosuspend-rules.py')
1571
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001572############################################################
1573
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001574# binaries that have --help and are intended for use by humans,
1575# usually, but not always, installed in /bin.
1576public_programs = []
1577
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001578subdir('src/libudev')
1579subdir('src/shared')
1580subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001581subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001582subdir('src/udev')
1583subdir('src/network')
1584
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001585subdir('src/analyze')
1586subdir('src/journal-remote')
1587subdir('src/coredump')
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001588subdir('src/pstore')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001589subdir('src/hostname')
1590subdir('src/import')
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01001591subdir('src/partition')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001592subdir('src/kernel-install')
1593subdir('src/locale')
1594subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001595subdir('src/portable')
Lennart Poetteringd093b622019-07-04 18:33:30 +02001596subdir('src/userdb')
Lennart Poettering70a5db52019-07-04 18:35:39 +02001597subdir('src/home')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001598subdir('src/nspawn')
1599subdir('src/resolve')
1600subdir('src/timedate')
1601subdir('src/timesync')
1602subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001603subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001604
1605subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001606subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmekef2ad302019-10-08 16:43:18 +02001607subdir('rules.d')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001608subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001609
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001610############################################################
1611
1612# only static linking apart from libdl, to make sure that the
1613# module is linked to all libraries that it uses.
1614test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001615 'test-dlopen',
1616 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001617 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001618 include_directories : includes,
1619 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001620 dependencies : [libdl],
1621 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001622
Yu Watanabe08540a92018-07-18 09:25:57 +09001623foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Lennart Poettering1684c562019-07-04 18:31:11 +02001624 ['systemd', 'ENABLE_NSS_SYSTEMD', 'src/nss-systemd/userdb-glue.c src/nss-systemd/userdb-glue.h'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001625 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1626 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001627
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001628 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001629 if condition
1630 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001631
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001632 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001633 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001634
Lennart Poettering1684c562019-07-04 18:31:11 +02001635 sources = ['src/nss-@0@/nss-@0@.c'.format(module)]
1636 if tuple.length() > 2
1637 sources += tuple[2].split()
1638 endif
1639
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001640 nss = shared_library(
1641 'nss_' + module,
Lennart Poettering1684c562019-07-04 18:31:11 +02001642 sources,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001643 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001644 version : '2',
1645 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001646 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1647 link_args : ['-Wl,-z,nodelete',
1648 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001649 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001650 link_with : [libsystemd_static,
Lennart Poettering733cbd02019-07-23 14:22:06 +02001651 libshared_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001652 libbasic],
1653 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001654 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001655 link_depends : sym,
1656 install : true,
1657 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001658
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001659 # We cannot use shared_module because it does not support version suffix.
1660 # Unfortunately shared_library insists on creating the symlink…
1661 meson.add_install_script('sh', '-c',
1662 'rm $DESTDIR@0@/libnss_@1@.so'
1663 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001664
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001665 if want_tests != 'false'
1666 test('dlopen-nss_' + module,
1667 test_dlopen,
1668 # path to dlopen must include a slash
1669 args : nss.full_path())
1670 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001671 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001672endforeach
1673
1674############################################################
1675
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001676executable('systemd',
1677 systemd_sources,
1678 include_directories : includes,
1679 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001680 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001681 dependencies : [versiondep,
1682 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001683 librt,
1684 libseccomp,
1685 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001686 libmount,
1687 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001688 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001689 install : true,
1690 install_dir : rootlibexecdir)
1691
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001692meson.add_install_script(meson_make_symlink,
1693 join_paths(rootlibexecdir, 'systemd'),
1694 join_paths(rootsbindir, 'init'))
1695
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001696exe = executable('systemd-analyze',
1697 systemd_analyze_sources,
1698 include_directories : includes,
1699 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001700 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001701 dependencies : [versiondep,
1702 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001703 librt,
1704 libseccomp,
1705 libselinux,
1706 libmount,
1707 libblkid],
1708 install_rpath : rootlibexecdir,
1709 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001710public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001711
1712executable('systemd-journald',
1713 systemd_journald_sources,
1714 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001715 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001716 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001717 dependencies : [threads,
1718 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001719 liblz4,
1720 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001721 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001722 install : true,
1723 install_dir : rootlibexecdir)
1724
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001725exe = executable('systemd-cat',
1726 systemd_cat_sources,
1727 include_directories : includes,
1728 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001729 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001730 dependencies : [threads],
1731 install_rpath : rootlibexecdir,
1732 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001733public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001734
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001735exe = executable('journalctl',
1736 journalctl_sources,
1737 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001738 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001739 dependencies : [threads,
1740 libqrencode,
1741 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001742 liblz4,
1743 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001744 install_rpath : rootlibexecdir,
1745 install : true,
1746 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001747public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001748
1749executable('systemd-getty-generator',
1750 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001751 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001752 link_with : [libshared],
1753 install_rpath : rootlibexecdir,
1754 install : true,
1755 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001756
1757executable('systemd-debug-generator',
1758 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001759 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001760 link_with : [libshared],
1761 install_rpath : rootlibexecdir,
1762 install : true,
1763 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001764
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001765executable('systemd-run-generator',
1766 'src/run-generator/run-generator.c',
1767 include_directories : includes,
1768 link_with : [libshared],
1769 install_rpath : rootlibexecdir,
1770 install : true,
1771 install_dir : systemgeneratordir)
1772
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001773executable('systemd-fstab-generator',
1774 'src/fstab-generator/fstab-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001775 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01001776 link_with : [libcore_shared,
1777 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001778 install_rpath : rootlibexecdir,
1779 install : true,
1780 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001781
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001782if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001783 executable('30-systemd-environment-d-generator',
1784 'src/environment-d-generator/environment-d-generator.c',
1785 include_directories : includes,
1786 link_with : [libshared],
1787 install_rpath : rootlibexecdir,
1788 install : true,
1789 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001790
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001791 meson.add_install_script(meson_make_symlink,
1792 join_paths(sysconfdir, 'environment'),
1793 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001794endif
1795
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001796if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001797 executable('systemd-hibernate-resume-generator',
1798 'src/hibernate-resume/hibernate-resume-generator.c',
1799 include_directories : includes,
1800 link_with : [libshared],
1801 install_rpath : rootlibexecdir,
1802 install : true,
1803 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001804
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001805 executable('systemd-hibernate-resume',
1806 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001807 include_directories : includes,
1808 link_with : [libshared],
1809 install_rpath : rootlibexecdir,
1810 install : true,
1811 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001812endif
1813
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001814if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001815 executable('systemd-gpt-auto-generator',
1816 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001817 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001818 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001819 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001820 dependencies : libblkid,
1821 install_rpath : rootlibexecdir,
1822 install : true,
1823 install_dir : systemgeneratordir)
1824
1825 exe = executable('systemd-dissect',
1826 'src/dissect/dissect.c',
1827 include_directories : includes,
1828 link_with : [libshared],
1829 install_rpath : rootlibexecdir,
1830 install : true,
1831 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001832 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001833endif
1834
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001835if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001836 executable('systemd-resolved',
1837 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001838 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001839 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001840 libbasic_gcrypt,
1841 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001842 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001843 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001844 install : true,
1845 install_dir : rootlibexecdir)
1846
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001847 exe = executable('resolvectl',
1848 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001849 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001850 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001851 libbasic_gcrypt,
1852 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001853 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001854 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001855 libm,
1856 libidn],
1857 install_rpath : rootlibexecdir,
1858 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001859 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001860
1861 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001862 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001863 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001864
1865 meson.add_install_script(meson_make_symlink,
1866 join_paths(bindir, 'resolvectl'),
1867 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001868endif
1869
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001870if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001871 executable('systemd-logind',
1872 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001873 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001874 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001875 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001876 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001877 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001878 install_rpath : rootlibexecdir,
1879 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001880 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001881
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001882 exe = executable('loginctl',
1883 loginctl_sources,
1884 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001885 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001886 dependencies : [threads,
1887 liblz4,
1888 libxz],
1889 install_rpath : rootlibexecdir,
1890 install : true,
1891 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001892 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001893
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001894 exe = executable('systemd-inhibit',
1895 'src/login/inhibit.c',
1896 include_directories : includes,
1897 link_with : [libshared],
1898 install_rpath : rootlibexecdir,
1899 install : true,
1900 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001901 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001902
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001903 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001904 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001905 pam_systemd = shared_library(
1906 'pam_systemd',
1907 pam_systemd_c,
1908 name_prefix : '',
1909 include_directories : includes,
1910 link_args : ['-shared',
1911 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001912 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001913 libshared_static],
1914 dependencies : [threads,
1915 libpam,
1916 libpam_misc],
1917 link_depends : pam_systemd_sym,
1918 install : true,
1919 install_dir : pamlibdir)
1920
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001921 if want_tests != 'false'
1922 test('dlopen-pam_systemd',
1923 test_dlopen,
1924 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001925 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001926 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001927 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001928
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001929 executable('systemd-user-runtime-dir',
1930 user_runtime_dir_sources,
1931 include_directories : includes,
1932 link_with : [libshared],
1933 install_rpath : rootlibexecdir,
1934 install : true,
1935 install_dir : rootlibexecdir)
1936endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001937
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001938if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001939 executable('systemd-user-sessions',
1940 'src/user-sessions/user-sessions.c',
1941 include_directories : includes,
1942 link_with : [libshared],
1943 install_rpath : rootlibexecdir,
1944 install : true,
1945 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001946endif
1947
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001948if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001949 exe = executable('bootctl',
1950 'src/boot/bootctl.c',
1951 include_directories : includes,
1952 link_with : [libshared],
1953 dependencies : [libblkid],
1954 install_rpath : rootlibexecdir,
1955 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001956 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001957
1958 executable('systemd-bless-boot',
1959 'src/boot/bless-boot.c',
1960 include_directories : includes,
1961 link_with : [libshared],
1962 dependencies : [libblkid],
1963 install_rpath : rootlibexecdir,
1964 install : true,
1965 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001966
1967 executable('systemd-bless-boot-generator',
1968 'src/boot/bless-boot-generator.c',
1969 include_directories : includes,
1970 link_with : [libshared],
1971 install_rpath : rootlibexecdir,
1972 install : true,
1973 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001974endif
1975
Lennart Poetteringf876f532018-06-25 16:07:33 +02001976executable('systemd-boot-check-no-failures',
1977 'src/boot/boot-check-no-failures.c',
1978 include_directories : includes,
1979 link_with : [libshared],
1980 dependencies : [libblkid],
1981 install_rpath : rootlibexecdir,
1982 install : true,
1983 install_dir : rootlibexecdir)
1984
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001985exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1986 include_directories : includes,
1987 link_with : [libshared],
1988 dependencies : [threads],
1989 install_rpath : rootlibexecdir,
1990 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001991public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001992
Felipe Satelerf3794362018-05-22 15:08:57 -04001993
1994if get_option('link-systemctl-shared')
1995 systemctl_link_with = [libshared]
1996else
1997 systemctl_link_with = [libsystemd_static,
1998 libshared_static,
1999 libjournal_client,
2000 libbasic_gcrypt]
2001endif
2002
Lennart Poettering63a3b3c2019-03-22 20:05:08 +01002003exe = executable('systemctl',
2004 'src/systemctl/systemctl.c',
2005 'src/systemctl/sysv-compat.h',
2006 'src/systemctl/sysv-compat.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002007 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04002008 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002009 dependencies : [threads,
2010 libcap,
2011 libselinux,
2012 libxz,
2013 liblz4],
2014 install_rpath : rootlibexecdir,
2015 install : true,
2016 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002017public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002018
Lennart Poettering61d05782018-04-16 21:41:40 +02002019if conf.get('ENABLE_PORTABLED') == 1
2020 executable('systemd-portabled',
2021 systemd_portabled_sources,
2022 include_directories : includes,
2023 link_with : [libshared],
2024 dependencies : [threads],
2025 install_rpath : rootlibexecdir,
2026 install : true,
2027 install_dir : rootlibexecdir)
2028
2029 exe = executable('portablectl', 'src/portable/portablectl.c',
2030 include_directories : includes,
2031 link_with : [libshared],
2032 dependencies : [threads],
2033 install_rpath : rootlibexecdir,
2034 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02002035 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002036 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02002037endif
2038
Lennart Poetteringd093b622019-07-04 18:33:30 +02002039if conf.get('ENABLE_USERDB') == 1
2040 executable('systemd-userwork',
2041 systemd_userwork_sources,
2042 include_directories : includes,
2043 link_with : [libshared],
2044 dependencies : [threads],
2045 install_rpath : rootlibexecdir,
2046 install : true,
2047 install_dir : rootlibexecdir)
2048
2049 executable('systemd-userdbd',
2050 systemd_userdbd_sources,
2051 include_directories : includes,
2052 link_with : [libshared],
2053 dependencies : [threads],
2054 install_rpath : rootlibexecdir,
2055 install : true,
2056 install_dir : rootlibexecdir)
Lennart Poettering16049372019-08-05 18:22:01 +02002057
2058 executable('userdbctl',
2059 userdbctl_sources,
2060 include_directories : includes,
2061 link_with : [libshared],
2062 dependencies : [threads],
2063 install_rpath : rootlibexecdir,
2064 install : true,
2065 install_dir : rootbindir)
Lennart Poetteringd093b622019-07-04 18:33:30 +02002066endif
2067
Lennart Poettering70a5db52019-07-04 18:35:39 +02002068if conf.get('ENABLE_HOMED') == 1
2069 executable('systemd-homework',
2070 systemd_homework_sources,
2071 include_directories : includes,
2072 link_with : [libshared],
2073 dependencies : [threads,
2074 libcryptsetup,
2075 libblkid,
2076 libcrypt,
2077 libopenssl,
2078 libfdisk,
2079 libp11kit],
2080 install_rpath : rootlibexecdir,
2081 install : true,
2082 install_dir : rootlibexecdir)
2083
2084 executable('systemd-homed',
2085 systemd_homed_sources,
2086 include_directories : includes,
2087 link_with : [libshared],
2088 dependencies : [threads,
2089 libcrypt,
2090 libopenssl,
2091 libpwquality],
2092 install_rpath : rootlibexecdir,
2093 install : true,
2094 install_dir : rootlibexecdir)
Lennart Poettering4aa0a8a2019-07-04 19:06:15 +02002095
2096 executable('homectl',
2097 homectl_sources,
2098 include_directories : includes,
2099 link_with : [libshared],
2100 dependencies : [threads,
2101 libcrypt,
2102 libopenssl,
2103 libp11kit,
2104 libpwquality],
2105 install_rpath : rootlibexecdir,
2106 install : true,
2107 install_dir : rootbindir)
Lennart Poettering26cf9fb2019-07-04 19:06:26 +02002108
2109 if conf.get('HAVE_PAM') == 1
2110 version_script_arg = join_paths(project_source_root, pam_systemd_home_sym)
2111 pam_systemd = shared_library(
2112 'pam_systemd_home',
2113 pam_systemd_home_c,
2114 name_prefix : '',
2115 include_directories : includes,
2116 link_args : ['-shared',
2117 '-Wl,--version-script=' + version_script_arg],
2118 link_with : [libsystemd_static,
2119 libshared_static],
2120 dependencies : [threads,
2121 libpam,
2122 libpam_misc,
2123 libcrypt],
2124 link_depends : pam_systemd_home_sym,
2125 install : true,
2126 install_dir : pamlibdir)
2127 endif
Lennart Poettering70a5db52019-07-04 18:35:39 +02002128endif
2129
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01002130foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
2131 meson.add_install_script(meson_make_symlink,
2132 join_paths(rootbindir, 'systemctl'),
2133 join_paths(rootsbindir, alias))
2134endforeach
2135
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002136if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002137 executable('systemd-backlight',
2138 'src/backlight/backlight.c',
2139 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002140 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002141 install_rpath : rootlibexecdir,
2142 install : true,
2143 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002144endif
2145
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002146if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002147 executable('systemd-rfkill',
2148 'src/rfkill/rfkill.c',
2149 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002150 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002151 install_rpath : rootlibexecdir,
2152 install : true,
2153 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002154endif
2155
2156executable('systemd-system-update-generator',
2157 'src/system-update-generator/system-update-generator.c',
2158 include_directories : includes,
2159 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002160 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002161 install : true,
2162 install_dir : systemgeneratordir)
2163
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002164if conf.get('HAVE_LIBCRYPTSETUP') == 1
Lennart Poettering08669702019-08-22 10:21:11 +02002165 systemd_cryptsetup_sources = files('''
2166 src/cryptsetup/cryptsetup.c
2167 src/cryptsetup/cryptsetup-pkcs11.h
2168'''.split())
2169
2170 if conf.get('HAVE_P11KIT') == 1
2171 systemd_cryptsetup_sources += files('src/cryptsetup/cryptsetup-pkcs11.c')
2172 endif
2173
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002174 executable('systemd-cryptsetup',
Lennart Poettering08669702019-08-22 10:21:11 +02002175 systemd_cryptsetup_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002176 include_directories : includes,
2177 link_with : [libshared],
Lennart Poettering08669702019-08-22 10:21:11 +02002178 dependencies : [libcryptsetup,
2179 libp11kit],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002180 install_rpath : rootlibexecdir,
2181 install : true,
2182 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002183
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002184 executable('systemd-cryptsetup-generator',
2185 'src/cryptsetup/cryptsetup-generator.c',
2186 include_directories : includes,
2187 link_with : [libshared],
2188 dependencies : [libcryptsetup],
2189 install_rpath : rootlibexecdir,
2190 install : true,
2191 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002192
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002193 executable('systemd-veritysetup',
2194 'src/veritysetup/veritysetup.c',
2195 include_directories : includes,
2196 link_with : [libshared],
2197 dependencies : [libcryptsetup],
2198 install_rpath : rootlibexecdir,
2199 install : true,
2200 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002201
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002202 executable('systemd-veritysetup-generator',
2203 'src/veritysetup/veritysetup-generator.c',
2204 include_directories : includes,
2205 link_with : [libshared],
2206 dependencies : [libcryptsetup],
2207 install_rpath : rootlibexecdir,
2208 install : true,
2209 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002210endif
2211
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002212if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002213 executable('systemd-sysv-generator',
2214 'src/sysv-generator/sysv-generator.c',
2215 include_directories : includes,
2216 link_with : [libshared],
2217 install_rpath : rootlibexecdir,
2218 install : true,
2219 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002220
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002221 executable('systemd-rc-local-generator',
2222 'src/rc-local-generator/rc-local-generator.c',
2223 include_directories : includes,
2224 link_with : [libshared],
2225 install_rpath : rootlibexecdir,
2226 install : true,
2227 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002228endif
2229
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002230if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002231 executable('systemd-hostnamed',
2232 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002233 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002234 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002235 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002236 install : true,
2237 install_dir : rootlibexecdir)
2238
2239 exe = executable('hostnamectl',
2240 'src/hostname/hostnamectl.c',
2241 include_directories : includes,
2242 link_with : [libshared],
2243 install_rpath : rootlibexecdir,
2244 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002245 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002246endif
2247
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002248if conf.get('ENABLE_LOCALED') == 1
2249 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002250 # logind will load libxkbcommon.so dynamically on its own
2251 deps = [libdl]
2252 else
2253 deps = []
2254 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002255
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002256 executable('systemd-localed',
2257 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002258 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002259 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002260 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002261 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002262 install : true,
2263 install_dir : rootlibexecdir)
2264
2265 exe = executable('localectl',
2266 localectl_sources,
2267 include_directories : includes,
2268 link_with : [libshared],
2269 install_rpath : rootlibexecdir,
2270 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002271 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002272endif
2273
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002274if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002275 executable('systemd-timedated',
2276 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002277 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002278 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002279 install_rpath : rootlibexecdir,
2280 install : true,
2281 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002282endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002283
Yu Watanabe6129ec82018-05-03 18:07:43 +09002284if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002285 exe = executable('timedatectl',
2286 'src/timedate/timedatectl.c',
2287 include_directories : includes,
2288 install_rpath : rootlibexecdir,
2289 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002290 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002291 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002292 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002293endif
2294
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002295if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002296 executable('systemd-timesyncd',
2297 systemd_timesyncd_sources,
2298 include_directories : includes,
2299 link_with : [libshared],
2300 dependencies : [threads,
2301 libm],
2302 install_rpath : rootlibexecdir,
2303 install : true,
2304 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002305
2306 executable('systemd-time-wait-sync',
2307 'src/time-wait-sync/time-wait-sync.c',
2308 include_directories : includes,
2309 link_with : [libshared],
2310 install_rpath : rootlibexecdir,
2311 install : true,
2312 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002313endif
2314
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002315if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002316 executable('systemd-machined',
2317 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002318 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002319 link_with : [libmachine_core,
2320 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002321 install_rpath : rootlibexecdir,
2322 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002323 install_dir : rootlibexecdir)
2324
2325 exe = executable('machinectl',
2326 'src/machine/machinectl.c',
2327 include_directories : includes,
2328 link_with : [libshared],
2329 dependencies : [threads,
2330 libxz,
2331 liblz4],
2332 install_rpath : rootlibexecdir,
2333 install : true,
2334 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002335 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002336endif
2337
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002338if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002339 executable('systemd-importd',
2340 systemd_importd_sources,
2341 include_directories : includes,
2342 link_with : [libshared],
2343 dependencies : [threads],
2344 install_rpath : rootlibexecdir,
2345 install : true,
2346 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002347
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002348 systemd_pull = executable('systemd-pull',
2349 systemd_pull_sources,
2350 include_directories : includes,
2351 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002352 dependencies : [versiondep,
2353 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002354 libz,
2355 libbzip2,
2356 libxz,
2357 libgcrypt],
2358 install_rpath : rootlibexecdir,
2359 install : true,
2360 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002361
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002362 systemd_import = executable('systemd-import',
2363 systemd_import_sources,
2364 include_directories : includes,
2365 link_with : [libshared],
2366 dependencies : [libcurl,
2367 libz,
2368 libbzip2,
2369 libxz],
2370 install_rpath : rootlibexecdir,
2371 install : true,
2372 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002373
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002374 systemd_import_fs = executable('systemd-import-fs',
2375 systemd_import_fs_sources,
2376 include_directories : includes,
2377 link_with : [libshared],
2378 install_rpath : rootlibexecdir,
2379 install : true,
2380 install_dir : rootlibexecdir)
2381
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002382 systemd_export = executable('systemd-export',
2383 systemd_export_sources,
2384 include_directories : includes,
2385 link_with : [libshared],
2386 dependencies : [libcurl,
2387 libz,
2388 libbzip2,
2389 libxz],
2390 install_rpath : rootlibexecdir,
2391 install : true,
2392 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002393
2394 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002395endif
2396
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002397if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002398 exe = executable('systemd-journal-upload',
2399 systemd_journal_upload_sources,
2400 include_directories : includes,
2401 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002402 dependencies : [versiondep,
2403 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002404 libcurl,
2405 libgnutls,
2406 libxz,
2407 liblz4],
2408 install_rpath : rootlibexecdir,
2409 install : true,
2410 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002411 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002412endif
2413
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002414if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002415 s_j_remote = executable('systemd-journal-remote',
2416 systemd_journal_remote_sources,
2417 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002418 link_with : [libshared,
2419 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002420 dependencies : [threads,
2421 libmicrohttpd,
2422 libgnutls,
2423 libxz,
2424 liblz4],
2425 install_rpath : rootlibexecdir,
2426 install : true,
2427 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002428
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002429 s_j_gatewayd = executable('systemd-journal-gatewayd',
2430 systemd_journal_gatewayd_sources,
2431 include_directories : includes,
2432 link_with : [libshared],
2433 dependencies : [threads,
2434 libmicrohttpd,
2435 libgnutls,
2436 libxz,
2437 liblz4],
2438 install_rpath : rootlibexecdir,
2439 install : true,
2440 install_dir : rootlibexecdir)
2441 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002442endif
2443
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002444if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002445 executable('systemd-coredump',
2446 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002447 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002448 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002449 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002450 libacl,
2451 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002452 libxz,
2453 liblz4],
2454 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002455 install : true,
2456 install_dir : rootlibexecdir)
2457
2458 exe = executable('coredumpctl',
2459 coredumpctl_sources,
2460 include_directories : includes,
2461 link_with : [libshared],
2462 dependencies : [threads,
2463 libxz,
2464 liblz4],
2465 install_rpath : rootlibexecdir,
2466 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002467 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002468endif
2469
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002470if conf.get('ENABLE_PSTORE') == 1
2471 executable('systemd-pstore',
2472 systemd_pstore_sources,
2473 include_directories : includes,
2474 link_with : [libshared],
2475 dependencies : [threads,
2476 libacl,
2477 libdw,
2478 libxz,
2479 liblz4],
2480 install_rpath : rootlibexecdir,
2481 install : true,
2482 install_dir : rootlibexecdir)
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002483endif
2484
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002485if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002486 exe = executable('systemd-binfmt',
2487 'src/binfmt/binfmt.c',
2488 include_directories : includes,
2489 link_with : [libshared],
2490 install_rpath : rootlibexecdir,
2491 install : true,
2492 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002493 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002494
2495 meson.add_install_script('sh', '-c',
2496 mkdir_p.format(binfmtdir))
2497 meson.add_install_script('sh', '-c',
2498 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2499endif
2500
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002501if conf.get('ENABLE_REPART') == 1
2502 executable('systemd-repart',
2503 systemd_repart_sources,
2504 include_directories : includes,
2505 link_with : [libshared],
2506 dependencies : [threads,
2507 libcryptsetup,
2508 libblkid,
2509 libfdisk,
2510 libopenssl],
2511 install_rpath : rootlibexecdir,
2512 install : true,
2513 install_dir : rootbindir)
2514endif
2515
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002516if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002517 executable('systemd-vconsole-setup',
2518 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002519 include_directories : includes,
2520 link_with : [libshared],
2521 install_rpath : rootlibexecdir,
2522 install : true,
2523 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002524endif
2525
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002526if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002527 executable('systemd-random-seed',
2528 'src/random-seed/random-seed.c',
2529 include_directories : includes,
2530 link_with : [libshared],
2531 install_rpath : rootlibexecdir,
2532 install : true,
2533 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002534endif
2535
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002536if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002537 executable('systemd-firstboot',
2538 'src/firstboot/firstboot.c',
2539 include_directories : includes,
2540 link_with : [libshared],
2541 dependencies : [libcrypt],
2542 install_rpath : rootlibexecdir,
2543 install : true,
2544 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002545endif
2546
2547executable('systemd-remount-fs',
2548 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002549 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002550 link_with : [libcore_shared,
2551 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002552 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002553 install : true,
2554 install_dir : rootlibexecdir)
2555
2556executable('systemd-machine-id-setup',
2557 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002558 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002559 link_with : [libcore_shared,
2560 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002561 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002562 install : true,
2563 install_dir : rootbindir)
2564
2565executable('systemd-fsck',
2566 'src/fsck/fsck.c',
2567 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002568 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002569 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002570 install : true,
2571 install_dir : rootlibexecdir)
2572
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002573executable('systemd-growfs',
2574 'src/partition/growfs.c',
2575 include_directories : includes,
2576 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002577 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002578 install_rpath : rootlibexecdir,
2579 install : true,
2580 install_dir : rootlibexecdir)
2581
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002582executable('systemd-makefs',
2583 'src/partition/makefs.c',
2584 include_directories : includes,
2585 link_with : [libshared],
2586 install_rpath : rootlibexecdir,
2587 install : true,
2588 install_dir : rootlibexecdir)
2589
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002590executable('systemd-sleep',
2591 'src/sleep/sleep.c',
2592 include_directories : includes,
2593 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002594 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002595 install : true,
2596 install_dir : rootlibexecdir)
2597
Yu Watanabed25e1272019-01-03 02:32:57 +09002598install_data('src/sleep/sleep.conf',
2599 install_dir : pkgsysconfdir)
2600
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002601exe = executable('systemd-sysctl',
2602 'src/sysctl/sysctl.c',
2603 include_directories : includes,
2604 link_with : [libshared],
2605 install_rpath : rootlibexecdir,
2606 install : true,
2607 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002608public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002609
2610executable('systemd-ac-power',
2611 'src/ac-power/ac-power.c',
2612 include_directories : includes,
2613 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002614 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002615 install : true,
2616 install_dir : rootlibexecdir)
2617
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002618exe = executable('systemd-detect-virt',
2619 'src/detect-virt/detect-virt.c',
2620 include_directories : includes,
2621 link_with : [libshared],
2622 install_rpath : rootlibexecdir,
2623 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002624public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002625
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002626exe = executable('systemd-delta',
2627 'src/delta/delta.c',
2628 include_directories : includes,
2629 link_with : [libshared],
2630 install_rpath : rootlibexecdir,
2631 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002632public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002633
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002634exe = executable('systemd-escape',
2635 'src/escape/escape.c',
2636 include_directories : includes,
2637 link_with : [libshared],
2638 install_rpath : rootlibexecdir,
2639 install : true,
2640 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002641public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002642
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002643exe = executable('systemd-notify',
2644 'src/notify/notify.c',
2645 include_directories : includes,
2646 link_with : [libshared],
2647 install_rpath : rootlibexecdir,
2648 install : true,
2649 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002650public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002651
2652executable('systemd-volatile-root',
2653 'src/volatile-root/volatile-root.c',
2654 include_directories : includes,
2655 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002656 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002657 install : true,
2658 install_dir : rootlibexecdir)
2659
2660executable('systemd-cgroups-agent',
2661 'src/cgroups-agent/cgroups-agent.c',
2662 include_directories : includes,
2663 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002664 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002665 install : true,
2666 install_dir : rootlibexecdir)
2667
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002668exe = executable('systemd-id128',
2669 'src/id128/id128.c',
2670 include_directories : includes,
2671 link_with : [libshared],
2672 install_rpath : rootlibexecdir,
2673 install : true)
2674public_programs += exe
2675
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002676exe = executable('systemd-path',
2677 'src/path/path.c',
2678 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002679 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002680 install_rpath : rootlibexecdir,
2681 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002682public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002683
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002684exe = executable('systemd-ask-password',
2685 'src/ask-password/ask-password.c',
2686 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002687 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002688 install_rpath : rootlibexecdir,
2689 install : true,
2690 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002691public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002692
2693executable('systemd-reply-password',
2694 'src/reply-password/reply-password.c',
2695 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002696 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002697 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002698 install : true,
2699 install_dir : rootlibexecdir)
2700
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002701exe = executable('systemd-tty-ask-password-agent',
2702 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2703 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002704 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002705 install_rpath : rootlibexecdir,
2706 install : true,
2707 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002708public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002709
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002710exe = executable('systemd-cgls',
2711 'src/cgls/cgls.c',
2712 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002713 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002714 install_rpath : rootlibexecdir,
2715 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002716public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002717
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002718exe = executable('systemd-cgtop',
2719 'src/cgtop/cgtop.c',
2720 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002721 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002722 install_rpath : rootlibexecdir,
2723 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002724public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002725
2726executable('systemd-initctl',
2727 'src/initctl/initctl.c',
2728 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002729 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002730 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002731 install : true,
2732 install_dir : rootlibexecdir)
2733
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002734exe = executable('systemd-mount',
2735 'src/mount/mount-tool.c',
2736 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002737 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek7d991d42019-04-04 13:41:47 +02002738 dependencies: [libmount],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002739 install_rpath : rootlibexecdir,
2740 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002741public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002742
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002743meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002744 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002745
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002746exe = executable('systemd-run',
2747 'src/run/run.c',
2748 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002749 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002750 install_rpath : rootlibexecdir,
2751 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002752public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002753
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002754exe = executable('systemd-stdio-bridge',
2755 'src/stdio-bridge/stdio-bridge.c',
2756 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002757 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002758 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002759 install_rpath : rootlibexecdir,
2760 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002761public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002762
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002763exe = executable('busctl',
2764 'src/busctl/busctl.c',
2765 'src/busctl/busctl-introspect.c',
2766 'src/busctl/busctl-introspect.h',
2767 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002768 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002769 install_rpath : rootlibexecdir,
2770 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002771public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002772
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002773if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002774 exe = executable('systemd-sysusers',
2775 'src/sysusers/sysusers.c',
2776 include_directories : includes,
2777 link_with : [libshared],
2778 install_rpath : rootlibexecdir,
2779 install : true,
2780 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002781 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002782endif
2783
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002784if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002785 exe = executable('systemd-tmpfiles',
2786 'src/tmpfiles/tmpfiles.c',
2787 include_directories : includes,
2788 link_with : [libshared],
2789 dependencies : [libacl],
2790 install_rpath : rootlibexecdir,
2791 install : true,
2792 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002793 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002794
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002795 if want_tests != 'false'
2796 test('test-systemd-tmpfiles',
2797 test_systemd_tmpfiles_py,
2798 # https://github.com/mesonbuild/meson/issues/2681
2799 args : exe.full_path())
2800 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002801endif
2802
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002803if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002804 exe = executable('systemd-hwdb',
2805 'src/hwdb/hwdb.c',
2806 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2807 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002808 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002809 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002810 install : true,
2811 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002812 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002813endif
2814
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002815if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002816 executable('systemd-quotacheck',
2817 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002818 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002819 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002820 install_rpath : rootlibexecdir,
2821 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002822 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002823endif
2824
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002825exe = executable('systemd-socket-proxyd',
2826 'src/socket-proxy/socket-proxyd.c',
2827 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002828 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002829 dependencies : [threads],
2830 install_rpath : rootlibexecdir,
2831 install : true,
2832 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002833public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002834
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002835exe = executable('systemd-udevd',
2836 systemd_udevd_sources,
2837 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002838 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002839 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002840 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002841 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002842 dependencies : [versiondep,
2843 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002844 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002845 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002846 libacl,
2847 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002848 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002849 install : true,
2850 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002851public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002852
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002853exe = executable('udevadm',
2854 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002855 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002856 include_directories : includes,
2857 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002858 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002859 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002860 dependencies : [versiondep,
2861 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002862 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002863 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002864 libacl,
2865 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002866 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002867 install : true,
2868 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002869public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002870
2871executable('systemd-shutdown',
2872 systemd_shutdown_sources,
2873 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002874 link_with : [libcore_shared,
2875 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002876 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002877 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002878 install : true,
2879 install_dir : rootlibexecdir)
2880
2881executable('systemd-update-done',
2882 'src/update-done/update-done.c',
2883 include_directories : includes,
2884 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002885 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002886 install : true,
2887 install_dir : rootlibexecdir)
2888
2889executable('systemd-update-utmp',
2890 'src/update-utmp/update-utmp.c',
2891 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002892 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002893 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002894 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002895 install : true,
2896 install_dir : rootlibexecdir)
2897
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002898if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002899 executable('systemd-modules-load',
2900 'src/modules-load/modules-load.c',
2901 include_directories : includes,
2902 link_with : [libshared],
2903 dependencies : [libkmod],
2904 install_rpath : rootlibexecdir,
2905 install : true,
2906 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002907
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002908 meson.add_install_script('sh', '-c',
2909 mkdir_p.format(modulesloaddir))
2910 meson.add_install_script('sh', '-c',
2911 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002912endif
2913
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002914exe = executable('systemd-nspawn',
2915 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002916 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002917 link_with : [libcore_shared,
2918 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002919 libshared],
Franck Bui82384232019-03-22 11:09:08 +01002920 dependencies : [libblkid,
2921 libseccomp],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002922 install_rpath : rootlibexecdir,
2923 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002924public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002925
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002926if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002927 executable('systemd-networkd',
2928 systemd_networkd_sources,
Yu Watanabe737f1402019-10-30 17:02:15 +09002929 include_directories : network_include_dir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002930 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002931 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002932 libudev_static,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002933 networkd_link_with],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002934 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002935 install_rpath : rootlibexecdir,
2936 install : true,
2937 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002938
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002939 executable('systemd-networkd-wait-online',
2940 systemd_networkd_wait_online_sources,
2941 include_directories : includes,
2942 link_with : [libnetworkd_core,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002943 networkd_link_with],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002944 install_rpath : rootlibexecdir,
2945 install : true,
2946 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002947
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002948 exe = executable('networkctl',
2949 networkctl_sources,
2950 include_directories : includes,
2951 link_with : [libsystemd_network,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002952 networkd_link_with],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002953 install_rpath : rootlibexecdir,
2954 install : true,
2955 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002956 public_programs += exe
Yu Watanabe426c1d32019-07-13 03:35:04 +09002957
2958 executable('systemd-network-generator',
2959 network_generator_sources,
2960 include_directories : includes,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002961 link_with : [networkd_link_with],
Yu Watanabe426c1d32019-07-13 03:35:04 +09002962 install_rpath : rootlibexecdir,
2963 install : true,
2964 install_dir : rootlibexecdir)
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002965endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002966
2967executable('systemd-sulogin-shell',
2968 ['src/sulogin-shell/sulogin-shell.c'],
2969 include_directories : includes,
2970 link_with : [libshared],
2971 install_rpath : rootlibexecdir,
2972 install : true,
2973 install_dir : rootlibexecdir)
2974
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002975############################################################
2976
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002977custom_target(
2978 'systemd-runtest.env',
2979 output : 'systemd-runtest.env',
2980 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05002981 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002982 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002983 '} >@OUTPUT@'],
2984 build_by_default : true)
2985
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002986foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002987 sources = tuple[0]
2988 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2989 dependencies = tuple[2]
2990 condition = tuple.length() >= 4 ? tuple[3] : ''
2991 type = tuple.length() >= 5 ? tuple[4] : ''
2992 defs = tuple.length() >= 6 ? tuple[5] : []
2993 incs = tuple.length() >= 7 ? tuple[6] : includes
2994 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002995
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002996 name = sources[0].split('/')[-1].split('.')[0]
2997 if type.startswith('timeout=')
2998 timeout = type.split('=')[1].to_int()
2999 type = ''
3000 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003001
3002 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003003 exe = executable(
3004 name,
3005 sources,
3006 include_directories : incs,
3007 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01003008 dependencies : [versiondep,
3009 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003010 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003011 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003012 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02003013 install : install_tests,
3014 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04003015
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003016 if type == 'manual'
3017 message('@0@ is a manual test'.format(name))
3018 elif type == 'unsafe' and want_tests != 'unsafe'
3019 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003020 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003021 test(name, exe,
3022 env : test_env,
3023 timeout : timeout)
3024 endif
3025 else
3026 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
3027 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003028endforeach
3029
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003030exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003031 'test-libsystemd-sym',
3032 test_libsystemd_sym_c,
3033 include_directories : includes,
3034 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003035 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003036 install : install_tests,
3037 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003038if want_tests != 'false'
3039 test('test-libsystemd-sym', exe)
3040endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04003041
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003042exe = executable(
3043 'test-libsystemd-static-sym',
3044 test_libsystemd_sym_c,
3045 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003046 link_with : [install_libsystemd_static],
3047 dependencies : [threads], # threads is already included in dependencies on the library,
3048 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09003049 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003050 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003051 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003052if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003053 test('test-libsystemd-static-sym', exe)
3054endif
3055
3056exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003057 'test-libudev-sym',
3058 test_libudev_sym_c,
3059 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003060 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003061 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003062 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003063 install : install_tests,
3064 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003065if want_tests != 'false'
3066 test('test-libudev-sym', exe)
3067endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003068
3069exe = executable(
3070 'test-libudev-static-sym',
3071 test_libudev_sym_c,
3072 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003073 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003074 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003075 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003076 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003077 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003078if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003079 test('test-libudev-static-sym', exe)
3080endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04003081
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003082############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003083
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003084fuzzer_exes = []
3085
Michael Olbrich59967402018-11-11 11:27:35 +01003086if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003087foreach tuple : fuzzers
3088 sources = tuple[0]
3089 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3090 dependencies = tuple[2]
3091 defs = tuple.length() >= 4 ? tuple[3] : []
3092 incs = tuple.length() >= 5 ? tuple[4] : includes
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003093 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003094
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003095 if want_ossfuzz or want_fuzzbuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003096 dependencies += fuzzing_engine
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003097 elif want_libfuzzer
3098 if fuzzing_engine.found()
3099 dependencies += fuzzing_engine
3100 else
3101 link_args += ['-fsanitize=fuzzer']
3102 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003103 else
3104 sources += 'src/fuzz/fuzz-main.c'
3105 endif
3106
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00003107 if want_fuzzbuzz
3108 sources += 'src/fuzz/fuzzer-entry-point.c'
3109 endif
3110
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003111 name = sources[0].split('/')[-1].split('.')[0]
3112
3113 fuzzer_exes += executable(
3114 name,
3115 sources,
3116 include_directories : [incs, include_directories('src/fuzz')],
3117 link_with : link_with,
3118 dependencies : dependencies,
3119 c_args : defs,
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003120 link_args: link_args,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003121 install : false)
3122endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01003123endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003124
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01003125run_target('fuzzers',
3126 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003127 command : ['true'])
3128
3129############################################################
3130
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003131make_directive_index_py = find_program('tools/make-directive-index.py')
3132make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04003133xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04003134hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek62d39992019-11-15 11:32:24 +01003135autosuspend_update_sh = find_program('tools/meson-autosuspend-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003136
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003137subdir('sysctl.d')
3138subdir('sysusers.d')
3139subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmek4f10b802019-10-08 16:52:10 +02003140subdir('hwdb.d')
3141subdir('units')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01003142subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003143subdir('network')
3144subdir('man')
3145subdir('shell-completion/bash')
3146subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003147subdir('docs/sysvinit')
3148subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003149
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003150install_subdir('factory/etc',
3151 install_dir : factorydir)
3152
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003153install_data('xorg/50-systemd-user.sh',
3154 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01003155install_data('modprobe.d/systemd.conf',
3156 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003157install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003158 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003159 'NEWS',
3160 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05303161 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07003162 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003163 'docs/ENVIRONMENT.md',
Zbigniew Jędrzejewski-Szmek5425f8a2020-01-15 13:45:04 +01003164 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003165 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07003166 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003167 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003168 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
3169 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003170
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04003171meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
3172meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
3173
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003174############################################################
3175
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003176meson_check_help = find_program('tools/meson-check-help.sh')
3177
3178foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003179 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003180 if want_tests != 'false'
3181 test('check-help-' + name,
3182 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003183 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003184 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003185endforeach
3186
3187############################################################
3188
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02003189check_directives_sh = find_program('tools/check-directives.sh')
3190
3191if want_tests != 'false'
3192 test('check-directives',
3193 check_directives_sh,
3194 args : project_source_root)
3195endif
3196
3197############################################################
3198
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003199# Enable tests for all supported sanitizers
3200foreach tuple : sanitizers
3201 sanitizer = tuple[0]
3202 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003203
Yu Watanabe7a6397d2018-05-15 20:18:24 +09003204 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003205 prev = ''
3206 foreach p : fuzz_regression_tests
3207 b = p.split('/')[-2]
3208 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003209
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003210 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003211
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003212 if name != prev
3213 if want_tests == 'false'
3214 message('Not compiling @0@ because tests is set to false'.format(name))
3215 elif slow_tests
3216 exe = custom_target(
3217 name,
3218 output : name,
3219 depends : build,
3220 command : [env, 'ln', '-fs',
3221 join_paths(build.full_path(), b),
3222 '@OUTPUT@'],
3223 build_by_default : true)
3224 else
3225 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3226 endif
3227 endif
3228 prev = name
3229
3230 if want_tests != 'false' and slow_tests
3231 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3232 env,
3233 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003234 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003235 endif
3236 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003237 endif
3238endforeach
3239
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003240
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003241############################################################
3242
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003243if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003244 all_files = run_command(
3245 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003246 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003247 'ls-files',
3248 ':/*.[ch]'])
3249 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003250
userwithuide85a6902017-08-09 13:41:44 +00003251 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003252 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003253 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003254 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003255 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003256 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003257 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003258endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003259
3260if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003261 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003262 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003263 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003264 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003265endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003266
3267if git.found()
3268 git_head = run_command(
3269 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003270 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003271 'rev-parse', 'HEAD']).stdout().strip()
3272 git_head_short = run_command(
3273 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003274 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003275 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3276
3277 run_target(
3278 'git-snapshot',
3279 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003280 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003281 git_head_short),
3282 '--prefix', 'systemd-@0@/'.format(git_head),
3283 'HEAD'])
3284endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003285
3286############################################################
3287
Lennart Poettering51b13862017-12-20 12:51:14 +01003288meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3289run_target(
3290 'check-api-docs',
3291 depends : [man, libsystemd, libudev],
3292 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3293
3294############################################################
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003295watchdog_opt = service_watchdog == '' ? 'disabled' : service_watchdog
Lennart Poettering51b13862017-12-20 12:51:14 +01003296
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003297status = [
3298 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3299
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003300 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003301 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003302 'prefix directory: @0@'.format(prefixdir),
3303 'rootprefix directory: @0@'.format(rootprefixdir),
3304 'sysconf directory: @0@'.format(sysconfdir),
3305 'include directory: @0@'.format(includedir),
3306 'lib directory: @0@'.format(libdir),
3307 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003308 'SysV init scripts: @0@'.format(sysvinit_path),
3309 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003310 'PAM modules directory: @0@'.format(pamlibdir),
3311 'PAM configuration directory: @0@'.format(pamconfdir),
3312 'RPM macros directory: @0@'.format(rpmmacrosdir),
3313 'modprobe.d directory: @0@'.format(modprobedir),
3314 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3315 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3316 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3317 'bash completions directory: @0@'.format(bashcompletiondir),
3318 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003319 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003320 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3321 get_option('debug-tty')),
3322 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003323 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003324 'maximum system UID: @0@'.format(system_uid_max),
3325 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003326 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3327 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3328 'minimum container UID base: @0@'.format(container_uid_base_min),
3329 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003330 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003331 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003332 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003333 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003334 'nobody user name: @0@'.format(nobody_user),
3335 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003336 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003337 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003338
3339 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003340 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003341 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003342 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003343 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +02003344 'default locale: @0@'.format(default_locale),
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +01003345 'default user $PATH: @0@'.format(default_user_path_display),
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003346 'systemd service watchdog: @0@'.format(watchdog_opt)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003347
3348alt_dns_servers = '\n '.join(dns_servers.split(' '))
3349alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3350status += [
3351 'default DNS servers: @0@'.format(alt_dns_servers),
3352 'default NTP servers: @0@'.format(alt_ntp_servers)]
3353
3354alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3355 '@@0@'.format(time_epoch)).stdout().strip()
3356status += [
3357 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3358
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003359status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003360 'static libsystemd: @0@'.format(static_libsystemd),
3361 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003362
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003363# TODO:
3364# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3365# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3366# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3367
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003368if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003369 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003370
3371 if have_gnu_efi
3372 status += [
3373 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003374 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003375 'EFI lib directory: @0@'.format(efi_libdir),
3376 'EFI lds directory: @0@'.format(efi_ldsdir),
3377 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003378 endif
3379endif
3380
3381found = []
3382missing = []
3383
3384foreach tuple : [
3385 ['libcryptsetup'],
3386 ['PAM'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003387 ['pwquality'],
3388 ['fdisk'],
Lennart Poettering839fddb2019-11-05 11:49:27 +01003389 ['p11kit'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003390 ['AUDIT'],
3391 ['IMA'],
3392 ['AppArmor'],
3393 ['SELinux'],
3394 ['SECCOMP'],
3395 ['SMACK'],
3396 ['zlib'],
3397 ['xz'],
3398 ['lz4'],
3399 ['bzip2'],
3400 ['ACL'],
3401 ['gcrypt'],
3402 ['qrencode'],
3403 ['microhttpd'],
3404 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003405 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003406 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003407 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003408 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003409 ['libidn'],
3410 ['libiptc'],
3411 ['elfutils'],
3412 ['binfmt'],
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01003413 ['repart'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003414 ['vconsole'],
3415 ['quotacheck'],
3416 ['tmpfiles'],
3417 ['environment.d'],
3418 ['sysusers'],
3419 ['firstboot'],
3420 ['randomseed'],
3421 ['backlight'],
3422 ['rfkill'],
3423 ['logind'],
3424 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003425 ['portabled'],
Lennart Poetteringd093b622019-07-04 18:33:30 +02003426 ['userdb'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003427 ['homed'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003428 ['importd'],
3429 ['hostnamed'],
3430 ['timedated'],
3431 ['timesyncd'],
3432 ['localed'],
3433 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003434 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003435 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3436 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003437 ['coredump'],
Eric DeVolder9b4abc62019-05-16 08:59:01 -05003438 ['pstore'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003439 ['polkit'],
3440 ['legacy pkla', install_polkit_pkla],
3441 ['efi'],
3442 ['gnu-efi', have_gnu_efi],
3443 ['kmod'],
3444 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003445 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003446 ['blkid'],
3447 ['dbus'],
3448 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003449 ['nss-myhostname'],
3450 ['nss-mymachines'],
3451 ['nss-resolve'],
3452 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003453 ['hwdb'],
3454 ['tpm'],
3455 ['man pages', want_man],
3456 ['html pages', want_html],
3457 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003458 ['SysV compat'],
3459 ['utmp'],
3460 ['ldconfig'],
3461 ['hibernate'],
3462 ['adm group', get_option('adm-group')],
3463 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003464 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003465 ['debug hashmap'],
3466 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003467 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003468 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003469 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003470 ['link-udev-shared', get_option('link-udev-shared')],
3471 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Robert Scheck5ac8b502020-01-08 02:36:07 +01003472 ['link-networkd-shared', get_option('link-networkd-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003473]
3474
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003475 if tuple.length() >= 2
3476 cond = tuple[1]
3477 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003478 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3479 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003480 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003481 endif
3482 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003483 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003484 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003485 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003486 endif
3487endforeach
3488
3489status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003490 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003491 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003492 '',
3493 'disabled features: @0@'.format(', '.join(missing)),
3494 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003495message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003496
3497if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003498 warning('\n' +
3499 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3500 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3501 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003502endif