blob: 54820d3f6a876ac510edca4e90400a70173c7933 [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 Poetteringd093b622019-07-04 18:33:30 +0200246conf.set_quoted('SYSTEMD_USERWORK_PATH', join_paths(rootlibexecdir, 'systemd-userwork'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200247conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100248conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200249conf.set('STATUS_UNIT_FORMAT_DEFAULT', 'STATUS_UNIT_FORMAT_' + status_unit_format_default.to_upper())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400250
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400251substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100252substs.set('rootprefix', rootprefixdir)
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +0100253substs.set('rootprefix_noslash', rootprefixdir_noslash)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400254substs.set('exec_prefix', prefixdir)
255substs.set('libdir', libdir)
256substs.set('rootlibdir', rootlibdir)
257substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100258substs.set('sysconfdir', sysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400259substs.set('bindir', bindir)
260substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400261substs.set('rootlibexecdir', rootlibexecdir)
262substs.set('systemunitdir', systemunitdir)
263substs.set('userunitdir', userunitdir)
264substs.set('systempresetdir', systempresetdir)
265substs.set('userpresetdir', userpresetdir)
266substs.set('udevhwdbdir', udevhwdbdir)
267substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400268substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200269substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400270substs.set('catalogdir', catalogdir)
271substs.set('tmpfilesdir', tmpfilesdir)
272substs.set('sysusersdir', sysusersdir)
273substs.set('sysctldir', sysctldir)
274substs.set('binfmtdir', binfmtdir)
275substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200276substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400277substs.set('systemgeneratordir', systemgeneratordir)
278substs.set('usergeneratordir', usergeneratordir)
279substs.set('systemenvgeneratordir', systemenvgeneratordir)
280substs.set('userenvgeneratordir', userenvgeneratordir)
281substs.set('systemshutdowndir', systemshutdowndir)
282substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400283substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400284substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400285substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
286substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
287substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100288substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200289substs.set('STATUS_UNIT_FORMAT_DEFAULT', status_unit_format_default)
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200290substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmeke9bbff12019-05-09 13:23:50 +0200291substs.set('BUILD_ROOT', meson.current_build_dir())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400292
293#####################################################################
294
295cc = meson.get_compiler('c')
296pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400297check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100298meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400299
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200300want_tests = get_option('tests')
301slow_tests = want_tests != 'false' and get_option('slow-tests')
302install_tests = get_option('install-tests')
303
James Hilliard46e63a22018-12-27 09:16:20 +0800304if add_languages('cpp', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200305 # Used only for tests
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100306 cxx = meson.get_compiler('cpp')
307 cxx_cmd = ' '.join(cxx.cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200308else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200309 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400310endif
311
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500312if want_libfuzzer
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +0200313 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer', required : false)
314 if fuzzing_engine.found()
315 add_project_arguments('-fsanitize-coverage=trace-pc-guard,trace-cmp', language : 'c')
316 elif cc.has_argument('-fsanitize=fuzzer-no-link')
317 add_project_arguments('-fsanitize=fuzzer-no-link', language : 'c')
318 else
319 error('Looks like neither libFuzzer nor -fsanitize=fuzzer-no-link is supported')
320 endif
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200321elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500322 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000323elif want_fuzzbuzz
324 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 -0500325endif
326
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100327# Those generate many false positives, and we do not want to change the code to
328# avoid them.
329basic_disabled_warnings = [
330 '-Wno-unused-parameter',
331 '-Wno-missing-field-initializers',
332 '-Wno-unused-result',
333 '-Wno-format-signedness',
334]
335if get_option('b_ndebug') == 'true'
336 # With asserts disabled with get a bunch of warnings about variables which
337 # are used only in the asserts. This is not useful at all, so let's just silence
338 # those warnings.
339 basic_disabled_warnings += [
340 '-Wno-unused-variable',
341 '-Wno-unused-but-set-variable',
342 ]
343endif
344
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900345possible_cc_flags = [
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900346 '-Werror=undef',
347 '-Wlogical-op',
348 '-Wmissing-include-dirs',
349 '-Wold-style-definition',
350 '-Wpointer-arith',
351 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900352 '-Wfloat-equal',
353 '-Wsuggest-attribute=noreturn',
354 '-Werror=missing-prototypes',
355 '-Werror=implicit-function-declaration',
356 '-Werror=missing-declarations',
357 '-Werror=return-type',
358 '-Werror=incompatible-pointer-types',
359 '-Werror=format=2',
360 '-Wstrict-prototypes',
361 '-Wredundant-decls',
362 '-Wmissing-noreturn',
363 '-Wimplicit-fallthrough=5',
364 '-Wshadow',
365 '-Wendif-labels',
366 '-Wstrict-aliasing=2',
367 '-Wwrite-strings',
368 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200369 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200370 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900371 '-Wdate-time',
372 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700373
374 # negative arguments are correctly detected starting with meson 0.46.
Zbigniew Jędrzejewski-Szmekeed33622019-03-07 10:56:15 +0100375 '-Wno-error=#warnings', # clang
376 '-Wno-string-plus-int', # clang
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700377
378 # work-around for gcc 7.1 turning this on on its own.
379 '-Wno-error=nonnull',
380
381 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
382 # optimizations enabled, producing essentially false positives.
383 '-Wno-maybe-uninitialized',
384
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900385 '-ffast-math',
386 '-fno-common',
387 '-fdiagnostics-show-option',
388 '-fno-strict-aliasing',
389 '-fvisibility=hidden',
390 '-fstack-protector',
391 '-fstack-protector-strong',
392 '--param=ssp-buffer-size=4',
393]
394
395# --as-needed and --no-undefined are provided by meson by default,
396# run mesonconf to see what is enabled
397possible_link_flags = [
398 '-Wl,-z,relro',
399 '-Wl,-z,now',
Norbert Lange68e70ac2019-09-19 17:49:20 +0200400 '-fstack-protector',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900401]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400402
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900403if cc.get_id() == 'clang'
404 possible_cc_flags += [
405 '-Wno-typedef-redefinition',
406 '-Wno-gnu-variable-sized-type-not-at-end',
407 ]
408endif
409
410if get_option('buildtype') != 'debug'
411 possible_cc_flags += [
412 '-ffunction-sections',
413 '-fdata-sections',
414 ]
415
416 possible_link_flags += '-Wl,--gc-sections'
417endif
418
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100419add_project_arguments(cc.get_supported_arguments(basic_disabled_warnings), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900420add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900421add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900422
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800423if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400424 #include <time.h>
425 #include <inttypes.h>
426 typedef uint64_t usec_t;
427 usec_t now(clockid_t clock);
428 int main(void) {
429 struct timespec now;
430 return 0;
431 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100432''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400433 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400434endif
435
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100436if cxx_cmd != ''
437 add_project_arguments(cxx.get_supported_arguments(basic_disabled_warnings), language : 'cpp')
438endif
439
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200440cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400441
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200442has_wstringop_truncation = cc.has_argument('-Wstringop-truncation')
443
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400444#####################################################################
445# compilation result tests
446
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400447conf.set('_GNU_SOURCE', true)
448conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200449conf.set10('HAVE_WSTRINGOP_TRUNCATION', has_wstringop_truncation)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400450
451conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
452conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
453conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
454conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
455conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
456conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
457conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
458
459decl_headers = '''
460#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100461#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400462'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400463
464foreach decl : ['char16_t',
465 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100466 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400467 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400468
469 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200470 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
471
472 if decl == 'struct statx'
473 if have
474 want_linux_stat_h = false
475 else
476 have = cc.sizeof(decl,
477 prefix : decl_headers + '#include <linux/stat.h>',
478 args : '-D_GNU_SOURCE') > 0
479 want_linux_stat_h = have
480 endif
481 endif
482
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200483 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400484endforeach
485
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200486conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700487
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400488foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200489 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400490endforeach
491
492foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100493 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100494 ['gettid', '''#include <sys/types.h>
495 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100496 ['pivot_root', '''#include <stdlib.h>
497 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100498 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400499 #include <sys/stat.h>
500 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100501 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100502 ['renameat2', '''#include <stdio.h>
503 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400504 ['kcmp', '''#include <linux/kcmp.h>'''],
505 ['keyctl', '''#include <sys/types.h>
506 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100507 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400508 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200509 ['bpf', '''#include <sys/syscall.h>
510 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100511 ['statx', '''#include <sys/types.h>
512 #include <sys/stat.h>
513 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100514 ['explicit_bzero' , '''#include <string.h>'''],
515 ['reallocarray', '''#include <malloc.h>'''],
Michal Sekletarb070c7c2019-03-12 18:58:26 +0100516 ['set_mempolicy', '''#include <stdlib.h>
517 #include <unistd.h>'''],
518 ['get_mempolicy', '''#include <stdlib.h>
519 #include <unistd.h>'''],
Lennart Poettering5f152f42019-10-25 16:06:06 +0200520 ['pidfd_send_signal', '''#include <stdlib.h>
521 #include <unistd.h>
522 #include <signal.h>
523 #include <sys/wait.h>'''],
524 ['pidfd_open', '''#include <stdlib.h>
525 #include <unistd.h>
526 #include <signal.h>
527 #include <sys/wait.h>'''],
Lennart Poettering5ead4e82019-10-30 16:29:42 +0100528 ['rt_sigqueueinfo', '''#include <stdlib.h>
529 #include <unistd.h>
530 #include <signal.h>
531 #include <sys/wait.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400532]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400533
Lennart Poettering85db59b2017-12-25 12:01:14 +0100534 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200535 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400536endforeach
537
Lennart Poettering85db59b2017-12-25 12:01:14 +0100538if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200539 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200540 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400541else
542 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200543 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200544 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400545endif
546
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400547#####################################################################
548
Davide Cavalca1485aac2019-02-27 11:19:07 -0500549vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
550 project_source_root,
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100551 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100552 meson.project_version()]
553
Louis Taylord1084aa2019-01-21 21:45:36 +0000554version_h = vcs_tag(
555 input : 'src/version/version.h.in',
556 output : 'version.h',
557 command: vcs_tagger)
558
559versiondep = declare_dependency(sources: version_h)
560
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400561sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400562awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400563m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400564stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400565git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100566env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100567perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400568
Davide Cavalca1485aac2019-02-27 11:19:07 -0500569meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400570mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400571test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
572splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400573
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400574# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
575# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500576progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400577 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400578 ['kmod', '/usr/bin/kmod' ],
579 ['kexec', '/usr/sbin/kexec' ],
580 ['sulogin', '/usr/sbin/sulogin' ],
581 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
582 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
583 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
584 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
Michael Biebl6db90462019-07-18 01:24:00 +0200585 ['nologin', '/usr/sbin/nologin', ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400586 ]
587foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400588 path = get_option(prog[0] + '-path')
589 if path != ''
590 message('Using @1@ for @0@'.format(prog[0], path))
591 else
592 exe = find_program(prog[0],
593 '/usr/sbin/' + prog[0],
594 '/sbin/' + prog[0],
595 required: false)
596 path = exe.found() ? exe.path() : prog[1]
597 endif
598 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
599 conf.set_quoted(name, path)
600 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400601endforeach
602
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500603conf.set_quoted('TELINIT', get_option('telinit-path'))
604
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400605if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100606 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400607endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400608
609############################################################
610
611gperf = find_program('gperf')
612
613gperf_test_format = '''
614#include <string.h>
615const char * in_word_set(const char *, @0@);
616@1@
617'''
618gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
619gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
620gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
621if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400622 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400623else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400624 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
625 if cc.compiles(gperf_test)
626 gperf_len_type = 'unsigned'
627 else
628 error('unable to determine gperf len type')
629 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400630endif
631message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400632conf.set('GPERF_LEN_TYPE', gperf_len_type,
633 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400634
635############################################################
636
637if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400638 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400639endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100640foreach header : ['crypt.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400641 'linux/memfd.h',
642 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200643 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400644 'valgrind/memcheck.h',
645 'valgrind/valgrind.h',
646 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400647
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200648 conf.set10('HAVE_' + header.underscorify().to_upper(),
649 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400650endforeach
651
652############################################################
653
654conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400655conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
656gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400657
658default_hierarchy = get_option('default-hierarchy')
659conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
660 description : 'default cgroup hierarchy as string')
661if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400662 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400663elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400664 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400665else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400666 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400667endif
668
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100669default_net_naming_scheme = get_option('default-net-naming-scheme')
670conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
671
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400672time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900673if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400674 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900675 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400676endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400677conf.set('TIME_EPOCH', time_epoch)
678
679system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900680if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400681 system_uid_max = run_command(
682 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800683 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
684 '/etc/login.defs').stdout().strip()
685 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900686 system_uid_max = 999
687 else
688 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800689 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400690endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400691conf.set('SYSTEM_UID_MAX', system_uid_max)
692substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400693
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400694system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900695if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400696 system_gid_max = run_command(
697 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800698 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
699 '/etc/login.defs').stdout().strip()
700 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900701 system_gid_max = 999
702 else
703 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800704 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400705endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400706conf.set('SYSTEM_GID_MAX', system_gid_max)
707substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400708
Yu Watanabeac093402018-05-10 16:04:16 +0900709dynamic_uid_min = get_option('dynamic-uid-min')
710dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100711conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
712conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
713substs.set('dynamicuidmin', dynamic_uid_min)
714substs.set('dynamicuidmax', dynamic_uid_max)
715
Yu Watanabeac093402018-05-10 16:04:16 +0900716container_uid_base_min = get_option('container-uid-base-min')
717container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100718conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
719conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
720substs.set('containeruidbasemin', container_uid_base_min)
721substs.set('containeruidbasemax', container_uid_base_max)
722
Lennart Poetteringafde4572017-12-05 11:00:24 +0100723nobody_user = get_option('nobody-user')
724nobody_group = get_option('nobody-group')
725
Chen Qi2484bff2018-07-23 14:53:09 +0800726if not meson.is_cross_build()
727 getent_result = run_command('getent', 'passwd', '65534')
728 if getent_result.returncode() == 0
729 name = getent_result.stdout().split(':')[0]
730 if name != nobody_user
731 warning('\n' +
732 '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) +
733 'Your build will result in an user table setup that is incompatible with the local system.')
734 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100735 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800736 id_result = run_command('id', '-u', nobody_user)
737 if id_result.returncode() == 0
738 id = id_result.stdout().to_int()
739 if id != 65534
740 warning('\n' +
741 '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) +
742 'Your build will result in an user table setup that is incompatible with the local system.')
743 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100744 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100745
Chen Qi2484bff2018-07-23 14:53:09 +0800746 getent_result = run_command('getent', 'group', '65534')
747 if getent_result.returncode() == 0
748 name = getent_result.stdout().split(':')[0]
749 if name != nobody_group
750 warning('\n' +
751 '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) +
752 'Your build will result in an group table setup that is incompatible with the local system.')
753 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100754 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800755 id_result = run_command('id', '-g', nobody_group)
756 if id_result.returncode() == 0
757 id = id_result.stdout().to_int()
758 if id != 65534
759 warning('\n' +
760 '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) +
761 'Your build will result in an group table setup that is incompatible with the local system.')
762 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100763 endif
764endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900765if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900766 warning('\n' +
767 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
768 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900769endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100770
771conf.set_quoted('NOBODY_USER_NAME', nobody_user)
772conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900773substs.set('NOBODY_USER_NAME', nobody_user)
774substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100775
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400776tty_gid = get_option('tty-gid')
777conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400778substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400779
Ikey Doherty84786b82017-12-03 12:28:23 +0000780# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900781users_gid = get_option('users-gid')
782substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000783
Yu Watanabe348b4432018-05-07 18:17:35 +0900784conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
785conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400786
Michael Bieblace5e312018-07-13 23:36:13 +0200787dev_kvm_mode = get_option('dev-kvm-mode')
788substs.set('DEV_KVM_MODE', dev_kvm_mode)
789conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100790group_render_mode = get_option('group-render-mode')
791substs.set('GROUP_RENDER_MODE', group_render_mode)
792conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400793
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400794kill_user_processes = get_option('default-kill-user-processes')
795conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100796conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400797substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400798
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400799dns_servers = get_option('dns-servers')
800conf.set_quoted('DNS_SERVERS', dns_servers)
801substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400802
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400803ntp_servers = get_option('ntp-servers')
804conf.set_quoted('NTP_SERVERS', ntp_servers)
805substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400806
Dave Reisner8ca9e922018-12-28 07:38:36 -0500807default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900808if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800809 if not meson.is_cross_build()
810 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
811 default_locale = run_command(choose_default_locale_sh).stdout().strip()
812 else
813 default_locale = 'C.UTF-8'
814 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900815endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500816conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
817
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400818conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
819
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200820service_watchdog = get_option('service-watchdog')
Anita Zhang7bc9ea52019-10-25 15:46:21 -0700821watchdog_value = service_watchdog == '' ? '' : 'WatchdogSec=' + service_watchdog
822substs.set('SERVICE_WATCHDOG', watchdog_value)
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200823
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400824substs.set('SUSHELL', get_option('debug-shell'))
825substs.set('DEBUGTTY', get_option('debug-tty'))
Jan Synacek93912e82019-04-25 12:19:16 +0200826conf.set_quoted('DEBUGTTY', get_option('debug-tty'))
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400827
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200828enable_debug_hashmap = false
829enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900830enable_debug_siphash = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200831foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900832 if name == 'hashmap'
833 enable_debug_hashmap = true
834 elif name == 'mmap-cache'
835 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900836 elif name == 'siphash'
837 enable_debug_siphash = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900838 else
839 message('unknown debug option "@0@", ignoring'.format(name))
840 endif
841endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200842conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
843conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900844conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400845
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200846conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200847conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200848
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100849default_user_path = get_option('user-path')
850if default_user_path != ''
851 conf.set_quoted('DEFAULT_USER_PATH', default_user_path)
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100852 default_user_path_display = default_user_path
853else
854 # meson 0.49 fails when ?: is used in .format()
855 default_user_path_display = '(same as system services)'
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100856endif
857
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100858
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400859#####################################################################
860
861threads = dependency('threads')
862librt = cc.find_library('rt')
863libm = cc.find_library('m')
864libdl = cc.find_library('dl')
865libcrypt = cc.find_library('crypt')
866
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400867libcap = dependency('libcap', required : false)
868if not libcap.found()
869 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
870 libcap = cc.find_library('cap')
871endif
872
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400873libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100874 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400875
Lennart Poetteringe594a3b2019-12-10 21:31:41 +0100876want_libfdisk = get_option('fdisk')
877if want_libfdisk != 'false' and not skip_deps
878 libfdisk = dependency('fdisk',
879 required : want_libfdisk == 'true')
880 have = libfdisk.found()
881else
882 have = false
883 libfdisk = []
884endif
885conf.set10('HAVE_LIBFDISK', have)
886
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400887want_seccomp = get_option('seccomp')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000888if want_seccomp != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400889 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400890 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400891 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200892 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400893else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200894 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400895 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400896endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200897conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400898
899want_selinux = get_option('selinux')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000900if want_selinux != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400901 libselinux = dependency('libselinux',
902 version : '>= 2.1.9',
903 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200904 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200906 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400907 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400908endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200909conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400910
911want_apparmor = get_option('apparmor')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000912if want_apparmor != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400913 libapparmor = dependency('libapparmor',
914 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200915 have = libapparmor.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 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400919endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200920conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400921
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400922smack_run_label = get_option('smack-run-label')
923if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400924 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400925endif
926
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400927want_polkit = get_option('polkit')
928install_polkit = false
929install_polkit_pkla = false
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000930if want_polkit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400931 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400932
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400933 libpolkit = dependency('polkit-gobject-1',
934 required : false)
935 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
936 message('Old polkit detected, will install pkla files')
937 install_polkit_pkla = true
938 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400939endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200940conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400941
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400942want_acl = get_option('acl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000943if want_acl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400944 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200945 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400946else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200947 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400948 libacl = []
949endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200950conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400951
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400952want_audit = get_option('audit')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000953if want_audit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400954 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200955 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400956else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200957 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400958 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400959endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200960conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400961
962want_blkid = get_option('blkid')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000963if want_blkid != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400964 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200965 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400966else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200967 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400968 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400969endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200970conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400971
972want_kmod = get_option('kmod')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000973if want_kmod != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400974 libkmod = dependency('libkmod',
975 version : '>= 15',
976 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200977 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400978else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200979 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400980 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400981endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200982conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400983
984want_pam = get_option('pam')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000985if want_pam != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400986 libpam = cc.find_library('pam', required : want_pam == 'true')
987 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200988 have = libpam.found() and libpam_misc.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 libpam = []
992 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400993endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200994conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400995
996want_microhttpd = get_option('microhttpd')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000997if want_microhttpd != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400998 libmicrohttpd = dependency('libmicrohttpd',
999 version : '>= 0.9.33',
1000 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001001 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001002else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001003 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001004 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001005endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001006conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001007
1008want_libcryptsetup = get_option('libcryptsetup')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001009if want_libcryptsetup != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001010 libcryptsetup = dependency('libcryptsetup',
Jay Strictd90874b2019-09-26 15:54:29 +02001011 version : '>= 2.0.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001012 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001013 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001014else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001015 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001016 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001017endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001018conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001019
1020want_libcurl = get_option('libcurl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001021if want_libcurl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001022 libcurl = dependency('libcurl',
1023 version : '>= 7.32.0',
1024 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001025 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001026else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001027 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001028 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001029endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001030conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001031
1032want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001033want_libidn2 = get_option('libidn2')
1034if want_libidn == 'true' and want_libidn2 == 'true'
1035 error('libidn and libidn2 cannot be requested simultaneously')
1036endif
1037
Yu Watanabe1b931392019-06-29 03:13:30 +09001038if want_libidn2 != 'false' and want_libidn != 'true' and not skip_deps
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001039 libidn = dependency('libidn2',
1040 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001041 have = libidn.found()
1042else
1043 have = false
Yu Watanabe1b931392019-06-29 03:13:30 +09001044 libidn = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001045endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001046conf.set10('HAVE_LIBIDN2', have)
Yu Watanabe1b931392019-06-29 03:13:30 +09001047if not have and want_libidn != 'false' and not skip_deps
1048 # libidn is used for both libidn and libidn2 objects
1049 libidn = dependency('libidn',
1050 required : want_libidn == 'true')
1051 have = libidn.found()
1052else
1053 have = false
1054endif
1055conf.set10('HAVE_LIBIDN', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001056
1057want_libiptc = get_option('libiptc')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001058if want_libiptc != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001059 libiptc = dependency('libiptc',
1060 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001061 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001062else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001063 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001064 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001065endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001066conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001067
1068want_qrencode = get_option('qrencode')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001069if want_qrencode != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001070 libqrencode = dependency('libqrencode',
1071 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001072 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001073else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001074 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001075 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001076endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001077conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001078
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001079want_gcrypt = get_option('gcrypt')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001080if want_gcrypt != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001081 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1082 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001083 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001084else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001085 have = false
1086endif
1087if not have
1088 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001089 libgcrypt = []
1090 libgpg_error = []
1091endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001092conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001093
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001094want_gnutls = get_option('gnutls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001095if want_gnutls != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001096 libgnutls = dependency('gnutls',
1097 version : '>= 3.1.4',
1098 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001099 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001100else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001101 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001102 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001103endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001104conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001105
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001106want_openssl = get_option('openssl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001107if want_openssl != 'false' and not skip_deps
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001108 libopenssl = dependency('openssl',
1109 version : '>= 1.1.0',
1110 required : want_openssl == 'true')
1111 have = libopenssl.found()
1112else
1113 have = false
1114 libopenssl = []
1115endif
1116conf.set10('HAVE_OPENSSL', have)
1117
Lennart Poettering839fddb2019-11-05 11:49:27 +01001118want_p11kit = get_option('p11kit')
1119if want_p11kit != 'false' and not skip_deps
1120 libp11kit = dependency('p11-kit-1',
1121 version : '>= 0.23.3',
1122 required : want_p11kit == 'true')
1123 have = libp11kit.found()
1124else
1125 have = false
1126 libp11kit = []
1127endif
1128conf.set10('HAVE_P11KIT', have)
1129
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001130want_elfutils = get_option('elfutils')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001131if want_elfutils != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001132 libdw = dependency('libdw',
1133 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001134 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001135else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001136 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001137 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001138endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001139conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001140
1141want_zlib = get_option('zlib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001142if want_zlib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001143 libz = dependency('zlib',
1144 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001145 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001146else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001147 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001148 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001149endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001150conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001151
1152want_bzip2 = get_option('bzip2')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001153if want_bzip2 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001154 libbzip2 = cc.find_library('bz2',
1155 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001156 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001157else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001158 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001159 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001160endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001161conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001162
1163want_xz = get_option('xz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001164if want_xz != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001165 libxz = dependency('liblzma',
1166 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001167 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001168else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001169 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001170 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001171endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001172conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001173
1174want_lz4 = get_option('lz4')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001175if want_lz4 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001176 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001177 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001178 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001179 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001180else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001181 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001182 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001183endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001184conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001185
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001186want_xkbcommon = get_option('xkbcommon')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001187if want_xkbcommon != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001188 libxkbcommon = dependency('xkbcommon',
1189 version : '>= 0.3.0',
1190 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001191 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001192else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001193 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001194 libxkbcommon = []
1195endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001196conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001197
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001198want_pcre2 = get_option('pcre2')
1199if want_pcre2 != 'false'
1200 libpcre2 = dependency('libpcre2-8',
1201 required : want_pcre2 == 'true')
1202 have = libpcre2.found()
1203else
1204 have = false
1205 libpcre2 = []
1206endif
1207conf.set10('HAVE_PCRE2', have)
1208
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001209want_glib = get_option('glib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001210if want_glib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001211 libglib = dependency('glib-2.0',
1212 version : '>= 2.22.0',
1213 required : want_glib == 'true')
1214 libgobject = dependency('gobject-2.0',
1215 version : '>= 2.22.0',
1216 required : want_glib == 'true')
1217 libgio = dependency('gio-2.0',
1218 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001219 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001220else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001221 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001222 libglib = []
1223 libgobject = []
1224 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001225endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001226conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001227
1228want_dbus = get_option('dbus')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001229if want_dbus != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001230 libdbus = dependency('dbus-1',
1231 version : '>= 1.3.2',
1232 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001233 have = libdbus.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 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001237endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001238conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001239
Yu Watanabe42303dc2017-06-18 05:22:32 +09001240default_dnssec = get_option('default-dnssec')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001241if skip_deps
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001242 default_dnssec = 'no'
1243endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001244if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001245 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1246 default_dnssec = 'no'
1247endif
1248conf.set('DEFAULT_DNSSEC_MODE',
1249 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1250substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1251
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001252dns_over_tls = get_option('dns-over-tls')
1253if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001254 if dns_over_tls == 'openssl'
1255 have_gnutls = false
1256 else
Iwan Timmer38e053c2019-10-29 20:26:05 +01001257 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.6.0'))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001258 if dns_over_tls == 'gnutls' and not have_gnutls
1259 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1260 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001261 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001262 if dns_over_tls == 'gnutls' or have_gnutls
1263 have_openssl = false
1264 else
1265 have_openssl = conf.get('HAVE_OPENSSL') == 1
1266 if dns_over_tls != 'auto' and not have_openssl
1267 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
Yu Watanabeb349bc52019-06-17 10:22:54 +09001268 error('DNS-over-TLS support was requested@0@, but dependencies are not available'.format(str))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001269 endif
1270 endif
1271 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001272else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001273 have = false
1274 have_gnutls = false
1275 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001276endif
1277conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001278conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1279conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001280
Iwan Timmerc9299be2018-06-13 20:26:24 +02001281default_dns_over_tls = get_option('default-dns-over-tls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001282if skip_deps
Iwan Timmerc9299be2018-06-13 20:26:24 +02001283 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001284endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001285if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
Iwan Timmer4310bfc2019-02-18 20:41:46 +01001286 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 +02001287 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001288endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001289conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1290 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1291substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001292
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01001293want_repart = get_option('repart')
1294if want_repart != 'false'
1295 have = (conf.get('HAVE_OPENSSL') == 1 and
1296 conf.get('HAVE_LIBFDISK') == 1)
1297 if want_repart == 'true' and not have
1298 error('repart support was requested, but dependencies are not available')
1299 endif
1300else
1301 have = false
1302endif
1303conf.set10('ENABLE_REPART', have)
1304
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001305want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001306if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001307 have = (conf.get('HAVE_LIBCURL') == 1 and
1308 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001309 conf.get('HAVE_XZ') == 1 and
1310 conf.get('HAVE_GCRYPT') == 1)
1311 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001312 error('importd support was requested, but dependencies are not available')
1313 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001314else
1315 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001316endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001317conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001318
1319want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001320if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001321 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1322 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001323 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1324 # it's possible to build one without the other. Complain only if
Ben Boeckel5238e952019-04-26 20:22:40 -04001325 # support was explicitly requested. The auxiliary files like sysusers
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001326 # config should be installed when any of the programs are built.
1327 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1328 error('remote support was requested, but dependencies are not available')
1329 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001330 have = have_deps[0] or have_deps[1]
1331else
1332 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001333endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001334conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001335
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001336foreach term : ['utmp',
1337 'hibernate',
1338 'environment-d',
1339 'binfmt',
1340 'coredump',
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001341 'pstore',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001342 'resolve',
1343 'logind',
1344 'hostnamed',
1345 'localed',
1346 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001347 'portabled',
Lennart Poetteringd093b622019-07-04 18:33:30 +02001348 'userdb',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001349 'networkd',
1350 'timedated',
1351 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001352 'firstboot',
1353 'randomseed',
1354 'backlight',
1355 'vconsole',
1356 'quotacheck',
1357 'sysusers',
1358 'tmpfiles',
1359 'hwdb',
1360 'rfkill',
1361 'ldconfig',
1362 'efi',
1363 'tpm',
1364 'ima',
1365 'smack',
1366 'gshadow',
1367 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001368 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001369 'nss-systemd']
1370 have = get_option(term)
1371 name = 'ENABLE_' + term.underscorify().to_upper()
1372 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001373endforeach
1374
Yu Watanabe08540a92018-07-18 09:25:57 +09001375foreach tuple : [['nss-mymachines', 'machined'],
1376 ['nss-resolve', 'resolve']]
1377 want = get_option(tuple[0])
1378 if want != 'false'
1379 have = get_option(tuple[1])
1380 if want == 'true' and not have
1381 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1382 endif
1383 else
1384 have = false
1385 endif
1386 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1387 conf.set10(name, have)
1388endforeach
1389
1390enable_nss = false
1391foreach term : ['ENABLE_NSS_MYHOSTNAME',
1392 'ENABLE_NSS_MYMACHINES',
1393 'ENABLE_NSS_RESOLVE',
1394 'ENABLE_NSS_SYSTEMD']
1395 if conf.get(term) == 1
1396 enable_nss = true
1397 endif
1398endforeach
1399conf.set10('ENABLE_NSS', enable_nss)
1400
Yu Watanabe348b4432018-05-07 18:17:35 +09001401conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001402
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001403tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001404fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001405
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001406conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001407
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001408#####################################################################
1409
1410if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001411 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001412
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001413 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001414 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001415 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001416 elif efi_arch == 'x86_64'
1417 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001418 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001419 elif efi_arch == 'arm'
1420 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001421 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001422 elif efi_arch == 'aarch64'
1423 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001424 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001425 else
1426 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001427 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001428 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001429
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001430 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001431 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001432
Yu Watanabeac093402018-05-10 16:04:16 +09001433 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001434else
1435 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001436endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001437conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001438
1439#####################################################################
1440
1441config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001442 output : 'config.h',
1443 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001444
Yu Watanabe348b4432018-05-07 18:17:35 +09001445meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1446
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001447includes = include_directories('src/basic',
Zbigniew Jędrzejewski-Szmek91b08bb2019-07-02 13:01:23 +02001448 'src/boot',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001449 'src/shared',
1450 'src/systemd',
1451 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001452 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001453 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001454 'src/resolve',
1455 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001456 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001457 'src/login',
1458 'src/udev',
1459 'src/libudev',
1460 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001461 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001462 'src/libsystemd/sd-bus',
1463 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001464 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001465 'src/libsystemd/sd-hwdb',
1466 'src/libsystemd/sd-id128',
1467 'src/libsystemd/sd-netlink',
1468 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001469 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001470 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001471 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001472
1473add_project_arguments('-include', 'config.h', language : 'c')
1474
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001475generate_gperfs = find_program('tools/generate-gperfs.py')
1476
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001477subdir('po')
1478subdir('catalog')
1479subdir('src/systemd')
1480subdir('src/basic')
1481subdir('src/libsystemd')
1482subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001483subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001484subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001485
1486libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001487 'journal-core',
1488 libjournal_core_sources,
1489 journald_gperf_c,
1490 include_directories : includes,
1491 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001492
Davide Cavalca1485aac2019-02-27 11:19:07 -05001493libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001494libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001495 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001496 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001497 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001498 include_directories : includes,
1499 link_args : ['-shared',
1500 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001501 link_with : [libbasic,
1502 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001503 link_whole : [libsystemd_static,
1504 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001505 dependencies : [threads,
1506 librt,
1507 libxz,
1508 liblz4],
1509 link_depends : libsystemd_sym,
1510 install : true,
1511 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001512
Davide Cavalca70848ec2018-04-09 02:43:35 -07001513static_libsystemd = get_option('static-libsystemd')
1514static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1515
1516install_libsystemd_static = static_library(
1517 'systemd',
1518 libsystemd_sources,
1519 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001520 basic_sources,
1521 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001522 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001523 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001524 build_by_default : static_libsystemd != 'false',
1525 install : static_libsystemd != 'false',
1526 install_dir : rootlibdir,
1527 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1528 dependencies : [threads,
1529 librt,
1530 libxz,
1531 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001532 libcap,
1533 libblkid,
1534 libmount,
1535 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001536 libgcrypt],
1537 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1538
Mario Limonciellob61d7772019-09-09 22:49:35 +01001539#Generate autosuspend rules
1540make_autosuspend_rules_py = find_program('tools/make-autosuspend-rules.py')
1541
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001542############################################################
1543
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001544# binaries that have --help and are intended for use by humans,
1545# usually, but not always, installed in /bin.
1546public_programs = []
1547
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001548subdir('src/libudev')
1549subdir('src/shared')
1550subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001551subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001552subdir('src/udev')
1553subdir('src/network')
1554
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001555subdir('src/analyze')
1556subdir('src/journal-remote')
1557subdir('src/coredump')
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001558subdir('src/pstore')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001559subdir('src/hostname')
1560subdir('src/import')
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01001561subdir('src/partition')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001562subdir('src/kernel-install')
1563subdir('src/locale')
1564subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001565subdir('src/portable')
Lennart Poetteringd093b622019-07-04 18:33:30 +02001566subdir('src/userdb')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001567subdir('src/nspawn')
1568subdir('src/resolve')
1569subdir('src/timedate')
1570subdir('src/timesync')
1571subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001572subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001573
1574subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001575subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmekef2ad302019-10-08 16:43:18 +02001576subdir('rules.d')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001577subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001578
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001579############################################################
1580
1581# only static linking apart from libdl, to make sure that the
1582# module is linked to all libraries that it uses.
1583test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001584 'test-dlopen',
1585 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001586 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001587 include_directories : includes,
1588 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001589 dependencies : [libdl],
1590 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001591
Yu Watanabe08540a92018-07-18 09:25:57 +09001592foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Lennart Poettering1684c562019-07-04 18:31:11 +02001593 ['systemd', 'ENABLE_NSS_SYSTEMD', 'src/nss-systemd/userdb-glue.c src/nss-systemd/userdb-glue.h'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001594 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1595 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001596
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001597 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001598 if condition
1599 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001600
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001601 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001602 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001603
Lennart Poettering1684c562019-07-04 18:31:11 +02001604 sources = ['src/nss-@0@/nss-@0@.c'.format(module)]
1605 if tuple.length() > 2
1606 sources += tuple[2].split()
1607 endif
1608
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001609 nss = shared_library(
1610 'nss_' + module,
Lennart Poettering1684c562019-07-04 18:31:11 +02001611 sources,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001612 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001613 version : '2',
1614 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001615 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1616 link_args : ['-Wl,-z,nodelete',
1617 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001618 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001619 link_with : [libsystemd_static,
Lennart Poettering733cbd02019-07-23 14:22:06 +02001620 libshared_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001621 libbasic],
1622 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001623 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001624 link_depends : sym,
1625 install : true,
1626 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001627
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001628 # We cannot use shared_module because it does not support version suffix.
1629 # Unfortunately shared_library insists on creating the symlink…
1630 meson.add_install_script('sh', '-c',
1631 'rm $DESTDIR@0@/libnss_@1@.so'
1632 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001633
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001634 if want_tests != 'false'
1635 test('dlopen-nss_' + module,
1636 test_dlopen,
1637 # path to dlopen must include a slash
1638 args : nss.full_path())
1639 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001640 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001641endforeach
1642
1643############################################################
1644
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001645executable('systemd',
1646 systemd_sources,
1647 include_directories : includes,
1648 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001649 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001650 dependencies : [versiondep,
1651 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001652 librt,
1653 libseccomp,
1654 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001655 libmount,
1656 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001657 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001658 install : true,
1659 install_dir : rootlibexecdir)
1660
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001661meson.add_install_script(meson_make_symlink,
1662 join_paths(rootlibexecdir, 'systemd'),
1663 join_paths(rootsbindir, 'init'))
1664
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001665exe = executable('systemd-analyze',
1666 systemd_analyze_sources,
1667 include_directories : includes,
1668 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001669 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001670 dependencies : [versiondep,
1671 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001672 librt,
1673 libseccomp,
1674 libselinux,
1675 libmount,
1676 libblkid],
1677 install_rpath : rootlibexecdir,
1678 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001679public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001680
1681executable('systemd-journald',
1682 systemd_journald_sources,
1683 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001684 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001685 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001686 dependencies : [threads,
1687 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001688 liblz4,
1689 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001690 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001691 install : true,
1692 install_dir : rootlibexecdir)
1693
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001694exe = executable('systemd-cat',
1695 systemd_cat_sources,
1696 include_directories : includes,
1697 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001698 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001699 dependencies : [threads],
1700 install_rpath : rootlibexecdir,
1701 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001702public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001703
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001704exe = executable('journalctl',
1705 journalctl_sources,
1706 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001707 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001708 dependencies : [threads,
1709 libqrencode,
1710 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001711 liblz4,
1712 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001713 install_rpath : rootlibexecdir,
1714 install : true,
1715 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001716public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001717
1718executable('systemd-getty-generator',
1719 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001720 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001721 link_with : [libshared],
1722 install_rpath : rootlibexecdir,
1723 install : true,
1724 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001725
1726executable('systemd-debug-generator',
1727 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001728 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001729 link_with : [libshared],
1730 install_rpath : rootlibexecdir,
1731 install : true,
1732 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001733
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001734executable('systemd-run-generator',
1735 'src/run-generator/run-generator.c',
1736 include_directories : includes,
1737 link_with : [libshared],
1738 install_rpath : rootlibexecdir,
1739 install : true,
1740 install_dir : systemgeneratordir)
1741
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001742executable('systemd-fstab-generator',
1743 'src/fstab-generator/fstab-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001744 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01001745 link_with : [libcore_shared,
1746 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001747 install_rpath : rootlibexecdir,
1748 install : true,
1749 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001750
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001751if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001752 executable('30-systemd-environment-d-generator',
1753 'src/environment-d-generator/environment-d-generator.c',
1754 include_directories : includes,
1755 link_with : [libshared],
1756 install_rpath : rootlibexecdir,
1757 install : true,
1758 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001759
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001760 meson.add_install_script(meson_make_symlink,
1761 join_paths(sysconfdir, 'environment'),
1762 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001763endif
1764
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001765if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001766 executable('systemd-hibernate-resume-generator',
1767 'src/hibernate-resume/hibernate-resume-generator.c',
1768 include_directories : includes,
1769 link_with : [libshared],
1770 install_rpath : rootlibexecdir,
1771 install : true,
1772 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001773
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001774 executable('systemd-hibernate-resume',
1775 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001776 include_directories : includes,
1777 link_with : [libshared],
1778 install_rpath : rootlibexecdir,
1779 install : true,
1780 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001781endif
1782
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001783if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001784 executable('systemd-gpt-auto-generator',
1785 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001786 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001787 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001788 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001789 dependencies : libblkid,
1790 install_rpath : rootlibexecdir,
1791 install : true,
1792 install_dir : systemgeneratordir)
1793
1794 exe = executable('systemd-dissect',
1795 'src/dissect/dissect.c',
1796 include_directories : includes,
1797 link_with : [libshared],
1798 install_rpath : rootlibexecdir,
1799 install : true,
1800 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001801 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001802endif
1803
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001804if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001805 executable('systemd-resolved',
1806 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001807 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001808 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001809 libbasic_gcrypt,
1810 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001811 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001812 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001813 install : true,
1814 install_dir : rootlibexecdir)
1815
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001816 exe = executable('resolvectl',
1817 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001818 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001819 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001820 libbasic_gcrypt,
1821 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001822 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001823 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001824 libm,
1825 libidn],
1826 install_rpath : rootlibexecdir,
1827 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001828 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001829
1830 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001831 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001832 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001833
1834 meson.add_install_script(meson_make_symlink,
1835 join_paths(bindir, 'resolvectl'),
1836 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001837endif
1838
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001839if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001840 executable('systemd-logind',
1841 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001842 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001843 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001844 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001845 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001846 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001847 install_rpath : rootlibexecdir,
1848 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001849 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001850
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001851 exe = executable('loginctl',
1852 loginctl_sources,
1853 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001854 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001855 dependencies : [threads,
1856 liblz4,
1857 libxz],
1858 install_rpath : rootlibexecdir,
1859 install : true,
1860 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001861 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001862
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001863 exe = executable('systemd-inhibit',
1864 'src/login/inhibit.c',
1865 include_directories : includes,
1866 link_with : [libshared],
1867 install_rpath : rootlibexecdir,
1868 install : true,
1869 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001870 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001871
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001872 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001873 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001874 pam_systemd = shared_library(
1875 'pam_systemd',
1876 pam_systemd_c,
1877 name_prefix : '',
1878 include_directories : includes,
1879 link_args : ['-shared',
1880 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001881 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001882 libshared_static],
1883 dependencies : [threads,
1884 libpam,
1885 libpam_misc],
1886 link_depends : pam_systemd_sym,
1887 install : true,
1888 install_dir : pamlibdir)
1889
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001890 if want_tests != 'false'
1891 test('dlopen-pam_systemd',
1892 test_dlopen,
1893 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001894 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001895 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001896 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001897
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001898 executable('systemd-user-runtime-dir',
1899 user_runtime_dir_sources,
1900 include_directories : includes,
1901 link_with : [libshared],
1902 install_rpath : rootlibexecdir,
1903 install : true,
1904 install_dir : rootlibexecdir)
1905endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001906
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001907if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001908 executable('systemd-user-sessions',
1909 'src/user-sessions/user-sessions.c',
1910 include_directories : includes,
1911 link_with : [libshared],
1912 install_rpath : rootlibexecdir,
1913 install : true,
1914 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001915endif
1916
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001917if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001918 exe = executable('bootctl',
1919 'src/boot/bootctl.c',
1920 include_directories : includes,
1921 link_with : [libshared],
1922 dependencies : [libblkid],
1923 install_rpath : rootlibexecdir,
1924 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001925 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001926
1927 executable('systemd-bless-boot',
1928 'src/boot/bless-boot.c',
1929 include_directories : includes,
1930 link_with : [libshared],
1931 dependencies : [libblkid],
1932 install_rpath : rootlibexecdir,
1933 install : true,
1934 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001935
1936 executable('systemd-bless-boot-generator',
1937 'src/boot/bless-boot-generator.c',
1938 include_directories : includes,
1939 link_with : [libshared],
1940 install_rpath : rootlibexecdir,
1941 install : true,
1942 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001943endif
1944
Lennart Poetteringf876f532018-06-25 16:07:33 +02001945executable('systemd-boot-check-no-failures',
1946 'src/boot/boot-check-no-failures.c',
1947 include_directories : includes,
1948 link_with : [libshared],
1949 dependencies : [libblkid],
1950 install_rpath : rootlibexecdir,
1951 install : true,
1952 install_dir : rootlibexecdir)
1953
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001954exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1955 include_directories : includes,
1956 link_with : [libshared],
1957 dependencies : [threads],
1958 install_rpath : rootlibexecdir,
1959 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001960public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001961
Felipe Satelerf3794362018-05-22 15:08:57 -04001962
1963if get_option('link-systemctl-shared')
1964 systemctl_link_with = [libshared]
1965else
1966 systemctl_link_with = [libsystemd_static,
1967 libshared_static,
1968 libjournal_client,
1969 libbasic_gcrypt]
1970endif
1971
Lennart Poettering63a3b3c2019-03-22 20:05:08 +01001972exe = executable('systemctl',
1973 'src/systemctl/systemctl.c',
1974 'src/systemctl/sysv-compat.h',
1975 'src/systemctl/sysv-compat.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001976 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001977 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001978 dependencies : [threads,
1979 libcap,
1980 libselinux,
1981 libxz,
1982 liblz4],
1983 install_rpath : rootlibexecdir,
1984 install : true,
1985 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001986public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001987
Lennart Poettering61d05782018-04-16 21:41:40 +02001988if conf.get('ENABLE_PORTABLED') == 1
1989 executable('systemd-portabled',
1990 systemd_portabled_sources,
1991 include_directories : includes,
1992 link_with : [libshared],
1993 dependencies : [threads],
1994 install_rpath : rootlibexecdir,
1995 install : true,
1996 install_dir : rootlibexecdir)
1997
1998 exe = executable('portablectl', 'src/portable/portablectl.c',
1999 include_directories : includes,
2000 link_with : [libshared],
2001 dependencies : [threads],
2002 install_rpath : rootlibexecdir,
2003 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02002004 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002005 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02002006endif
2007
Lennart Poetteringd093b622019-07-04 18:33:30 +02002008if conf.get('ENABLE_USERDB') == 1
2009 executable('systemd-userwork',
2010 systemd_userwork_sources,
2011 include_directories : includes,
2012 link_with : [libshared],
2013 dependencies : [threads],
2014 install_rpath : rootlibexecdir,
2015 install : true,
2016 install_dir : rootlibexecdir)
2017
2018 executable('systemd-userdbd',
2019 systemd_userdbd_sources,
2020 include_directories : includes,
2021 link_with : [libshared],
2022 dependencies : [threads],
2023 install_rpath : rootlibexecdir,
2024 install : true,
2025 install_dir : rootlibexecdir)
Lennart Poettering16049372019-08-05 18:22:01 +02002026
2027 executable('userdbctl',
2028 userdbctl_sources,
2029 include_directories : includes,
2030 link_with : [libshared],
2031 dependencies : [threads],
2032 install_rpath : rootlibexecdir,
2033 install : true,
2034 install_dir : rootbindir)
Lennart Poetteringd093b622019-07-04 18:33:30 +02002035endif
2036
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01002037foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
2038 meson.add_install_script(meson_make_symlink,
2039 join_paths(rootbindir, 'systemctl'),
2040 join_paths(rootsbindir, alias))
2041endforeach
2042
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002043if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002044 executable('systemd-backlight',
2045 'src/backlight/backlight.c',
2046 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002047 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002048 install_rpath : rootlibexecdir,
2049 install : true,
2050 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002051endif
2052
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002053if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002054 executable('systemd-rfkill',
2055 'src/rfkill/rfkill.c',
2056 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002057 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002058 install_rpath : rootlibexecdir,
2059 install : true,
2060 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002061endif
2062
2063executable('systemd-system-update-generator',
2064 'src/system-update-generator/system-update-generator.c',
2065 include_directories : includes,
2066 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002067 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002068 install : true,
2069 install_dir : systemgeneratordir)
2070
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002071if conf.get('HAVE_LIBCRYPTSETUP') == 1
Lennart Poettering08669702019-08-22 10:21:11 +02002072 systemd_cryptsetup_sources = files('''
2073 src/cryptsetup/cryptsetup.c
2074 src/cryptsetup/cryptsetup-pkcs11.h
2075'''.split())
2076
2077 if conf.get('HAVE_P11KIT') == 1
2078 systemd_cryptsetup_sources += files('src/cryptsetup/cryptsetup-pkcs11.c')
2079 endif
2080
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002081 executable('systemd-cryptsetup',
Lennart Poettering08669702019-08-22 10:21:11 +02002082 systemd_cryptsetup_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002083 include_directories : includes,
2084 link_with : [libshared],
Lennart Poettering08669702019-08-22 10:21:11 +02002085 dependencies : [libcryptsetup,
2086 libp11kit],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002087 install_rpath : rootlibexecdir,
2088 install : true,
2089 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002090
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002091 executable('systemd-cryptsetup-generator',
2092 'src/cryptsetup/cryptsetup-generator.c',
2093 include_directories : includes,
2094 link_with : [libshared],
2095 dependencies : [libcryptsetup],
2096 install_rpath : rootlibexecdir,
2097 install : true,
2098 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002099
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002100 executable('systemd-veritysetup',
2101 'src/veritysetup/veritysetup.c',
2102 include_directories : includes,
2103 link_with : [libshared],
2104 dependencies : [libcryptsetup],
2105 install_rpath : rootlibexecdir,
2106 install : true,
2107 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002108
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002109 executable('systemd-veritysetup-generator',
2110 'src/veritysetup/veritysetup-generator.c',
2111 include_directories : includes,
2112 link_with : [libshared],
2113 dependencies : [libcryptsetup],
2114 install_rpath : rootlibexecdir,
2115 install : true,
2116 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002117endif
2118
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002119if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002120 executable('systemd-sysv-generator',
2121 'src/sysv-generator/sysv-generator.c',
2122 include_directories : includes,
2123 link_with : [libshared],
2124 install_rpath : rootlibexecdir,
2125 install : true,
2126 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002127
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002128 executable('systemd-rc-local-generator',
2129 'src/rc-local-generator/rc-local-generator.c',
2130 include_directories : includes,
2131 link_with : [libshared],
2132 install_rpath : rootlibexecdir,
2133 install : true,
2134 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002135endif
2136
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002137if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002138 executable('systemd-hostnamed',
2139 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002140 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002141 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002142 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002143 install : true,
2144 install_dir : rootlibexecdir)
2145
2146 exe = executable('hostnamectl',
2147 'src/hostname/hostnamectl.c',
2148 include_directories : includes,
2149 link_with : [libshared],
2150 install_rpath : rootlibexecdir,
2151 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002152 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002153endif
2154
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002155if conf.get('ENABLE_LOCALED') == 1
2156 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002157 # logind will load libxkbcommon.so dynamically on its own
2158 deps = [libdl]
2159 else
2160 deps = []
2161 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002162
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002163 executable('systemd-localed',
2164 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002165 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002166 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002167 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002168 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002169 install : true,
2170 install_dir : rootlibexecdir)
2171
2172 exe = executable('localectl',
2173 localectl_sources,
2174 include_directories : includes,
2175 link_with : [libshared],
2176 install_rpath : rootlibexecdir,
2177 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002178 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002179endif
2180
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002181if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002182 executable('systemd-timedated',
2183 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002184 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002185 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002186 install_rpath : rootlibexecdir,
2187 install : true,
2188 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002189endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002190
Yu Watanabe6129ec82018-05-03 18:07:43 +09002191if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002192 exe = executable('timedatectl',
2193 'src/timedate/timedatectl.c',
2194 include_directories : includes,
2195 install_rpath : rootlibexecdir,
2196 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002197 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002198 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002199 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002200endif
2201
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002202if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002203 executable('systemd-timesyncd',
2204 systemd_timesyncd_sources,
2205 include_directories : includes,
2206 link_with : [libshared],
2207 dependencies : [threads,
2208 libm],
2209 install_rpath : rootlibexecdir,
2210 install : true,
2211 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002212
2213 executable('systemd-time-wait-sync',
2214 'src/time-wait-sync/time-wait-sync.c',
2215 include_directories : includes,
2216 link_with : [libshared],
2217 install_rpath : rootlibexecdir,
2218 install : true,
2219 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002220endif
2221
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002222if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002223 executable('systemd-machined',
2224 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002225 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002226 link_with : [libmachine_core,
2227 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002228 install_rpath : rootlibexecdir,
2229 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002230 install_dir : rootlibexecdir)
2231
2232 exe = executable('machinectl',
2233 'src/machine/machinectl.c',
2234 include_directories : includes,
2235 link_with : [libshared],
2236 dependencies : [threads,
2237 libxz,
2238 liblz4],
2239 install_rpath : rootlibexecdir,
2240 install : true,
2241 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002242 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002243endif
2244
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002245if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002246 executable('systemd-importd',
2247 systemd_importd_sources,
2248 include_directories : includes,
2249 link_with : [libshared],
2250 dependencies : [threads],
2251 install_rpath : rootlibexecdir,
2252 install : true,
2253 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002254
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002255 systemd_pull = executable('systemd-pull',
2256 systemd_pull_sources,
2257 include_directories : includes,
2258 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002259 dependencies : [versiondep,
2260 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002261 libz,
2262 libbzip2,
2263 libxz,
2264 libgcrypt],
2265 install_rpath : rootlibexecdir,
2266 install : true,
2267 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002268
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002269 systemd_import = executable('systemd-import',
2270 systemd_import_sources,
2271 include_directories : includes,
2272 link_with : [libshared],
2273 dependencies : [libcurl,
2274 libz,
2275 libbzip2,
2276 libxz],
2277 install_rpath : rootlibexecdir,
2278 install : true,
2279 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002280
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002281 systemd_import_fs = executable('systemd-import-fs',
2282 systemd_import_fs_sources,
2283 include_directories : includes,
2284 link_with : [libshared],
2285 install_rpath : rootlibexecdir,
2286 install : true,
2287 install_dir : rootlibexecdir)
2288
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002289 systemd_export = executable('systemd-export',
2290 systemd_export_sources,
2291 include_directories : includes,
2292 link_with : [libshared],
2293 dependencies : [libcurl,
2294 libz,
2295 libbzip2,
2296 libxz],
2297 install_rpath : rootlibexecdir,
2298 install : true,
2299 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002300
2301 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002302endif
2303
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002304if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002305 exe = executable('systemd-journal-upload',
2306 systemd_journal_upload_sources,
2307 include_directories : includes,
2308 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002309 dependencies : [versiondep,
2310 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002311 libcurl,
2312 libgnutls,
2313 libxz,
2314 liblz4],
2315 install_rpath : rootlibexecdir,
2316 install : true,
2317 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002318 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002319endif
2320
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002321if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002322 s_j_remote = executable('systemd-journal-remote',
2323 systemd_journal_remote_sources,
2324 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002325 link_with : [libshared,
2326 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002327 dependencies : [threads,
2328 libmicrohttpd,
2329 libgnutls,
2330 libxz,
2331 liblz4],
2332 install_rpath : rootlibexecdir,
2333 install : true,
2334 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002335
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002336 s_j_gatewayd = executable('systemd-journal-gatewayd',
2337 systemd_journal_gatewayd_sources,
2338 include_directories : includes,
2339 link_with : [libshared],
2340 dependencies : [threads,
2341 libmicrohttpd,
2342 libgnutls,
2343 libxz,
2344 liblz4],
2345 install_rpath : rootlibexecdir,
2346 install : true,
2347 install_dir : rootlibexecdir)
2348 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002349endif
2350
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002351if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002352 executable('systemd-coredump',
2353 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002354 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002355 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002356 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002357 libacl,
2358 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002359 libxz,
2360 liblz4],
2361 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002362 install : true,
2363 install_dir : rootlibexecdir)
2364
2365 exe = executable('coredumpctl',
2366 coredumpctl_sources,
2367 include_directories : includes,
2368 link_with : [libshared],
2369 dependencies : [threads,
2370 libxz,
2371 liblz4],
2372 install_rpath : rootlibexecdir,
2373 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002374 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002375endif
2376
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002377if conf.get('ENABLE_PSTORE') == 1
2378 executable('systemd-pstore',
2379 systemd_pstore_sources,
2380 include_directories : includes,
2381 link_with : [libshared],
2382 dependencies : [threads,
2383 libacl,
2384 libdw,
2385 libxz,
2386 liblz4],
2387 install_rpath : rootlibexecdir,
2388 install : true,
2389 install_dir : rootlibexecdir)
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002390endif
2391
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002392if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002393 exe = executable('systemd-binfmt',
2394 'src/binfmt/binfmt.c',
2395 include_directories : includes,
2396 link_with : [libshared],
2397 install_rpath : rootlibexecdir,
2398 install : true,
2399 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002400 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002401
2402 meson.add_install_script('sh', '-c',
2403 mkdir_p.format(binfmtdir))
2404 meson.add_install_script('sh', '-c',
2405 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2406endif
2407
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002408if conf.get('ENABLE_REPART') == 1
2409 executable('systemd-repart',
2410 systemd_repart_sources,
2411 include_directories : includes,
2412 link_with : [libshared],
2413 dependencies : [threads,
2414 libcryptsetup,
2415 libblkid,
2416 libfdisk,
2417 libopenssl],
2418 install_rpath : rootlibexecdir,
2419 install : true,
2420 install_dir : rootbindir)
2421endif
2422
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002423if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002424 executable('systemd-vconsole-setup',
2425 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002426 include_directories : includes,
2427 link_with : [libshared],
2428 install_rpath : rootlibexecdir,
2429 install : true,
2430 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002431endif
2432
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002433if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002434 executable('systemd-random-seed',
2435 'src/random-seed/random-seed.c',
2436 include_directories : includes,
2437 link_with : [libshared],
2438 install_rpath : rootlibexecdir,
2439 install : true,
2440 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002441endif
2442
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002443if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002444 executable('systemd-firstboot',
2445 'src/firstboot/firstboot.c',
2446 include_directories : includes,
2447 link_with : [libshared],
2448 dependencies : [libcrypt],
2449 install_rpath : rootlibexecdir,
2450 install : true,
2451 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002452endif
2453
2454executable('systemd-remount-fs',
2455 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002456 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002457 link_with : [libcore_shared,
2458 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002459 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002460 install : true,
2461 install_dir : rootlibexecdir)
2462
2463executable('systemd-machine-id-setup',
2464 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002465 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002466 link_with : [libcore_shared,
2467 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002468 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002469 install : true,
2470 install_dir : rootbindir)
2471
2472executable('systemd-fsck',
2473 'src/fsck/fsck.c',
2474 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002475 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002476 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002477 install : true,
2478 install_dir : rootlibexecdir)
2479
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002480executable('systemd-growfs',
2481 'src/partition/growfs.c',
2482 include_directories : includes,
2483 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002484 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002485 install_rpath : rootlibexecdir,
2486 install : true,
2487 install_dir : rootlibexecdir)
2488
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002489executable('systemd-makefs',
2490 'src/partition/makefs.c',
2491 include_directories : includes,
2492 link_with : [libshared],
2493 install_rpath : rootlibexecdir,
2494 install : true,
2495 install_dir : rootlibexecdir)
2496
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002497executable('systemd-sleep',
2498 'src/sleep/sleep.c',
2499 include_directories : includes,
2500 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002501 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002502 install : true,
2503 install_dir : rootlibexecdir)
2504
Yu Watanabed25e1272019-01-03 02:32:57 +09002505install_data('src/sleep/sleep.conf',
2506 install_dir : pkgsysconfdir)
2507
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002508exe = executable('systemd-sysctl',
2509 'src/sysctl/sysctl.c',
2510 include_directories : includes,
2511 link_with : [libshared],
2512 install_rpath : rootlibexecdir,
2513 install : true,
2514 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002515public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002516
2517executable('systemd-ac-power',
2518 'src/ac-power/ac-power.c',
2519 include_directories : includes,
2520 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002521 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002522 install : true,
2523 install_dir : rootlibexecdir)
2524
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002525exe = executable('systemd-detect-virt',
2526 'src/detect-virt/detect-virt.c',
2527 include_directories : includes,
2528 link_with : [libshared],
2529 install_rpath : rootlibexecdir,
2530 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002531public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002532
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002533exe = executable('systemd-delta',
2534 'src/delta/delta.c',
2535 include_directories : includes,
2536 link_with : [libshared],
2537 install_rpath : rootlibexecdir,
2538 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002539public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002540
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002541exe = executable('systemd-escape',
2542 'src/escape/escape.c',
2543 include_directories : includes,
2544 link_with : [libshared],
2545 install_rpath : rootlibexecdir,
2546 install : true,
2547 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002548public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002549
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002550exe = executable('systemd-notify',
2551 'src/notify/notify.c',
2552 include_directories : includes,
2553 link_with : [libshared],
2554 install_rpath : rootlibexecdir,
2555 install : true,
2556 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002557public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002558
2559executable('systemd-volatile-root',
2560 'src/volatile-root/volatile-root.c',
2561 include_directories : includes,
2562 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002563 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002564 install : true,
2565 install_dir : rootlibexecdir)
2566
2567executable('systemd-cgroups-agent',
2568 'src/cgroups-agent/cgroups-agent.c',
2569 include_directories : includes,
2570 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002571 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002572 install : true,
2573 install_dir : rootlibexecdir)
2574
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002575exe = executable('systemd-id128',
2576 'src/id128/id128.c',
2577 include_directories : includes,
2578 link_with : [libshared],
2579 install_rpath : rootlibexecdir,
2580 install : true)
2581public_programs += exe
2582
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002583exe = executable('systemd-path',
2584 'src/path/path.c',
2585 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002586 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002587 install_rpath : rootlibexecdir,
2588 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002589public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002590
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002591exe = executable('systemd-ask-password',
2592 'src/ask-password/ask-password.c',
2593 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002594 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002595 install_rpath : rootlibexecdir,
2596 install : true,
2597 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002598public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002599
2600executable('systemd-reply-password',
2601 'src/reply-password/reply-password.c',
2602 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002603 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002604 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002605 install : true,
2606 install_dir : rootlibexecdir)
2607
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002608exe = executable('systemd-tty-ask-password-agent',
2609 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2610 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002611 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002612 install_rpath : rootlibexecdir,
2613 install : true,
2614 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002615public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002616
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002617exe = executable('systemd-cgls',
2618 'src/cgls/cgls.c',
2619 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002620 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002621 install_rpath : rootlibexecdir,
2622 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002623public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002624
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002625exe = executable('systemd-cgtop',
2626 'src/cgtop/cgtop.c',
2627 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002628 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002629 install_rpath : rootlibexecdir,
2630 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002631public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002632
2633executable('systemd-initctl',
2634 'src/initctl/initctl.c',
2635 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002636 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002637 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002638 install : true,
2639 install_dir : rootlibexecdir)
2640
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002641exe = executable('systemd-mount',
2642 'src/mount/mount-tool.c',
2643 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002644 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek7d991d42019-04-04 13:41:47 +02002645 dependencies: [libmount],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002646 install_rpath : rootlibexecdir,
2647 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002648public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002649
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002650meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002651 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002652
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002653exe = executable('systemd-run',
2654 'src/run/run.c',
2655 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002656 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002657 install_rpath : rootlibexecdir,
2658 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002659public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002660
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002661exe = executable('systemd-stdio-bridge',
2662 'src/stdio-bridge/stdio-bridge.c',
2663 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002664 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002665 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002666 install_rpath : rootlibexecdir,
2667 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002668public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002669
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002670exe = executable('busctl',
2671 'src/busctl/busctl.c',
2672 'src/busctl/busctl-introspect.c',
2673 'src/busctl/busctl-introspect.h',
2674 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002675 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002676 install_rpath : rootlibexecdir,
2677 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002678public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002679
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002680if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002681 exe = executable('systemd-sysusers',
2682 'src/sysusers/sysusers.c',
2683 include_directories : includes,
2684 link_with : [libshared],
2685 install_rpath : rootlibexecdir,
2686 install : true,
2687 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002688 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002689endif
2690
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002691if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002692 exe = executable('systemd-tmpfiles',
2693 'src/tmpfiles/tmpfiles.c',
2694 include_directories : includes,
2695 link_with : [libshared],
2696 dependencies : [libacl],
2697 install_rpath : rootlibexecdir,
2698 install : true,
2699 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002700 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002701
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002702 if want_tests != 'false'
2703 test('test-systemd-tmpfiles',
2704 test_systemd_tmpfiles_py,
2705 # https://github.com/mesonbuild/meson/issues/2681
2706 args : exe.full_path())
2707 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002708endif
2709
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002710if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002711 exe = executable('systemd-hwdb',
2712 'src/hwdb/hwdb.c',
2713 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2714 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002715 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002716 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002717 install : true,
2718 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002719 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002720endif
2721
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002722if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002723 executable('systemd-quotacheck',
2724 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002725 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002726 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002727 install_rpath : rootlibexecdir,
2728 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002729 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002730endif
2731
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002732exe = executable('systemd-socket-proxyd',
2733 'src/socket-proxy/socket-proxyd.c',
2734 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002735 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002736 dependencies : [threads],
2737 install_rpath : rootlibexecdir,
2738 install : true,
2739 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002740public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002741
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002742exe = executable('systemd-udevd',
2743 systemd_udevd_sources,
2744 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002745 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002746 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002747 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002748 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002749 dependencies : [versiondep,
2750 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002751 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002752 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002753 libacl,
2754 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002755 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002756 install : true,
2757 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002758public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002759
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002760exe = executable('udevadm',
2761 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002762 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002763 include_directories : includes,
2764 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002765 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002766 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002767 dependencies : [versiondep,
2768 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002769 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002770 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002771 libacl,
2772 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002773 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002774 install : true,
2775 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002776public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002777
2778executable('systemd-shutdown',
2779 systemd_shutdown_sources,
2780 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002781 link_with : [libcore_shared,
2782 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002783 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002784 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002785 install : true,
2786 install_dir : rootlibexecdir)
2787
2788executable('systemd-update-done',
2789 'src/update-done/update-done.c',
2790 include_directories : includes,
2791 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002792 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002793 install : true,
2794 install_dir : rootlibexecdir)
2795
2796executable('systemd-update-utmp',
2797 'src/update-utmp/update-utmp.c',
2798 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002799 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002800 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002801 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002802 install : true,
2803 install_dir : rootlibexecdir)
2804
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002805if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002806 executable('systemd-modules-load',
2807 'src/modules-load/modules-load.c',
2808 include_directories : includes,
2809 link_with : [libshared],
2810 dependencies : [libkmod],
2811 install_rpath : rootlibexecdir,
2812 install : true,
2813 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002814
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002815 meson.add_install_script('sh', '-c',
2816 mkdir_p.format(modulesloaddir))
2817 meson.add_install_script('sh', '-c',
2818 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002819endif
2820
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002821exe = executable('systemd-nspawn',
2822 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002823 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002824 link_with : [libcore_shared,
2825 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002826 libshared],
Franck Bui82384232019-03-22 11:09:08 +01002827 dependencies : [libblkid,
2828 libseccomp],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002829 install_rpath : rootlibexecdir,
2830 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002831public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002832
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002833if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002834 executable('systemd-networkd',
2835 systemd_networkd_sources,
Yu Watanabe737f1402019-10-30 17:02:15 +09002836 include_directories : network_include_dir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002837 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002838 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002839 libudev_static,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002840 networkd_link_with],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002841 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002842 install_rpath : rootlibexecdir,
2843 install : true,
2844 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002845
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002846 executable('systemd-networkd-wait-online',
2847 systemd_networkd_wait_online_sources,
2848 include_directories : includes,
2849 link_with : [libnetworkd_core,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002850 networkd_link_with],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002851 install_rpath : rootlibexecdir,
2852 install : true,
2853 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002854
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002855 exe = executable('networkctl',
2856 networkctl_sources,
2857 include_directories : includes,
2858 link_with : [libsystemd_network,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002859 networkd_link_with],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002860 install_rpath : rootlibexecdir,
2861 install : true,
2862 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002863 public_programs += exe
Yu Watanabe426c1d32019-07-13 03:35:04 +09002864
2865 executable('systemd-network-generator',
2866 network_generator_sources,
2867 include_directories : includes,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002868 link_with : [networkd_link_with],
Yu Watanabe426c1d32019-07-13 03:35:04 +09002869 install_rpath : rootlibexecdir,
2870 install : true,
2871 install_dir : rootlibexecdir)
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002872endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002873
2874executable('systemd-sulogin-shell',
2875 ['src/sulogin-shell/sulogin-shell.c'],
2876 include_directories : includes,
2877 link_with : [libshared],
2878 install_rpath : rootlibexecdir,
2879 install : true,
2880 install_dir : rootlibexecdir)
2881
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002882############################################################
2883
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002884custom_target(
2885 'systemd-runtest.env',
2886 output : 'systemd-runtest.env',
2887 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05002888 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002889 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002890 '} >@OUTPUT@'],
2891 build_by_default : true)
2892
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002893foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002894 sources = tuple[0]
2895 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2896 dependencies = tuple[2]
2897 condition = tuple.length() >= 4 ? tuple[3] : ''
2898 type = tuple.length() >= 5 ? tuple[4] : ''
2899 defs = tuple.length() >= 6 ? tuple[5] : []
2900 incs = tuple.length() >= 7 ? tuple[6] : includes
2901 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002902
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002903 name = sources[0].split('/')[-1].split('.')[0]
2904 if type.startswith('timeout=')
2905 timeout = type.split('=')[1].to_int()
2906 type = ''
2907 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002908
2909 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002910 exe = executable(
2911 name,
2912 sources,
2913 include_directories : incs,
2914 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002915 dependencies : [versiondep,
2916 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002917 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002918 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002919 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002920 install : install_tests,
2921 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002922
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002923 if type == 'manual'
2924 message('@0@ is a manual test'.format(name))
2925 elif type == 'unsafe' and want_tests != 'unsafe'
2926 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002927 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002928 test(name, exe,
2929 env : test_env,
2930 timeout : timeout)
2931 endif
2932 else
2933 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2934 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002935endforeach
2936
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002937exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002938 'test-libsystemd-sym',
2939 test_libsystemd_sym_c,
2940 include_directories : includes,
2941 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002942 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002943 install : install_tests,
2944 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002945if want_tests != 'false'
2946 test('test-libsystemd-sym', exe)
2947endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002948
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002949exe = executable(
2950 'test-libsystemd-static-sym',
2951 test_libsystemd_sym_c,
2952 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002953 link_with : [install_libsystemd_static],
2954 dependencies : [threads], # threads is already included in dependencies on the library,
2955 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002956 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002957 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002958 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002959if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002960 test('test-libsystemd-static-sym', exe)
2961endif
2962
2963exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002964 'test-libudev-sym',
2965 test_libudev_sym_c,
2966 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002967 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002968 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002969 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002970 install : install_tests,
2971 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002972if want_tests != 'false'
2973 test('test-libudev-sym', exe)
2974endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002975
2976exe = executable(
2977 'test-libudev-static-sym',
2978 test_libudev_sym_c,
2979 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002980 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002981 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002982 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002983 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002984 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002985if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002986 test('test-libudev-static-sym', exe)
2987endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002988
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002989############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002990
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002991fuzzer_exes = []
2992
Michael Olbrich59967402018-11-11 11:27:35 +01002993if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002994foreach tuple : fuzzers
2995 sources = tuple[0]
2996 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2997 dependencies = tuple[2]
2998 defs = tuple.length() >= 4 ? tuple[3] : []
2999 incs = tuple.length() >= 5 ? tuple[4] : includes
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003000 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003001
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003002 if want_ossfuzz or want_fuzzbuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003003 dependencies += fuzzing_engine
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003004 elif want_libfuzzer
3005 if fuzzing_engine.found()
3006 dependencies += fuzzing_engine
3007 else
3008 link_args += ['-fsanitize=fuzzer']
3009 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003010 else
3011 sources += 'src/fuzz/fuzz-main.c'
3012 endif
3013
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00003014 if want_fuzzbuzz
3015 sources += 'src/fuzz/fuzzer-entry-point.c'
3016 endif
3017
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003018 name = sources[0].split('/')[-1].split('.')[0]
3019
3020 fuzzer_exes += executable(
3021 name,
3022 sources,
3023 include_directories : [incs, include_directories('src/fuzz')],
3024 link_with : link_with,
3025 dependencies : dependencies,
3026 c_args : defs,
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003027 link_args: link_args,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003028 install : false)
3029endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01003030endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003031
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01003032run_target('fuzzers',
3033 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003034 command : ['true'])
3035
3036############################################################
3037
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003038make_directive_index_py = find_program('tools/make-directive-index.py')
3039make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04003040xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04003041hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek62d39992019-11-15 11:32:24 +01003042autosuspend_update_sh = find_program('tools/meson-autosuspend-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003043
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003044subdir('sysctl.d')
3045subdir('sysusers.d')
3046subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmek4f10b802019-10-08 16:52:10 +02003047subdir('hwdb.d')
3048subdir('units')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01003049subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003050subdir('network')
3051subdir('man')
3052subdir('shell-completion/bash')
3053subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003054subdir('docs/sysvinit')
3055subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003056
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003057install_subdir('factory/etc',
3058 install_dir : factorydir)
3059
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003060install_data('xorg/50-systemd-user.sh',
3061 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01003062install_data('modprobe.d/systemd.conf',
3063 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003064install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003065 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003066 'NEWS',
3067 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05303068 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07003069 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003070 'docs/ENVIRONMENT.md',
Zbigniew Jędrzejewski-Szmek5425f8a2020-01-15 13:45:04 +01003071 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003072 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07003073 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003074 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003075 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
3076 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003077
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04003078meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
3079meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
3080
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003081############################################################
3082
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003083meson_check_help = find_program('tools/meson-check-help.sh')
3084
3085foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003086 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003087 if want_tests != 'false'
3088 test('check-help-' + name,
3089 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003090 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003091 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003092endforeach
3093
3094############################################################
3095
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02003096check_directives_sh = find_program('tools/check-directives.sh')
3097
3098if want_tests != 'false'
3099 test('check-directives',
3100 check_directives_sh,
3101 args : project_source_root)
3102endif
3103
3104############################################################
3105
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003106# Enable tests for all supported sanitizers
3107foreach tuple : sanitizers
3108 sanitizer = tuple[0]
3109 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003110
Yu Watanabe7a6397d2018-05-15 20:18:24 +09003111 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003112 prev = ''
3113 foreach p : fuzz_regression_tests
3114 b = p.split('/')[-2]
3115 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003116
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003117 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003118
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003119 if name != prev
3120 if want_tests == 'false'
3121 message('Not compiling @0@ because tests is set to false'.format(name))
3122 elif slow_tests
3123 exe = custom_target(
3124 name,
3125 output : name,
3126 depends : build,
3127 command : [env, 'ln', '-fs',
3128 join_paths(build.full_path(), b),
3129 '@OUTPUT@'],
3130 build_by_default : true)
3131 else
3132 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3133 endif
3134 endif
3135 prev = name
3136
3137 if want_tests != 'false' and slow_tests
3138 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3139 env,
3140 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003141 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003142 endif
3143 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003144 endif
3145endforeach
3146
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003147
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003148############################################################
3149
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003150if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003151 all_files = run_command(
3152 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003153 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003154 'ls-files',
3155 ':/*.[ch]'])
3156 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003157
userwithuide85a6902017-08-09 13:41:44 +00003158 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003159 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003160 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003161 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003162 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003163 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003164 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003165endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003166
3167if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003168 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003169 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003170 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003171 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003172endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003173
3174if git.found()
3175 git_head = run_command(
3176 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003177 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003178 'rev-parse', 'HEAD']).stdout().strip()
3179 git_head_short = run_command(
3180 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003181 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003182 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3183
3184 run_target(
3185 'git-snapshot',
3186 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003187 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003188 git_head_short),
3189 '--prefix', 'systemd-@0@/'.format(git_head),
3190 'HEAD'])
3191endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003192
3193############################################################
3194
Lennart Poettering51b13862017-12-20 12:51:14 +01003195meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3196run_target(
3197 'check-api-docs',
3198 depends : [man, libsystemd, libudev],
3199 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3200
3201############################################################
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003202watchdog_opt = service_watchdog == '' ? 'disabled' : service_watchdog
Lennart Poettering51b13862017-12-20 12:51:14 +01003203
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003204status = [
3205 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3206
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003207 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003208 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003209 'prefix directory: @0@'.format(prefixdir),
3210 'rootprefix directory: @0@'.format(rootprefixdir),
3211 'sysconf directory: @0@'.format(sysconfdir),
3212 'include directory: @0@'.format(includedir),
3213 'lib directory: @0@'.format(libdir),
3214 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003215 'SysV init scripts: @0@'.format(sysvinit_path),
3216 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003217 'PAM modules directory: @0@'.format(pamlibdir),
3218 'PAM configuration directory: @0@'.format(pamconfdir),
3219 'RPM macros directory: @0@'.format(rpmmacrosdir),
3220 'modprobe.d directory: @0@'.format(modprobedir),
3221 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3222 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3223 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3224 'bash completions directory: @0@'.format(bashcompletiondir),
3225 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003226 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003227 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3228 get_option('debug-tty')),
3229 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003230 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003231 'maximum system UID: @0@'.format(system_uid_max),
3232 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003233 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3234 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3235 'minimum container UID base: @0@'.format(container_uid_base_min),
3236 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003237 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003238 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003239 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003240 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003241 'nobody user name: @0@'.format(nobody_user),
3242 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003243 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003244 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003245
3246 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003247 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003248 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003249 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003250 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +02003251 'default locale: @0@'.format(default_locale),
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +01003252 'default user $PATH: @0@'.format(default_user_path_display),
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003253 'systemd service watchdog: @0@'.format(watchdog_opt)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003254
3255alt_dns_servers = '\n '.join(dns_servers.split(' '))
3256alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3257status += [
3258 'default DNS servers: @0@'.format(alt_dns_servers),
3259 'default NTP servers: @0@'.format(alt_ntp_servers)]
3260
3261alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3262 '@@0@'.format(time_epoch)).stdout().strip()
3263status += [
3264 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3265
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003266status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003267 'static libsystemd: @0@'.format(static_libsystemd),
3268 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003269
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003270# TODO:
3271# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3272# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3273# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3274
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003275if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003276 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003277
3278 if have_gnu_efi
3279 status += [
3280 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003281 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003282 'EFI lib directory: @0@'.format(efi_libdir),
3283 'EFI lds directory: @0@'.format(efi_ldsdir),
3284 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003285 endif
3286endif
3287
3288found = []
3289missing = []
3290
3291foreach tuple : [
3292 ['libcryptsetup'],
3293 ['PAM'],
Lennart Poettering839fddb2019-11-05 11:49:27 +01003294 ['p11kit'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003295 ['AUDIT'],
3296 ['IMA'],
3297 ['AppArmor'],
3298 ['SELinux'],
3299 ['SECCOMP'],
3300 ['SMACK'],
3301 ['zlib'],
3302 ['xz'],
3303 ['lz4'],
3304 ['bzip2'],
3305 ['ACL'],
3306 ['gcrypt'],
3307 ['qrencode'],
3308 ['microhttpd'],
3309 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003310 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003311 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003312 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003313 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003314 ['libidn'],
3315 ['libiptc'],
3316 ['elfutils'],
3317 ['binfmt'],
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01003318 ['repart'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003319 ['vconsole'],
3320 ['quotacheck'],
3321 ['tmpfiles'],
3322 ['environment.d'],
3323 ['sysusers'],
3324 ['firstboot'],
3325 ['randomseed'],
3326 ['backlight'],
3327 ['rfkill'],
3328 ['logind'],
3329 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003330 ['portabled'],
Lennart Poetteringd093b622019-07-04 18:33:30 +02003331 ['userdb'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003332 ['importd'],
3333 ['hostnamed'],
3334 ['timedated'],
3335 ['timesyncd'],
3336 ['localed'],
3337 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003338 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003339 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3340 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003341 ['coredump'],
Eric DeVolder9b4abc62019-05-16 08:59:01 -05003342 ['pstore'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003343 ['polkit'],
3344 ['legacy pkla', install_polkit_pkla],
3345 ['efi'],
3346 ['gnu-efi', have_gnu_efi],
3347 ['kmod'],
3348 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003349 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003350 ['blkid'],
3351 ['dbus'],
3352 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003353 ['nss-myhostname'],
3354 ['nss-mymachines'],
3355 ['nss-resolve'],
3356 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003357 ['hwdb'],
3358 ['tpm'],
3359 ['man pages', want_man],
3360 ['html pages', want_html],
3361 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003362 ['SysV compat'],
3363 ['utmp'],
3364 ['ldconfig'],
3365 ['hibernate'],
3366 ['adm group', get_option('adm-group')],
3367 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003368 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003369 ['debug hashmap'],
3370 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003371 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003372 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003373 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003374 ['link-udev-shared', get_option('link-udev-shared')],
3375 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Robert Scheck5ac8b502020-01-08 02:36:07 +01003376 ['link-networkd-shared', get_option('link-networkd-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003377]
3378
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003379 if tuple.length() >= 2
3380 cond = tuple[1]
3381 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003382 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3383 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003384 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003385 endif
3386 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003387 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003388 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003389 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003390 endif
3391endforeach
3392
3393status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003394 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003395 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003396 '',
3397 'disabled features: @0@'.format(', '.join(missing)),
3398 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003399message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003400
3401if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003402 warning('\n' +
3403 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3404 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3405 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003406endif