blob: 3085af49fd7e19ebf5b7cdf1eebf10e0e169e079 [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'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200246conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100247conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200248conf.set('STATUS_UNIT_FORMAT_DEFAULT', 'STATUS_UNIT_FORMAT_' + status_unit_format_default.to_upper())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400249
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400250substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100251substs.set('rootprefix', rootprefixdir)
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +0100252substs.set('rootprefix_noslash', rootprefixdir_noslash)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400253substs.set('exec_prefix', prefixdir)
254substs.set('libdir', libdir)
255substs.set('rootlibdir', rootlibdir)
256substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100257substs.set('sysconfdir', sysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400258substs.set('bindir', bindir)
259substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400260substs.set('rootlibexecdir', rootlibexecdir)
261substs.set('systemunitdir', systemunitdir)
262substs.set('userunitdir', userunitdir)
263substs.set('systempresetdir', systempresetdir)
264substs.set('userpresetdir', userpresetdir)
265substs.set('udevhwdbdir', udevhwdbdir)
266substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400267substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200268substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400269substs.set('catalogdir', catalogdir)
270substs.set('tmpfilesdir', tmpfilesdir)
271substs.set('sysusersdir', sysusersdir)
272substs.set('sysctldir', sysctldir)
273substs.set('binfmtdir', binfmtdir)
274substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200275substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400276substs.set('systemgeneratordir', systemgeneratordir)
277substs.set('usergeneratordir', usergeneratordir)
278substs.set('systemenvgeneratordir', systemenvgeneratordir)
279substs.set('userenvgeneratordir', userenvgeneratordir)
280substs.set('systemshutdowndir', systemshutdowndir)
281substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400282substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400283substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
284substs.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
876want_seccomp = get_option('seccomp')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000877if want_seccomp != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400878 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400879 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400880 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200881 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400882else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200883 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400884 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400885endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200886conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400887
888want_selinux = get_option('selinux')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000889if want_selinux != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400890 libselinux = dependency('libselinux',
891 version : '>= 2.1.9',
892 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200893 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400894else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200895 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400896 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400897endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200898conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400899
900want_apparmor = get_option('apparmor')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000901if want_apparmor != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400902 libapparmor = dependency('libapparmor',
903 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200904 have = libapparmor.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 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400908endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200909conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400910
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400911smack_run_label = get_option('smack-run-label')
912if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400913 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400914endif
915
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400916want_polkit = get_option('polkit')
917install_polkit = false
918install_polkit_pkla = false
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000919if want_polkit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400920 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400921
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400922 libpolkit = dependency('polkit-gobject-1',
923 required : false)
924 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
925 message('Old polkit detected, will install pkla files')
926 install_polkit_pkla = true
927 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400928endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200929conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400930
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400931want_acl = get_option('acl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000932if want_acl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400933 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200934 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400935else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200936 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400937 libacl = []
938endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200939conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400940
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400941want_audit = get_option('audit')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000942if want_audit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400943 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200944 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400945else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200946 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400947 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400948endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200949conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400950
951want_blkid = get_option('blkid')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000952if want_blkid != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400953 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200954 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400955else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200956 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400957 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400958endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200959conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400960
961want_kmod = get_option('kmod')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000962if want_kmod != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400963 libkmod = dependency('libkmod',
964 version : '>= 15',
965 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200966 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400967else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200968 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400969 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400970endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200971conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400972
973want_pam = get_option('pam')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000974if want_pam != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400975 libpam = cc.find_library('pam', required : want_pam == 'true')
976 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200977 have = libpam.found() and libpam_misc.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 libpam = []
981 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400982endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200983conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400984
985want_microhttpd = get_option('microhttpd')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000986if want_microhttpd != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400987 libmicrohttpd = dependency('libmicrohttpd',
988 version : '>= 0.9.33',
989 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200990 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400991else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200992 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400993 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400994endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200995conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400996
997want_libcryptsetup = get_option('libcryptsetup')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000998if want_libcryptsetup != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400999 libcryptsetup = dependency('libcryptsetup',
Jay Strictd90874b2019-09-26 15:54:29 +02001000 version : '>= 2.0.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001001 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001002 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001003else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001004 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001005 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001006endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001007conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001008
1009want_libcurl = get_option('libcurl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001010if want_libcurl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001011 libcurl = dependency('libcurl',
1012 version : '>= 7.32.0',
1013 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001014 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001015else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001016 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001017 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001018endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001019conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001020
1021want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001022want_libidn2 = get_option('libidn2')
1023if want_libidn == 'true' and want_libidn2 == 'true'
1024 error('libidn and libidn2 cannot be requested simultaneously')
1025endif
1026
Yu Watanabe1b931392019-06-29 03:13:30 +09001027if want_libidn2 != 'false' and want_libidn != 'true' and not skip_deps
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001028 libidn = dependency('libidn2',
1029 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001030 have = libidn.found()
1031else
1032 have = false
Yu Watanabe1b931392019-06-29 03:13:30 +09001033 libidn = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001034endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001035conf.set10('HAVE_LIBIDN2', have)
Yu Watanabe1b931392019-06-29 03:13:30 +09001036if not have and want_libidn != 'false' and not skip_deps
1037 # libidn is used for both libidn and libidn2 objects
1038 libidn = dependency('libidn',
1039 required : want_libidn == 'true')
1040 have = libidn.found()
1041else
1042 have = false
1043endif
1044conf.set10('HAVE_LIBIDN', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001045
1046want_libiptc = get_option('libiptc')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001047if want_libiptc != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001048 libiptc = dependency('libiptc',
1049 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001050 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001051else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001052 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001053 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001054endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001055conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001056
1057want_qrencode = get_option('qrencode')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001058if want_qrencode != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001059 libqrencode = dependency('libqrencode',
1060 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001061 have = libqrencode.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 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001065endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001066conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001067
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001068want_gcrypt = get_option('gcrypt')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001069if want_gcrypt != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001070 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1071 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001072 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001073else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001074 have = false
1075endif
1076if not have
1077 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001078 libgcrypt = []
1079 libgpg_error = []
1080endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001081conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001082
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001083want_gnutls = get_option('gnutls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001084if want_gnutls != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001085 libgnutls = dependency('gnutls',
1086 version : '>= 3.1.4',
1087 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001088 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001089else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001090 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001091 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001092endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001093conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001094
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001095want_openssl = get_option('openssl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001096if want_openssl != 'false' and not skip_deps
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001097 libopenssl = dependency('openssl',
1098 version : '>= 1.1.0',
1099 required : want_openssl == 'true')
1100 have = libopenssl.found()
1101else
1102 have = false
1103 libopenssl = []
1104endif
1105conf.set10('HAVE_OPENSSL', have)
1106
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001107want_elfutils = get_option('elfutils')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001108if want_elfutils != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001109 libdw = dependency('libdw',
1110 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001111 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001112else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001113 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001114 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001115endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001116conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001117
1118want_zlib = get_option('zlib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001119if want_zlib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001120 libz = dependency('zlib',
1121 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001122 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001123else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001124 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001125 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001126endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001127conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001128
1129want_bzip2 = get_option('bzip2')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001130if want_bzip2 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001131 libbzip2 = cc.find_library('bz2',
1132 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001133 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001134else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001135 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001136 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001137endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001138conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001139
1140want_xz = get_option('xz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001141if want_xz != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001142 libxz = dependency('liblzma',
1143 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001144 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001145else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001146 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001147 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001148endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001149conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001150
1151want_lz4 = get_option('lz4')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001152if want_lz4 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001153 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001154 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001155 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001156 have = liblz4.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 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001160endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001161conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001162
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001163want_xkbcommon = get_option('xkbcommon')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001164if want_xkbcommon != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001165 libxkbcommon = dependency('xkbcommon',
1166 version : '>= 0.3.0',
1167 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001168 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001169else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001170 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001171 libxkbcommon = []
1172endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001173conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001174
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001175want_pcre2 = get_option('pcre2')
1176if want_pcre2 != 'false'
1177 libpcre2 = dependency('libpcre2-8',
1178 required : want_pcre2 == 'true')
1179 have = libpcre2.found()
1180else
1181 have = false
1182 libpcre2 = []
1183endif
1184conf.set10('HAVE_PCRE2', have)
1185
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001186want_glib = get_option('glib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001187if want_glib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001188 libglib = dependency('glib-2.0',
1189 version : '>= 2.22.0',
1190 required : want_glib == 'true')
1191 libgobject = dependency('gobject-2.0',
1192 version : '>= 2.22.0',
1193 required : want_glib == 'true')
1194 libgio = dependency('gio-2.0',
1195 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001196 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001197else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001198 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001199 libglib = []
1200 libgobject = []
1201 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001202endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001203conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001204
1205want_dbus = get_option('dbus')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001206if want_dbus != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001207 libdbus = dependency('dbus-1',
1208 version : '>= 1.3.2',
1209 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001210 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001211else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001212 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001213 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001214endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001215conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001216
Yu Watanabe42303dc2017-06-18 05:22:32 +09001217default_dnssec = get_option('default-dnssec')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001218if skip_deps
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001219 default_dnssec = 'no'
1220endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001221if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001222 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1223 default_dnssec = 'no'
1224endif
1225conf.set('DEFAULT_DNSSEC_MODE',
1226 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1227substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1228
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001229dns_over_tls = get_option('dns-over-tls')
1230if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001231 if dns_over_tls == 'openssl'
1232 have_gnutls = false
1233 else
Iwan Timmer38e053c2019-10-29 20:26:05 +01001234 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.6.0'))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001235 if dns_over_tls == 'gnutls' and not have_gnutls
1236 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1237 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001238 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001239 if dns_over_tls == 'gnutls' or have_gnutls
1240 have_openssl = false
1241 else
1242 have_openssl = conf.get('HAVE_OPENSSL') == 1
1243 if dns_over_tls != 'auto' and not have_openssl
1244 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
Yu Watanabeb349bc52019-06-17 10:22:54 +09001245 error('DNS-over-TLS support was requested@0@, but dependencies are not available'.format(str))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001246 endif
1247 endif
1248 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001249else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001250 have = false
1251 have_gnutls = false
1252 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001253endif
1254conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001255conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1256conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001257
Iwan Timmerc9299be2018-06-13 20:26:24 +02001258default_dns_over_tls = get_option('default-dns-over-tls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001259if skip_deps
Iwan Timmerc9299be2018-06-13 20:26:24 +02001260 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001261endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001262if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
Iwan Timmer4310bfc2019-02-18 20:41:46 +01001263 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 +02001264 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001265endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001266conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1267 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1268substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001269
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001270want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001271if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001272 have = (conf.get('HAVE_LIBCURL') == 1 and
1273 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001274 conf.get('HAVE_XZ') == 1 and
1275 conf.get('HAVE_GCRYPT') == 1)
1276 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001277 error('importd support was requested, but dependencies are not available')
1278 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001279else
1280 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001281endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001282conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001283
1284want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001285if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001286 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1287 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001288 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1289 # it's possible to build one without the other. Complain only if
Ben Boeckel5238e952019-04-26 20:22:40 -04001290 # support was explicitly requested. The auxiliary files like sysusers
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001291 # config should be installed when any of the programs are built.
1292 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1293 error('remote support was requested, but dependencies are not available')
1294 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001295 have = have_deps[0] or have_deps[1]
1296else
1297 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001298endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001299conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001300
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001301foreach term : ['utmp',
1302 'hibernate',
1303 'environment-d',
1304 'binfmt',
1305 'coredump',
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001306 'pstore',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001307 'resolve',
1308 'logind',
1309 'hostnamed',
1310 'localed',
1311 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001312 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001313 'networkd',
1314 'timedated',
1315 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001316 'firstboot',
1317 'randomseed',
1318 'backlight',
1319 'vconsole',
1320 'quotacheck',
1321 'sysusers',
1322 'tmpfiles',
1323 'hwdb',
1324 'rfkill',
1325 'ldconfig',
1326 'efi',
1327 'tpm',
1328 'ima',
1329 'smack',
1330 'gshadow',
1331 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001332 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001333 'nss-systemd']
1334 have = get_option(term)
1335 name = 'ENABLE_' + term.underscorify().to_upper()
1336 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001337endforeach
1338
Yu Watanabe08540a92018-07-18 09:25:57 +09001339foreach tuple : [['nss-mymachines', 'machined'],
1340 ['nss-resolve', 'resolve']]
1341 want = get_option(tuple[0])
1342 if want != 'false'
1343 have = get_option(tuple[1])
1344 if want == 'true' and not have
1345 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1346 endif
1347 else
1348 have = false
1349 endif
1350 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1351 conf.set10(name, have)
1352endforeach
1353
1354enable_nss = false
1355foreach term : ['ENABLE_NSS_MYHOSTNAME',
1356 'ENABLE_NSS_MYMACHINES',
1357 'ENABLE_NSS_RESOLVE',
1358 'ENABLE_NSS_SYSTEMD']
1359 if conf.get(term) == 1
1360 enable_nss = true
1361 endif
1362endforeach
1363conf.set10('ENABLE_NSS', enable_nss)
1364
Yu Watanabe348b4432018-05-07 18:17:35 +09001365conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001366
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001367tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001368fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001369
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001370conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001371
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001372#####################################################################
1373
1374if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001375 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001376
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001377 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001378 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001379 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001380 elif efi_arch == 'x86_64'
1381 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001382 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001383 elif efi_arch == 'arm'
1384 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001385 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001386 elif efi_arch == 'aarch64'
1387 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001388 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001389 else
1390 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001391 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001392 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001393
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001394 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001395 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001396
Yu Watanabeac093402018-05-10 16:04:16 +09001397 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001398else
1399 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001400endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001401conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001402
1403#####################################################################
1404
1405config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001406 output : 'config.h',
1407 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001408
Yu Watanabe348b4432018-05-07 18:17:35 +09001409meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1410
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001411includes = include_directories('src/basic',
Zbigniew Jędrzejewski-Szmek91b08bb2019-07-02 13:01:23 +02001412 'src/boot',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001413 'src/shared',
1414 'src/systemd',
1415 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001416 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001417 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001418 'src/resolve',
1419 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001420 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001421 'src/login',
1422 'src/udev',
1423 'src/libudev',
1424 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001425 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001426 'src/libsystemd/sd-bus',
1427 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001428 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001429 'src/libsystemd/sd-hwdb',
1430 'src/libsystemd/sd-id128',
1431 'src/libsystemd/sd-netlink',
1432 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001433 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001434 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001435 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001436
1437add_project_arguments('-include', 'config.h', language : 'c')
1438
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001439generate_gperfs = find_program('tools/generate-gperfs.py')
1440
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001441subdir('po')
1442subdir('catalog')
1443subdir('src/systemd')
1444subdir('src/basic')
1445subdir('src/libsystemd')
1446subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001447subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001448subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001449
1450libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001451 'journal-core',
1452 libjournal_core_sources,
1453 journald_gperf_c,
1454 include_directories : includes,
1455 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001456
Davide Cavalca1485aac2019-02-27 11:19:07 -05001457libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001458libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001459 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001460 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001461 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001462 include_directories : includes,
1463 link_args : ['-shared',
1464 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001465 link_with : [libbasic,
1466 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001467 link_whole : [libsystemd_static,
1468 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001469 dependencies : [threads,
1470 librt,
1471 libxz,
1472 liblz4],
1473 link_depends : libsystemd_sym,
1474 install : true,
1475 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001476
Davide Cavalca70848ec2018-04-09 02:43:35 -07001477static_libsystemd = get_option('static-libsystemd')
1478static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1479
1480install_libsystemd_static = static_library(
1481 'systemd',
1482 libsystemd_sources,
1483 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001484 basic_sources,
1485 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001486 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001487 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001488 build_by_default : static_libsystemd != 'false',
1489 install : static_libsystemd != 'false',
1490 install_dir : rootlibdir,
1491 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1492 dependencies : [threads,
1493 librt,
1494 libxz,
1495 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001496 libcap,
1497 libblkid,
1498 libmount,
1499 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001500 libgcrypt],
1501 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1502
Mario Limonciellob61d7772019-09-09 22:49:35 +01001503#Generate autosuspend rules
1504make_autosuspend_rules_py = find_program('tools/make-autosuspend-rules.py')
1505
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001506############################################################
1507
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001508# binaries that have --help and are intended for use by humans,
1509# usually, but not always, installed in /bin.
1510public_programs = []
1511
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001512subdir('src/libudev')
1513subdir('src/shared')
1514subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001515subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001516subdir('src/udev')
1517subdir('src/network')
1518
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001519subdir('src/analyze')
1520subdir('src/journal-remote')
1521subdir('src/coredump')
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001522subdir('src/pstore')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001523subdir('src/hostname')
1524subdir('src/import')
1525subdir('src/kernel-install')
1526subdir('src/locale')
1527subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001528subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001529subdir('src/nspawn')
1530subdir('src/resolve')
1531subdir('src/timedate')
1532subdir('src/timesync')
1533subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001534subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001535
1536subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001537subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmekef2ad302019-10-08 16:43:18 +02001538subdir('rules.d')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001539subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001540
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001541############################################################
1542
1543# only static linking apart from libdl, to make sure that the
1544# module is linked to all libraries that it uses.
1545test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001546 'test-dlopen',
1547 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001548 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001549 include_directories : includes,
1550 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001551 dependencies : [libdl],
1552 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001553
Yu Watanabe08540a92018-07-18 09:25:57 +09001554foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001555 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001556 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1557 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001558
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001559 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001560 if condition
1561 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001562
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001563 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001564 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001565
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001566 nss = shared_library(
1567 'nss_' + module,
1568 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001569 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001570 version : '2',
1571 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001572 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1573 link_args : ['-Wl,-z,nodelete',
1574 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001575 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001576 link_with : [libsystemd_static,
Lennart Poettering733cbd02019-07-23 14:22:06 +02001577 libshared_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001578 libbasic],
1579 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001580 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001581 link_depends : sym,
1582 install : true,
1583 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001584
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001585 # We cannot use shared_module because it does not support version suffix.
1586 # Unfortunately shared_library insists on creating the symlink…
1587 meson.add_install_script('sh', '-c',
1588 'rm $DESTDIR@0@/libnss_@1@.so'
1589 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001590
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001591 if want_tests != 'false'
1592 test('dlopen-nss_' + module,
1593 test_dlopen,
1594 # path to dlopen must include a slash
1595 args : nss.full_path())
1596 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001597 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001598endforeach
1599
1600############################################################
1601
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001602executable('systemd',
1603 systemd_sources,
1604 include_directories : includes,
1605 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001606 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001607 dependencies : [versiondep,
1608 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001609 librt,
1610 libseccomp,
1611 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001612 libmount,
1613 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001614 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001615 install : true,
1616 install_dir : rootlibexecdir)
1617
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001618meson.add_install_script(meson_make_symlink,
1619 join_paths(rootlibexecdir, 'systemd'),
1620 join_paths(rootsbindir, 'init'))
1621
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001622exe = executable('systemd-analyze',
1623 systemd_analyze_sources,
1624 include_directories : includes,
1625 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001626 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001627 dependencies : [versiondep,
1628 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001629 librt,
1630 libseccomp,
1631 libselinux,
1632 libmount,
1633 libblkid],
1634 install_rpath : rootlibexecdir,
1635 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001636public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001637
1638executable('systemd-journald',
1639 systemd_journald_sources,
1640 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001641 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001642 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001643 dependencies : [threads,
1644 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001645 liblz4,
1646 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001647 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001648 install : true,
1649 install_dir : rootlibexecdir)
1650
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001651exe = executable('systemd-cat',
1652 systemd_cat_sources,
1653 include_directories : includes,
1654 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001655 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001656 dependencies : [threads],
1657 install_rpath : rootlibexecdir,
1658 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001659public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001660
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001661exe = executable('journalctl',
1662 journalctl_sources,
1663 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001664 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001665 dependencies : [threads,
1666 libqrencode,
1667 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001668 liblz4,
1669 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001670 install_rpath : rootlibexecdir,
1671 install : true,
1672 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001673public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001674
1675executable('systemd-getty-generator',
1676 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001677 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001678 link_with : [libshared],
1679 install_rpath : rootlibexecdir,
1680 install : true,
1681 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001682
1683executable('systemd-debug-generator',
1684 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001685 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001686 link_with : [libshared],
1687 install_rpath : rootlibexecdir,
1688 install : true,
1689 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001690
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001691executable('systemd-run-generator',
1692 'src/run-generator/run-generator.c',
1693 include_directories : includes,
1694 link_with : [libshared],
1695 install_rpath : rootlibexecdir,
1696 install : true,
1697 install_dir : systemgeneratordir)
1698
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001699executable('systemd-fstab-generator',
1700 'src/fstab-generator/fstab-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001701 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01001702 link_with : [libcore_shared,
1703 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001704 install_rpath : rootlibexecdir,
1705 install : true,
1706 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001707
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001708if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001709 executable('30-systemd-environment-d-generator',
1710 'src/environment-d-generator/environment-d-generator.c',
1711 include_directories : includes,
1712 link_with : [libshared],
1713 install_rpath : rootlibexecdir,
1714 install : true,
1715 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001716
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001717 meson.add_install_script(meson_make_symlink,
1718 join_paths(sysconfdir, 'environment'),
1719 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001720endif
1721
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001722if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001723 executable('systemd-hibernate-resume-generator',
1724 'src/hibernate-resume/hibernate-resume-generator.c',
1725 include_directories : includes,
1726 link_with : [libshared],
1727 install_rpath : rootlibexecdir,
1728 install : true,
1729 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001730
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001731 executable('systemd-hibernate-resume',
1732 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001733 include_directories : includes,
1734 link_with : [libshared],
1735 install_rpath : rootlibexecdir,
1736 install : true,
1737 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001738endif
1739
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001740if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001741 executable('systemd-gpt-auto-generator',
1742 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001743 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001744 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001745 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001746 dependencies : libblkid,
1747 install_rpath : rootlibexecdir,
1748 install : true,
1749 install_dir : systemgeneratordir)
1750
1751 exe = executable('systemd-dissect',
1752 'src/dissect/dissect.c',
1753 include_directories : includes,
1754 link_with : [libshared],
1755 install_rpath : rootlibexecdir,
1756 install : true,
1757 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001758 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001759endif
1760
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001761if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001762 executable('systemd-resolved',
1763 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001764 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001765 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001766 libbasic_gcrypt,
1767 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001768 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001769 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001770 install : true,
1771 install_dir : rootlibexecdir)
1772
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001773 exe = executable('resolvectl',
1774 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001775 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001776 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001777 libbasic_gcrypt,
1778 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001779 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001780 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001781 libm,
1782 libidn],
1783 install_rpath : rootlibexecdir,
1784 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001785 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001786
1787 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001788 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001789 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001790
1791 meson.add_install_script(meson_make_symlink,
1792 join_paths(bindir, 'resolvectl'),
1793 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001794endif
1795
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001796if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001797 executable('systemd-logind',
1798 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001799 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001800 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001801 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001802 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001803 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001804 install_rpath : rootlibexecdir,
1805 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001806 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001807
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001808 exe = executable('loginctl',
1809 loginctl_sources,
1810 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001811 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001812 dependencies : [threads,
1813 liblz4,
1814 libxz],
1815 install_rpath : rootlibexecdir,
1816 install : true,
1817 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001818 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001819
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001820 exe = executable('systemd-inhibit',
1821 'src/login/inhibit.c',
1822 include_directories : includes,
1823 link_with : [libshared],
1824 install_rpath : rootlibexecdir,
1825 install : true,
1826 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001827 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001828
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001829 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001830 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001831 pam_systemd = shared_library(
1832 'pam_systemd',
1833 pam_systemd_c,
1834 name_prefix : '',
1835 include_directories : includes,
1836 link_args : ['-shared',
1837 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001838 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001839 libshared_static],
1840 dependencies : [threads,
1841 libpam,
1842 libpam_misc],
1843 link_depends : pam_systemd_sym,
1844 install : true,
1845 install_dir : pamlibdir)
1846
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001847 if want_tests != 'false'
1848 test('dlopen-pam_systemd',
1849 test_dlopen,
1850 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001851 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001852 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001853 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001854
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001855 executable('systemd-user-runtime-dir',
1856 user_runtime_dir_sources,
1857 include_directories : includes,
1858 link_with : [libshared],
1859 install_rpath : rootlibexecdir,
1860 install : true,
1861 install_dir : rootlibexecdir)
1862endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001863
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001864if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001865 executable('systemd-user-sessions',
1866 'src/user-sessions/user-sessions.c',
1867 include_directories : includes,
1868 link_with : [libshared],
1869 install_rpath : rootlibexecdir,
1870 install : true,
1871 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001872endif
1873
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001874if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001875 exe = executable('bootctl',
1876 'src/boot/bootctl.c',
1877 include_directories : includes,
1878 link_with : [libshared],
1879 dependencies : [libblkid],
1880 install_rpath : rootlibexecdir,
1881 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001882 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001883
1884 executable('systemd-bless-boot',
1885 'src/boot/bless-boot.c',
1886 include_directories : includes,
1887 link_with : [libshared],
1888 dependencies : [libblkid],
1889 install_rpath : rootlibexecdir,
1890 install : true,
1891 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001892
1893 executable('systemd-bless-boot-generator',
1894 'src/boot/bless-boot-generator.c',
1895 include_directories : includes,
1896 link_with : [libshared],
1897 install_rpath : rootlibexecdir,
1898 install : true,
1899 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001900endif
1901
Lennart Poetteringf876f532018-06-25 16:07:33 +02001902executable('systemd-boot-check-no-failures',
1903 'src/boot/boot-check-no-failures.c',
1904 include_directories : includes,
1905 link_with : [libshared],
1906 dependencies : [libblkid],
1907 install_rpath : rootlibexecdir,
1908 install : true,
1909 install_dir : rootlibexecdir)
1910
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001911exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1912 include_directories : includes,
1913 link_with : [libshared],
1914 dependencies : [threads],
1915 install_rpath : rootlibexecdir,
1916 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001917public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001918
Felipe Satelerf3794362018-05-22 15:08:57 -04001919
1920if get_option('link-systemctl-shared')
1921 systemctl_link_with = [libshared]
1922else
1923 systemctl_link_with = [libsystemd_static,
1924 libshared_static,
1925 libjournal_client,
1926 libbasic_gcrypt]
1927endif
1928
Lennart Poettering63a3b3c2019-03-22 20:05:08 +01001929exe = executable('systemctl',
1930 'src/systemctl/systemctl.c',
1931 'src/systemctl/sysv-compat.h',
1932 'src/systemctl/sysv-compat.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001933 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001934 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001935 dependencies : [threads,
1936 libcap,
1937 libselinux,
1938 libxz,
1939 liblz4],
1940 install_rpath : rootlibexecdir,
1941 install : true,
1942 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001943public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001944
Lennart Poettering61d05782018-04-16 21:41:40 +02001945if conf.get('ENABLE_PORTABLED') == 1
1946 executable('systemd-portabled',
1947 systemd_portabled_sources,
1948 include_directories : includes,
1949 link_with : [libshared],
1950 dependencies : [threads],
1951 install_rpath : rootlibexecdir,
1952 install : true,
1953 install_dir : rootlibexecdir)
1954
1955 exe = executable('portablectl', 'src/portable/portablectl.c',
1956 include_directories : includes,
1957 link_with : [libshared],
1958 dependencies : [threads],
1959 install_rpath : rootlibexecdir,
1960 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001961 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001962 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001963endif
1964
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001965foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1966 meson.add_install_script(meson_make_symlink,
1967 join_paths(rootbindir, 'systemctl'),
1968 join_paths(rootsbindir, alias))
1969endforeach
1970
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001971if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001972 executable('systemd-backlight',
1973 'src/backlight/backlight.c',
1974 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001975 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001976 install_rpath : rootlibexecdir,
1977 install : true,
1978 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001979endif
1980
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001981if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001982 executable('systemd-rfkill',
1983 'src/rfkill/rfkill.c',
1984 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001985 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001986 install_rpath : rootlibexecdir,
1987 install : true,
1988 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001989endif
1990
1991executable('systemd-system-update-generator',
1992 'src/system-update-generator/system-update-generator.c',
1993 include_directories : includes,
1994 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001995 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001996 install : true,
1997 install_dir : systemgeneratordir)
1998
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001999if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002000 executable('systemd-cryptsetup',
2001 'src/cryptsetup/cryptsetup.c',
2002 include_directories : includes,
2003 link_with : [libshared],
2004 dependencies : [libcryptsetup],
2005 install_rpath : rootlibexecdir,
2006 install : true,
2007 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002008
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002009 executable('systemd-cryptsetup-generator',
2010 'src/cryptsetup/cryptsetup-generator.c',
2011 include_directories : includes,
2012 link_with : [libshared],
2013 dependencies : [libcryptsetup],
2014 install_rpath : rootlibexecdir,
2015 install : true,
2016 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002017
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002018 executable('systemd-veritysetup',
2019 'src/veritysetup/veritysetup.c',
2020 include_directories : includes,
2021 link_with : [libshared],
2022 dependencies : [libcryptsetup],
2023 install_rpath : rootlibexecdir,
2024 install : true,
2025 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002026
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002027 executable('systemd-veritysetup-generator',
2028 'src/veritysetup/veritysetup-generator.c',
2029 include_directories : includes,
2030 link_with : [libshared],
2031 dependencies : [libcryptsetup],
2032 install_rpath : rootlibexecdir,
2033 install : true,
2034 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002035endif
2036
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002037if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002038 executable('systemd-sysv-generator',
2039 'src/sysv-generator/sysv-generator.c',
2040 include_directories : includes,
2041 link_with : [libshared],
2042 install_rpath : rootlibexecdir,
2043 install : true,
2044 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002045
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002046 executable('systemd-rc-local-generator',
2047 'src/rc-local-generator/rc-local-generator.c',
2048 include_directories : includes,
2049 link_with : [libshared],
2050 install_rpath : rootlibexecdir,
2051 install : true,
2052 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002053endif
2054
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002055if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002056 executable('systemd-hostnamed',
2057 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002058 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002059 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002060 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002061 install : true,
2062 install_dir : rootlibexecdir)
2063
2064 exe = executable('hostnamectl',
2065 'src/hostname/hostnamectl.c',
2066 include_directories : includes,
2067 link_with : [libshared],
2068 install_rpath : rootlibexecdir,
2069 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002070 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002071endif
2072
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002073if conf.get('ENABLE_LOCALED') == 1
2074 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002075 # logind will load libxkbcommon.so dynamically on its own
2076 deps = [libdl]
2077 else
2078 deps = []
2079 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002080
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002081 executable('systemd-localed',
2082 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002083 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002084 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002085 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002086 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002087 install : true,
2088 install_dir : rootlibexecdir)
2089
2090 exe = executable('localectl',
2091 localectl_sources,
2092 include_directories : includes,
2093 link_with : [libshared],
2094 install_rpath : rootlibexecdir,
2095 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002096 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002097endif
2098
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002099if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002100 executable('systemd-timedated',
2101 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002102 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002103 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002104 install_rpath : rootlibexecdir,
2105 install : true,
2106 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002107endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002108
Yu Watanabe6129ec82018-05-03 18:07:43 +09002109if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002110 exe = executable('timedatectl',
2111 'src/timedate/timedatectl.c',
2112 include_directories : includes,
2113 install_rpath : rootlibexecdir,
2114 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002115 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002116 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002117 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002118endif
2119
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002120if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002121 executable('systemd-timesyncd',
2122 systemd_timesyncd_sources,
2123 include_directories : includes,
2124 link_with : [libshared],
2125 dependencies : [threads,
2126 libm],
2127 install_rpath : rootlibexecdir,
2128 install : true,
2129 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002130
2131 executable('systemd-time-wait-sync',
2132 'src/time-wait-sync/time-wait-sync.c',
2133 include_directories : includes,
2134 link_with : [libshared],
2135 install_rpath : rootlibexecdir,
2136 install : true,
2137 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002138endif
2139
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002140if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002141 executable('systemd-machined',
2142 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002143 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002144 link_with : [libmachine_core,
2145 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002146 install_rpath : rootlibexecdir,
2147 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002148 install_dir : rootlibexecdir)
2149
2150 exe = executable('machinectl',
2151 'src/machine/machinectl.c',
2152 include_directories : includes,
2153 link_with : [libshared],
2154 dependencies : [threads,
2155 libxz,
2156 liblz4],
2157 install_rpath : rootlibexecdir,
2158 install : true,
2159 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002160 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002161endif
2162
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002163if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002164 executable('systemd-importd',
2165 systemd_importd_sources,
2166 include_directories : includes,
2167 link_with : [libshared],
2168 dependencies : [threads],
2169 install_rpath : rootlibexecdir,
2170 install : true,
2171 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002172
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002173 systemd_pull = executable('systemd-pull',
2174 systemd_pull_sources,
2175 include_directories : includes,
2176 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002177 dependencies : [versiondep,
2178 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002179 libz,
2180 libbzip2,
2181 libxz,
2182 libgcrypt],
2183 install_rpath : rootlibexecdir,
2184 install : true,
2185 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002186
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002187 systemd_import = executable('systemd-import',
2188 systemd_import_sources,
2189 include_directories : includes,
2190 link_with : [libshared],
2191 dependencies : [libcurl,
2192 libz,
2193 libbzip2,
2194 libxz],
2195 install_rpath : rootlibexecdir,
2196 install : true,
2197 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002198
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002199 systemd_import_fs = executable('systemd-import-fs',
2200 systemd_import_fs_sources,
2201 include_directories : includes,
2202 link_with : [libshared],
2203 install_rpath : rootlibexecdir,
2204 install : true,
2205 install_dir : rootlibexecdir)
2206
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002207 systemd_export = executable('systemd-export',
2208 systemd_export_sources,
2209 include_directories : includes,
2210 link_with : [libshared],
2211 dependencies : [libcurl,
2212 libz,
2213 libbzip2,
2214 libxz],
2215 install_rpath : rootlibexecdir,
2216 install : true,
2217 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002218
2219 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002220endif
2221
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002222if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002223 exe = executable('systemd-journal-upload',
2224 systemd_journal_upload_sources,
2225 include_directories : includes,
2226 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002227 dependencies : [versiondep,
2228 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002229 libcurl,
2230 libgnutls,
2231 libxz,
2232 liblz4],
2233 install_rpath : rootlibexecdir,
2234 install : true,
2235 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002236 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002237endif
2238
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002239if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002240 s_j_remote = executable('systemd-journal-remote',
2241 systemd_journal_remote_sources,
2242 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002243 link_with : [libshared,
2244 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002245 dependencies : [threads,
2246 libmicrohttpd,
2247 libgnutls,
2248 libxz,
2249 liblz4],
2250 install_rpath : rootlibexecdir,
2251 install : true,
2252 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002253
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002254 s_j_gatewayd = executable('systemd-journal-gatewayd',
2255 systemd_journal_gatewayd_sources,
2256 include_directories : includes,
2257 link_with : [libshared],
2258 dependencies : [threads,
2259 libmicrohttpd,
2260 libgnutls,
2261 libxz,
2262 liblz4],
2263 install_rpath : rootlibexecdir,
2264 install : true,
2265 install_dir : rootlibexecdir)
2266 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002267endif
2268
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002269if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002270 executable('systemd-coredump',
2271 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002272 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002273 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002274 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002275 libacl,
2276 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002277 libxz,
2278 liblz4],
2279 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002280 install : true,
2281 install_dir : rootlibexecdir)
2282
2283 exe = executable('coredumpctl',
2284 coredumpctl_sources,
2285 include_directories : includes,
2286 link_with : [libshared],
2287 dependencies : [threads,
2288 libxz,
2289 liblz4],
2290 install_rpath : rootlibexecdir,
2291 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002292 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002293endif
2294
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002295if conf.get('ENABLE_PSTORE') == 1
2296 executable('systemd-pstore',
2297 systemd_pstore_sources,
2298 include_directories : includes,
2299 link_with : [libshared],
2300 dependencies : [threads,
2301 libacl,
2302 libdw,
2303 libxz,
2304 liblz4],
2305 install_rpath : rootlibexecdir,
2306 install : true,
2307 install_dir : rootlibexecdir)
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002308endif
2309
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002310if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002311 exe = executable('systemd-binfmt',
2312 'src/binfmt/binfmt.c',
2313 include_directories : includes,
2314 link_with : [libshared],
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-Szmek37efbbd2017-04-17 19:25:00 -04002319
2320 meson.add_install_script('sh', '-c',
2321 mkdir_p.format(binfmtdir))
2322 meson.add_install_script('sh', '-c',
2323 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2324endif
2325
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002326if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002327 executable('systemd-vconsole-setup',
2328 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002329 include_directories : includes,
2330 link_with : [libshared],
2331 install_rpath : rootlibexecdir,
2332 install : true,
2333 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002334endif
2335
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002336if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002337 executable('systemd-random-seed',
2338 'src/random-seed/random-seed.c',
2339 include_directories : includes,
2340 link_with : [libshared],
2341 install_rpath : rootlibexecdir,
2342 install : true,
2343 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002344endif
2345
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002346if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002347 executable('systemd-firstboot',
2348 'src/firstboot/firstboot.c',
2349 include_directories : includes,
2350 link_with : [libshared],
2351 dependencies : [libcrypt],
2352 install_rpath : rootlibexecdir,
2353 install : true,
2354 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002355endif
2356
2357executable('systemd-remount-fs',
2358 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002359 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002360 link_with : [libcore_shared,
2361 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002362 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002363 install : true,
2364 install_dir : rootlibexecdir)
2365
2366executable('systemd-machine-id-setup',
2367 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002368 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002369 link_with : [libcore_shared,
2370 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002371 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002372 install : true,
2373 install_dir : rootbindir)
2374
2375executable('systemd-fsck',
2376 'src/fsck/fsck.c',
2377 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002378 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002379 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002380 install : true,
2381 install_dir : rootlibexecdir)
2382
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002383executable('systemd-growfs',
2384 'src/partition/growfs.c',
2385 include_directories : includes,
2386 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002387 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002388 install_rpath : rootlibexecdir,
2389 install : true,
2390 install_dir : rootlibexecdir)
2391
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002392executable('systemd-makefs',
2393 'src/partition/makefs.c',
2394 include_directories : includes,
2395 link_with : [libshared],
2396 install_rpath : rootlibexecdir,
2397 install : true,
2398 install_dir : rootlibexecdir)
2399
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002400executable('systemd-sleep',
2401 'src/sleep/sleep.c',
2402 include_directories : includes,
2403 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002404 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002405 install : true,
2406 install_dir : rootlibexecdir)
2407
Yu Watanabed25e1272019-01-03 02:32:57 +09002408install_data('src/sleep/sleep.conf',
2409 install_dir : pkgsysconfdir)
2410
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002411exe = executable('systemd-sysctl',
2412 'src/sysctl/sysctl.c',
2413 include_directories : includes,
2414 link_with : [libshared],
2415 install_rpath : rootlibexecdir,
2416 install : true,
2417 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002418public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002419
2420executable('systemd-ac-power',
2421 'src/ac-power/ac-power.c',
2422 include_directories : includes,
2423 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002424 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002425 install : true,
2426 install_dir : rootlibexecdir)
2427
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002428exe = executable('systemd-detect-virt',
2429 'src/detect-virt/detect-virt.c',
2430 include_directories : includes,
2431 link_with : [libshared],
2432 install_rpath : rootlibexecdir,
2433 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002434public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002435
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002436exe = executable('systemd-delta',
2437 'src/delta/delta.c',
2438 include_directories : includes,
2439 link_with : [libshared],
2440 install_rpath : rootlibexecdir,
2441 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002442public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002443
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002444exe = executable('systemd-escape',
2445 'src/escape/escape.c',
2446 include_directories : includes,
2447 link_with : [libshared],
2448 install_rpath : rootlibexecdir,
2449 install : true,
2450 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002451public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002452
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002453exe = executable('systemd-notify',
2454 'src/notify/notify.c',
2455 include_directories : includes,
2456 link_with : [libshared],
2457 install_rpath : rootlibexecdir,
2458 install : true,
2459 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002460public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002461
2462executable('systemd-volatile-root',
2463 'src/volatile-root/volatile-root.c',
2464 include_directories : includes,
2465 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002466 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002467 install : true,
2468 install_dir : rootlibexecdir)
2469
2470executable('systemd-cgroups-agent',
2471 'src/cgroups-agent/cgroups-agent.c',
2472 include_directories : includes,
2473 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002474 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002475 install : true,
2476 install_dir : rootlibexecdir)
2477
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002478exe = executable('systemd-id128',
2479 'src/id128/id128.c',
2480 include_directories : includes,
2481 link_with : [libshared],
2482 install_rpath : rootlibexecdir,
2483 install : true)
2484public_programs += exe
2485
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002486exe = executable('systemd-path',
2487 'src/path/path.c',
2488 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002489 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002490 install_rpath : rootlibexecdir,
2491 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002492public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002493
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002494exe = executable('systemd-ask-password',
2495 'src/ask-password/ask-password.c',
2496 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002497 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002498 install_rpath : rootlibexecdir,
2499 install : true,
2500 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002501public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002502
2503executable('systemd-reply-password',
2504 'src/reply-password/reply-password.c',
2505 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002506 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002507 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002508 install : true,
2509 install_dir : rootlibexecdir)
2510
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002511exe = executable('systemd-tty-ask-password-agent',
2512 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2513 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002514 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002515 install_rpath : rootlibexecdir,
2516 install : true,
2517 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002518public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002519
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002520exe = executable('systemd-cgls',
2521 'src/cgls/cgls.c',
2522 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002523 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002524 install_rpath : rootlibexecdir,
2525 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002526public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002527
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002528exe = executable('systemd-cgtop',
2529 'src/cgtop/cgtop.c',
2530 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002531 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002532 install_rpath : rootlibexecdir,
2533 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002534public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002535
2536executable('systemd-initctl',
2537 'src/initctl/initctl.c',
2538 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002539 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002540 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002541 install : true,
2542 install_dir : rootlibexecdir)
2543
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002544exe = executable('systemd-mount',
2545 'src/mount/mount-tool.c',
2546 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002547 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek7d991d42019-04-04 13:41:47 +02002548 dependencies: [libmount],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002549 install_rpath : rootlibexecdir,
2550 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002551public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002552
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002553meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002554 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002555
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002556exe = executable('systemd-run',
2557 'src/run/run.c',
2558 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002559 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002560 install_rpath : rootlibexecdir,
2561 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002562public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002563
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002564exe = executable('systemd-stdio-bridge',
2565 'src/stdio-bridge/stdio-bridge.c',
2566 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002567 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002568 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002569 install_rpath : rootlibexecdir,
2570 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002571public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002572
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002573exe = executable('busctl',
2574 'src/busctl/busctl.c',
2575 'src/busctl/busctl-introspect.c',
2576 'src/busctl/busctl-introspect.h',
2577 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002578 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002579 install_rpath : rootlibexecdir,
2580 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002581public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002582
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002583if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002584 exe = executable('systemd-sysusers',
2585 'src/sysusers/sysusers.c',
2586 include_directories : includes,
2587 link_with : [libshared],
2588 install_rpath : rootlibexecdir,
2589 install : true,
2590 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002591 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002592endif
2593
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002594if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002595 exe = executable('systemd-tmpfiles',
2596 'src/tmpfiles/tmpfiles.c',
2597 include_directories : includes,
2598 link_with : [libshared],
2599 dependencies : [libacl],
2600 install_rpath : rootlibexecdir,
2601 install : true,
2602 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002603 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002604
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002605 if want_tests != 'false'
2606 test('test-systemd-tmpfiles',
2607 test_systemd_tmpfiles_py,
2608 # https://github.com/mesonbuild/meson/issues/2681
2609 args : exe.full_path())
2610 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002611endif
2612
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002613if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002614 exe = executable('systemd-hwdb',
2615 'src/hwdb/hwdb.c',
2616 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2617 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002618 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002619 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002620 install : true,
2621 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002622 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002623endif
2624
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002625if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002626 executable('systemd-quotacheck',
2627 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002628 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002629 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002630 install_rpath : rootlibexecdir,
2631 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002632 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002633endif
2634
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002635exe = executable('systemd-socket-proxyd',
2636 'src/socket-proxy/socket-proxyd.c',
2637 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002638 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002639 dependencies : [threads],
2640 install_rpath : rootlibexecdir,
2641 install : true,
2642 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002643public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002644
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002645exe = executable('systemd-udevd',
2646 systemd_udevd_sources,
2647 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002648 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002649 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002650 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002651 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002652 dependencies : [versiondep,
2653 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002654 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002655 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002656 libacl,
2657 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002658 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002659 install : true,
2660 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002661public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002662
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002663exe = executable('udevadm',
2664 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002665 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002666 include_directories : includes,
2667 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002668 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002669 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002670 dependencies : [versiondep,
2671 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002672 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002673 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002674 libacl,
2675 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002676 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002677 install : true,
2678 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002679public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002680
2681executable('systemd-shutdown',
2682 systemd_shutdown_sources,
2683 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002684 link_with : [libcore_shared,
2685 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002686 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002687 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002688 install : true,
2689 install_dir : rootlibexecdir)
2690
2691executable('systemd-update-done',
2692 'src/update-done/update-done.c',
2693 include_directories : includes,
2694 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002695 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002696 install : true,
2697 install_dir : rootlibexecdir)
2698
2699executable('systemd-update-utmp',
2700 'src/update-utmp/update-utmp.c',
2701 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002702 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002703 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002704 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002705 install : true,
2706 install_dir : rootlibexecdir)
2707
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002708if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002709 executable('systemd-modules-load',
2710 'src/modules-load/modules-load.c',
2711 include_directories : includes,
2712 link_with : [libshared],
2713 dependencies : [libkmod],
2714 install_rpath : rootlibexecdir,
2715 install : true,
2716 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002717
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002718 meson.add_install_script('sh', '-c',
2719 mkdir_p.format(modulesloaddir))
2720 meson.add_install_script('sh', '-c',
2721 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002722endif
2723
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002724exe = executable('systemd-nspawn',
2725 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002726 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002727 link_with : [libcore_shared,
2728 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002729 libshared],
Franck Bui82384232019-03-22 11:09:08 +01002730 dependencies : [libblkid,
2731 libseccomp],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002732 install_rpath : rootlibexecdir,
2733 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002734public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002735
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002736if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002737 executable('systemd-networkd',
2738 systemd_networkd_sources,
Yu Watanabe737f1402019-10-30 17:02:15 +09002739 include_directories : network_include_dir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002740 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002741 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002742 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002743 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002744 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002745 install_rpath : rootlibexecdir,
2746 install : true,
2747 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002748
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002749 executable('systemd-networkd-wait-online',
2750 systemd_networkd_wait_online_sources,
2751 include_directories : includes,
2752 link_with : [libnetworkd_core,
2753 libshared],
2754 install_rpath : rootlibexecdir,
2755 install : true,
2756 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002757
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002758 exe = executable('networkctl',
2759 networkctl_sources,
2760 include_directories : includes,
2761 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002762 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002763 install_rpath : rootlibexecdir,
2764 install : true,
2765 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002766 public_programs += exe
Yu Watanabe426c1d32019-07-13 03:35:04 +09002767
2768 executable('systemd-network-generator',
2769 network_generator_sources,
2770 include_directories : includes,
2771 link_with : [libshared],
2772 install_rpath : rootlibexecdir,
2773 install : true,
2774 install_dir : rootlibexecdir)
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002775endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002776
2777executable('systemd-sulogin-shell',
2778 ['src/sulogin-shell/sulogin-shell.c'],
2779 include_directories : includes,
2780 link_with : [libshared],
2781 install_rpath : rootlibexecdir,
2782 install : true,
2783 install_dir : rootlibexecdir)
2784
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002785############################################################
2786
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002787custom_target(
2788 'systemd-runtest.env',
2789 output : 'systemd-runtest.env',
2790 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05002791 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002792 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002793 '} >@OUTPUT@'],
2794 build_by_default : true)
2795
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002796foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002797 sources = tuple[0]
2798 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2799 dependencies = tuple[2]
2800 condition = tuple.length() >= 4 ? tuple[3] : ''
2801 type = tuple.length() >= 5 ? tuple[4] : ''
2802 defs = tuple.length() >= 6 ? tuple[5] : []
2803 incs = tuple.length() >= 7 ? tuple[6] : includes
2804 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002805
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002806 name = sources[0].split('/')[-1].split('.')[0]
2807 if type.startswith('timeout=')
2808 timeout = type.split('=')[1].to_int()
2809 type = ''
2810 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002811
2812 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002813 exe = executable(
2814 name,
2815 sources,
2816 include_directories : incs,
2817 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002818 dependencies : [versiondep,
2819 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002820 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002821 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002822 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002823 install : install_tests,
2824 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002825
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002826 if type == 'manual'
2827 message('@0@ is a manual test'.format(name))
2828 elif type == 'unsafe' and want_tests != 'unsafe'
2829 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002830 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002831 test(name, exe,
2832 env : test_env,
2833 timeout : timeout)
2834 endif
2835 else
2836 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2837 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002838endforeach
2839
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002840exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002841 'test-libsystemd-sym',
2842 test_libsystemd_sym_c,
2843 include_directories : includes,
2844 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002845 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002846 install : install_tests,
2847 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002848if want_tests != 'false'
2849 test('test-libsystemd-sym', exe)
2850endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002851
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002852exe = executable(
2853 'test-libsystemd-static-sym',
2854 test_libsystemd_sym_c,
2855 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002856 link_with : [install_libsystemd_static],
2857 dependencies : [threads], # threads is already included in dependencies on the library,
2858 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002859 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002860 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002861 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002862if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002863 test('test-libsystemd-static-sym', exe)
2864endif
2865
2866exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002867 'test-libudev-sym',
2868 test_libudev_sym_c,
2869 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002870 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002871 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002872 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002873 install : install_tests,
2874 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002875if want_tests != 'false'
2876 test('test-libudev-sym', exe)
2877endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002878
2879exe = executable(
2880 'test-libudev-static-sym',
2881 test_libudev_sym_c,
2882 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002883 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002884 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002885 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002886 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002887 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002888if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002889 test('test-libudev-static-sym', exe)
2890endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002891
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002892############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002893
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002894fuzzer_exes = []
2895
Michael Olbrich59967402018-11-11 11:27:35 +01002896if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002897foreach tuple : fuzzers
2898 sources = tuple[0]
2899 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2900 dependencies = tuple[2]
2901 defs = tuple.length() >= 4 ? tuple[3] : []
2902 incs = tuple.length() >= 5 ? tuple[4] : includes
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002903 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002904
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002905 if want_ossfuzz or want_fuzzbuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002906 dependencies += fuzzing_engine
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002907 elif want_libfuzzer
2908 if fuzzing_engine.found()
2909 dependencies += fuzzing_engine
2910 else
2911 link_args += ['-fsanitize=fuzzer']
2912 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002913 else
2914 sources += 'src/fuzz/fuzz-main.c'
2915 endif
2916
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00002917 if want_fuzzbuzz
2918 sources += 'src/fuzz/fuzzer-entry-point.c'
2919 endif
2920
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002921 name = sources[0].split('/')[-1].split('.')[0]
2922
2923 fuzzer_exes += executable(
2924 name,
2925 sources,
2926 include_directories : [incs, include_directories('src/fuzz')],
2927 link_with : link_with,
2928 dependencies : dependencies,
2929 c_args : defs,
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002930 link_args: link_args,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002931 install : false)
2932endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002933endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002934
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01002935run_target('fuzzers',
2936 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002937 command : ['true'])
2938
2939############################################################
2940
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002941make_directive_index_py = find_program('tools/make-directive-index.py')
2942make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002943xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002944hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek62d39992019-11-15 11:32:24 +01002945autosuspend_update_sh = find_program('tools/meson-autosuspend-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002946
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002947subdir('sysctl.d')
2948subdir('sysusers.d')
2949subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmek4f10b802019-10-08 16:52:10 +02002950subdir('hwdb.d')
2951subdir('units')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002952subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002953subdir('network')
2954subdir('man')
2955subdir('shell-completion/bash')
2956subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002957subdir('docs/sysvinit')
2958subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002959
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002960install_subdir('factory/etc',
2961 install_dir : factorydir)
2962
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002963install_data('xorg/50-systemd-user.sh',
2964 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002965install_data('modprobe.d/systemd.conf',
2966 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002967install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002968 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002969 'NEWS',
2970 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302971 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002972 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002973 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302974 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002975 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002976 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002977 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002978 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2979 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002980
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002981meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2982meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2983
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002984############################################################
2985
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002986meson_check_help = find_program('tools/meson-check-help.sh')
2987
2988foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002989 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002990 if want_tests != 'false'
2991 test('check-help-' + name,
2992 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002993 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002994 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002995endforeach
2996
2997############################################################
2998
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02002999check_directives_sh = find_program('tools/check-directives.sh')
3000
3001if want_tests != 'false'
3002 test('check-directives',
3003 check_directives_sh,
3004 args : project_source_root)
3005endif
3006
3007############################################################
3008
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003009# Enable tests for all supported sanitizers
3010foreach tuple : sanitizers
3011 sanitizer = tuple[0]
3012 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003013
Yu Watanabe7a6397d2018-05-15 20:18:24 +09003014 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003015 prev = ''
3016 foreach p : fuzz_regression_tests
3017 b = p.split('/')[-2]
3018 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003019
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003020 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003021
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003022 if name != prev
3023 if want_tests == 'false'
3024 message('Not compiling @0@ because tests is set to false'.format(name))
3025 elif slow_tests
3026 exe = custom_target(
3027 name,
3028 output : name,
3029 depends : build,
3030 command : [env, 'ln', '-fs',
3031 join_paths(build.full_path(), b),
3032 '@OUTPUT@'],
3033 build_by_default : true)
3034 else
3035 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3036 endif
3037 endif
3038 prev = name
3039
3040 if want_tests != 'false' and slow_tests
3041 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3042 env,
3043 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003044 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003045 endif
3046 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003047 endif
3048endforeach
3049
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003050
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003051############################################################
3052
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003053if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003054 all_files = run_command(
3055 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003056 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003057 'ls-files',
3058 ':/*.[ch]'])
3059 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003060
userwithuide85a6902017-08-09 13:41:44 +00003061 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003062 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003063 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003064 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003065 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003066 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003067 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003068endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003069
3070if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003071 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003072 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003073 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003074 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003075endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003076
3077if git.found()
3078 git_head = run_command(
3079 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003080 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003081 'rev-parse', 'HEAD']).stdout().strip()
3082 git_head_short = run_command(
3083 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003084 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003085 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3086
3087 run_target(
3088 'git-snapshot',
3089 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003090 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003091 git_head_short),
3092 '--prefix', 'systemd-@0@/'.format(git_head),
3093 'HEAD'])
3094endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003095
3096############################################################
3097
Lennart Poettering51b13862017-12-20 12:51:14 +01003098meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3099run_target(
3100 'check-api-docs',
3101 depends : [man, libsystemd, libudev],
3102 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3103
3104############################################################
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003105watchdog_opt = service_watchdog == '' ? 'disabled' : service_watchdog
Lennart Poettering51b13862017-12-20 12:51:14 +01003106
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003107status = [
3108 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3109
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003110 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003111 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003112 'prefix directory: @0@'.format(prefixdir),
3113 'rootprefix directory: @0@'.format(rootprefixdir),
3114 'sysconf directory: @0@'.format(sysconfdir),
3115 'include directory: @0@'.format(includedir),
3116 'lib directory: @0@'.format(libdir),
3117 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003118 'SysV init scripts: @0@'.format(sysvinit_path),
3119 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003120 'PAM modules directory: @0@'.format(pamlibdir),
3121 'PAM configuration directory: @0@'.format(pamconfdir),
3122 'RPM macros directory: @0@'.format(rpmmacrosdir),
3123 'modprobe.d directory: @0@'.format(modprobedir),
3124 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3125 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3126 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3127 'bash completions directory: @0@'.format(bashcompletiondir),
3128 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003129 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003130 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3131 get_option('debug-tty')),
3132 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003133 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003134 'maximum system UID: @0@'.format(system_uid_max),
3135 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003136 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3137 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3138 'minimum container UID base: @0@'.format(container_uid_base_min),
3139 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003140 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003141 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003142 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003143 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003144 'nobody user name: @0@'.format(nobody_user),
3145 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003146 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003147 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003148
3149 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003150 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003151 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003152 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003153 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +02003154 'default locale: @0@'.format(default_locale),
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +01003155 'default user $PATH: @0@'.format(default_user_path_display),
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003156 'systemd service watchdog: @0@'.format(watchdog_opt)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003157
3158alt_dns_servers = '\n '.join(dns_servers.split(' '))
3159alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3160status += [
3161 'default DNS servers: @0@'.format(alt_dns_servers),
3162 'default NTP servers: @0@'.format(alt_ntp_servers)]
3163
3164alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3165 '@@0@'.format(time_epoch)).stdout().strip()
3166status += [
3167 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3168
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003169status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003170 'static libsystemd: @0@'.format(static_libsystemd),
3171 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003172
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003173# TODO:
3174# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3175# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3176# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3177
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003178if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003179 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003180
3181 if have_gnu_efi
3182 status += [
3183 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003184 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003185 'EFI lib directory: @0@'.format(efi_libdir),
3186 'EFI lds directory: @0@'.format(efi_ldsdir),
3187 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003188 endif
3189endif
3190
3191found = []
3192missing = []
3193
3194foreach tuple : [
3195 ['libcryptsetup'],
3196 ['PAM'],
3197 ['AUDIT'],
3198 ['IMA'],
3199 ['AppArmor'],
3200 ['SELinux'],
3201 ['SECCOMP'],
3202 ['SMACK'],
3203 ['zlib'],
3204 ['xz'],
3205 ['lz4'],
3206 ['bzip2'],
3207 ['ACL'],
3208 ['gcrypt'],
3209 ['qrencode'],
3210 ['microhttpd'],
3211 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003212 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003213 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003214 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003215 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003216 ['libidn'],
3217 ['libiptc'],
3218 ['elfutils'],
3219 ['binfmt'],
3220 ['vconsole'],
3221 ['quotacheck'],
3222 ['tmpfiles'],
3223 ['environment.d'],
3224 ['sysusers'],
3225 ['firstboot'],
3226 ['randomseed'],
3227 ['backlight'],
3228 ['rfkill'],
3229 ['logind'],
3230 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003231 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003232 ['importd'],
3233 ['hostnamed'],
3234 ['timedated'],
3235 ['timesyncd'],
3236 ['localed'],
3237 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003238 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003239 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3240 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003241 ['coredump'],
Eric DeVolder9b4abc62019-05-16 08:59:01 -05003242 ['pstore'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003243 ['polkit'],
3244 ['legacy pkla', install_polkit_pkla],
3245 ['efi'],
3246 ['gnu-efi', have_gnu_efi],
3247 ['kmod'],
3248 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003249 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003250 ['blkid'],
3251 ['dbus'],
3252 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003253 ['nss-myhostname'],
3254 ['nss-mymachines'],
3255 ['nss-resolve'],
3256 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003257 ['hwdb'],
3258 ['tpm'],
3259 ['man pages', want_man],
3260 ['html pages', want_html],
3261 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003262 ['SysV compat'],
3263 ['utmp'],
3264 ['ldconfig'],
3265 ['hibernate'],
3266 ['adm group', get_option('adm-group')],
3267 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003268 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003269 ['debug hashmap'],
3270 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003271 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003272 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003273 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003274 ['link-udev-shared', get_option('link-udev-shared')],
3275 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003276]
3277
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003278 if tuple.length() >= 2
3279 cond = tuple[1]
3280 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003281 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3282 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003283 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003284 endif
3285 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003286 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003287 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003288 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003289 endif
3290endforeach
3291
3292status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003293 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003294 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003295 '',
3296 'disabled features: @0@'.format(', '.join(missing)),
3297 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003298message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003299
3300if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003301 warning('\n' +
3302 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3303 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3304 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003305endif