blob: 21d6968abdf47e87af26e7b6a83103748f221480 [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>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400520]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400521
Lennart Poettering85db59b2017-12-25 12:01:14 +0100522 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200523 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400524endforeach
525
Lennart Poettering85db59b2017-12-25 12:01:14 +0100526if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200527 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200528 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400529else
530 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200531 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200532 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400533endif
534
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400535#####################################################################
536
Davide Cavalca1485aac2019-02-27 11:19:07 -0500537vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
538 project_source_root,
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100539 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100540 meson.project_version()]
541
Louis Taylord1084aa2019-01-21 21:45:36 +0000542version_h = vcs_tag(
543 input : 'src/version/version.h.in',
544 output : 'version.h',
545 command: vcs_tagger)
546
547versiondep = declare_dependency(sources: version_h)
548
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400549sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400550awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400551m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400552stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400553git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100554env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100555perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400556
Davide Cavalca1485aac2019-02-27 11:19:07 -0500557meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400558mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400559test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
560splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400561
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400562# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
563# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500564progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400565 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400566 ['kmod', '/usr/bin/kmod' ],
567 ['kexec', '/usr/sbin/kexec' ],
568 ['sulogin', '/usr/sbin/sulogin' ],
569 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
570 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
571 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
572 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
Michael Biebl6db90462019-07-18 01:24:00 +0200573 ['nologin', '/usr/sbin/nologin', ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400574 ]
575foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400576 path = get_option(prog[0] + '-path')
577 if path != ''
578 message('Using @1@ for @0@'.format(prog[0], path))
579 else
580 exe = find_program(prog[0],
581 '/usr/sbin/' + prog[0],
582 '/sbin/' + prog[0],
583 required: false)
584 path = exe.found() ? exe.path() : prog[1]
585 endif
586 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
587 conf.set_quoted(name, path)
588 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400589endforeach
590
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500591conf.set_quoted('TELINIT', get_option('telinit-path'))
592
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400593if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100594 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400595endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400596
597############################################################
598
599gperf = find_program('gperf')
600
601gperf_test_format = '''
602#include <string.h>
603const char * in_word_set(const char *, @0@);
604@1@
605'''
606gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
607gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
608gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
609if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400610 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400611else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400612 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
613 if cc.compiles(gperf_test)
614 gperf_len_type = 'unsigned'
615 else
616 error('unable to determine gperf len type')
617 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400618endif
619message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400620conf.set('GPERF_LEN_TYPE', gperf_len_type,
621 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400622
623############################################################
624
625if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400626 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400627endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100628foreach header : ['crypt.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400629 'linux/memfd.h',
630 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200631 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400632 'valgrind/memcheck.h',
633 'valgrind/valgrind.h',
634 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400635
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200636 conf.set10('HAVE_' + header.underscorify().to_upper(),
637 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400638endforeach
639
640############################################################
641
642conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400643conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
644gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400645
646default_hierarchy = get_option('default-hierarchy')
647conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
648 description : 'default cgroup hierarchy as string')
649if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400650 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400651elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400652 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400653else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400654 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400655endif
656
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100657default_net_naming_scheme = get_option('default-net-naming-scheme')
658conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
659
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400660time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900661if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400662 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900663 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400664endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400665conf.set('TIME_EPOCH', time_epoch)
666
667system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900668if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400669 system_uid_max = run_command(
670 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800671 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
672 '/etc/login.defs').stdout().strip()
673 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900674 system_uid_max = 999
675 else
676 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800677 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400678endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400679conf.set('SYSTEM_UID_MAX', system_uid_max)
680substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400682system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900683if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400684 system_gid_max = run_command(
685 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800686 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
687 '/etc/login.defs').stdout().strip()
688 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900689 system_gid_max = 999
690 else
691 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800692 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400693endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400694conf.set('SYSTEM_GID_MAX', system_gid_max)
695substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400696
Yu Watanabeac093402018-05-10 16:04:16 +0900697dynamic_uid_min = get_option('dynamic-uid-min')
698dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100699conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
700conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
701substs.set('dynamicuidmin', dynamic_uid_min)
702substs.set('dynamicuidmax', dynamic_uid_max)
703
Yu Watanabeac093402018-05-10 16:04:16 +0900704container_uid_base_min = get_option('container-uid-base-min')
705container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100706conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
707conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
708substs.set('containeruidbasemin', container_uid_base_min)
709substs.set('containeruidbasemax', container_uid_base_max)
710
Lennart Poetteringafde4572017-12-05 11:00:24 +0100711nobody_user = get_option('nobody-user')
712nobody_group = get_option('nobody-group')
713
Chen Qi2484bff2018-07-23 14:53:09 +0800714if not meson.is_cross_build()
715 getent_result = run_command('getent', 'passwd', '65534')
716 if getent_result.returncode() == 0
717 name = getent_result.stdout().split(':')[0]
718 if name != nobody_user
719 warning('\n' +
720 '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) +
721 'Your build will result in an user table setup that is incompatible with the local system.')
722 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100723 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800724 id_result = run_command('id', '-u', nobody_user)
725 if id_result.returncode() == 0
726 id = id_result.stdout().to_int()
727 if id != 65534
728 warning('\n' +
729 '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) +
730 'Your build will result in an user table setup that is incompatible with the local system.')
731 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100732 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100733
Chen Qi2484bff2018-07-23 14:53:09 +0800734 getent_result = run_command('getent', 'group', '65534')
735 if getent_result.returncode() == 0
736 name = getent_result.stdout().split(':')[0]
737 if name != nobody_group
738 warning('\n' +
739 '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) +
740 'Your build will result in an group table setup that is incompatible with the local system.')
741 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100742 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800743 id_result = run_command('id', '-g', nobody_group)
744 if id_result.returncode() == 0
745 id = id_result.stdout().to_int()
746 if id != 65534
747 warning('\n' +
748 '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) +
749 'Your build will result in an group table setup that is incompatible with the local system.')
750 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100751 endif
752endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900753if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900754 warning('\n' +
755 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
756 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900757endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100758
759conf.set_quoted('NOBODY_USER_NAME', nobody_user)
760conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900761substs.set('NOBODY_USER_NAME', nobody_user)
762substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100763
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400764tty_gid = get_option('tty-gid')
765conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400766substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400767
Ikey Doherty84786b82017-12-03 12:28:23 +0000768# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900769users_gid = get_option('users-gid')
770substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000771
Yu Watanabe348b4432018-05-07 18:17:35 +0900772conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
773conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400774
Michael Bieblace5e312018-07-13 23:36:13 +0200775dev_kvm_mode = get_option('dev-kvm-mode')
776substs.set('DEV_KVM_MODE', dev_kvm_mode)
777conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100778group_render_mode = get_option('group-render-mode')
779substs.set('GROUP_RENDER_MODE', group_render_mode)
780conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400781
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400782kill_user_processes = get_option('default-kill-user-processes')
783conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100784conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400785substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400786
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400787dns_servers = get_option('dns-servers')
788conf.set_quoted('DNS_SERVERS', dns_servers)
789substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400790
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400791ntp_servers = get_option('ntp-servers')
792conf.set_quoted('NTP_SERVERS', ntp_servers)
793substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400794
Dave Reisner8ca9e922018-12-28 07:38:36 -0500795default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900796if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800797 if not meson.is_cross_build()
798 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
799 default_locale = run_command(choose_default_locale_sh).stdout().strip()
800 else
801 default_locale = 'C.UTF-8'
802 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900803endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500804conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
805
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400806conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
807
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200808service_watchdog = get_option('service-watchdog')
Anita Zhang7bc9ea52019-10-25 15:46:21 -0700809watchdog_value = service_watchdog == '' ? '' : 'WatchdogSec=' + service_watchdog
810substs.set('SERVICE_WATCHDOG', watchdog_value)
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200811
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400812substs.set('SUSHELL', get_option('debug-shell'))
813substs.set('DEBUGTTY', get_option('debug-tty'))
Jan Synacek93912e82019-04-25 12:19:16 +0200814conf.set_quoted('DEBUGTTY', get_option('debug-tty'))
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400815
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200816enable_debug_hashmap = false
817enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900818enable_debug_siphash = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200819foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900820 if name == 'hashmap'
821 enable_debug_hashmap = true
822 elif name == 'mmap-cache'
823 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900824 elif name == 'siphash'
825 enable_debug_siphash = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900826 else
827 message('unknown debug option "@0@", ignoring'.format(name))
828 endif
829endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200830conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
831conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900832conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400833
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200834conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200835conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200836
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100837default_user_path = get_option('user-path')
838if default_user_path != ''
839 conf.set_quoted('DEFAULT_USER_PATH', default_user_path)
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100840 default_user_path_display = default_user_path
841else
842 # meson 0.49 fails when ?: is used in .format()
843 default_user_path_display = '(same as system services)'
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100844endif
845
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100846
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400847#####################################################################
848
849threads = dependency('threads')
850librt = cc.find_library('rt')
851libm = cc.find_library('m')
852libdl = cc.find_library('dl')
853libcrypt = cc.find_library('crypt')
854
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400855libcap = dependency('libcap', required : false)
856if not libcap.found()
857 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
858 libcap = cc.find_library('cap')
859endif
860
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400861libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100862 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400863
864want_seccomp = get_option('seccomp')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000865if want_seccomp != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400866 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400867 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400868 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200869 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400870else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200871 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400872 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400873endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200874conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400875
876want_selinux = get_option('selinux')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000877if want_selinux != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400878 libselinux = dependency('libselinux',
879 version : '>= 2.1.9',
880 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200881 have = libselinux.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 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400885endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200886conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400887
888want_apparmor = get_option('apparmor')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000889if want_apparmor != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400890 libapparmor = dependency('libapparmor',
891 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200892 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400893else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200894 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400895 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400896endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200897conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400898
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400899smack_run_label = get_option('smack-run-label')
900if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400901 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400902endif
903
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400904want_polkit = get_option('polkit')
905install_polkit = false
906install_polkit_pkla = false
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000907if want_polkit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400908 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400909
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400910 libpolkit = dependency('polkit-gobject-1',
911 required : false)
912 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
913 message('Old polkit detected, will install pkla files')
914 install_polkit_pkla = true
915 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400916endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200917conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400918
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400919want_acl = get_option('acl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000920if want_acl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400921 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400923else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200924 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400925 libacl = []
926endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200927conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400928
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400929want_audit = get_option('audit')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000930if want_audit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400931 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200932 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400933else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200934 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400935 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400936endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200937conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400938
939want_blkid = get_option('blkid')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000940if want_blkid != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400941 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200942 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400943else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200944 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400945 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400946endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200947conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400948
949want_kmod = get_option('kmod')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000950if want_kmod != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400951 libkmod = dependency('libkmod',
952 version : '>= 15',
953 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200954 have = libkmod.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 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400958endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200959conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400960
961want_pam = get_option('pam')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000962if want_pam != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400963 libpam = cc.find_library('pam', required : want_pam == 'true')
964 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200965 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400966else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200967 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400968 libpam = []
969 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400970endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200971conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400972
973want_microhttpd = get_option('microhttpd')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000974if want_microhttpd != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400975 libmicrohttpd = dependency('libmicrohttpd',
976 version : '>= 0.9.33',
977 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200978 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400979else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200980 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400981 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400982endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200983conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400984
985want_libcryptsetup = get_option('libcryptsetup')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000986if want_libcryptsetup != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400987 libcryptsetup = dependency('libcryptsetup',
Jay Strictd90874b2019-09-26 15:54:29 +0200988 version : '>= 2.0.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400989 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200990 have = libcryptsetup.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 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400994endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200995conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400996
997want_libcurl = get_option('libcurl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000998if want_libcurl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400999 libcurl = dependency('libcurl',
1000 version : '>= 7.32.0',
1001 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001002 have = libcurl.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 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001006endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001007conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001008
1009want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001010want_libidn2 = get_option('libidn2')
1011if want_libidn == 'true' and want_libidn2 == 'true'
1012 error('libidn and libidn2 cannot be requested simultaneously')
1013endif
1014
Yu Watanabe1b931392019-06-29 03:13:30 +09001015if want_libidn2 != 'false' and want_libidn != 'true' and not skip_deps
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001016 libidn = dependency('libidn2',
1017 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001018 have = libidn.found()
1019else
1020 have = false
Yu Watanabe1b931392019-06-29 03:13:30 +09001021 libidn = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001022endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001023conf.set10('HAVE_LIBIDN2', have)
Yu Watanabe1b931392019-06-29 03:13:30 +09001024if not have and want_libidn != 'false' and not skip_deps
1025 # libidn is used for both libidn and libidn2 objects
1026 libidn = dependency('libidn',
1027 required : want_libidn == 'true')
1028 have = libidn.found()
1029else
1030 have = false
1031endif
1032conf.set10('HAVE_LIBIDN', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001033
1034want_libiptc = get_option('libiptc')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001035if want_libiptc != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001036 libiptc = dependency('libiptc',
1037 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001038 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001039else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001040 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001041 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001042endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001043conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001044
1045want_qrencode = get_option('qrencode')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001046if want_qrencode != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001047 libqrencode = dependency('libqrencode',
1048 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001049 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001050else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001051 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001052 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001053endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001054conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001055
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001056want_gcrypt = get_option('gcrypt')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001057if want_gcrypt != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001058 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1059 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001060 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001061else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001062 have = false
1063endif
1064if not have
1065 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001066 libgcrypt = []
1067 libgpg_error = []
1068endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001069conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001070
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001071want_gnutls = get_option('gnutls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001072if want_gnutls != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001073 libgnutls = dependency('gnutls',
1074 version : '>= 3.1.4',
1075 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001076 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001077else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001079 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001080endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001081conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001082
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001083want_openssl = get_option('openssl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001084if want_openssl != 'false' and not skip_deps
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001085 libopenssl = dependency('openssl',
1086 version : '>= 1.1.0',
1087 required : want_openssl == 'true')
1088 have = libopenssl.found()
1089else
1090 have = false
1091 libopenssl = []
1092endif
1093conf.set10('HAVE_OPENSSL', have)
1094
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001095want_elfutils = get_option('elfutils')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001096if want_elfutils != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001097 libdw = dependency('libdw',
1098 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001099 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001100else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001101 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001102 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001103endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001104conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001105
1106want_zlib = get_option('zlib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001107if want_zlib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001108 libz = dependency('zlib',
1109 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001110 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001111else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001112 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001113 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001114endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001115conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001116
1117want_bzip2 = get_option('bzip2')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001118if want_bzip2 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001119 libbzip2 = cc.find_library('bz2',
1120 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001121 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001122else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001123 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001124 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001125endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001126conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001127
1128want_xz = get_option('xz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001129if want_xz != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001130 libxz = dependency('liblzma',
1131 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001132 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001133else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001134 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001135 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001136endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001137conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001138
1139want_lz4 = get_option('lz4')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001140if want_lz4 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001141 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001142 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001143 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001144 have = liblz4.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 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001148endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001149conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001150
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001151want_xkbcommon = get_option('xkbcommon')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001152if want_xkbcommon != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001153 libxkbcommon = dependency('xkbcommon',
1154 version : '>= 0.3.0',
1155 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001156 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001157else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001158 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001159 libxkbcommon = []
1160endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001161conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001162
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001163want_pcre2 = get_option('pcre2')
1164if want_pcre2 != 'false'
1165 libpcre2 = dependency('libpcre2-8',
1166 required : want_pcre2 == 'true')
1167 have = libpcre2.found()
1168else
1169 have = false
1170 libpcre2 = []
1171endif
1172conf.set10('HAVE_PCRE2', have)
1173
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001174want_glib = get_option('glib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001175if want_glib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001176 libglib = dependency('glib-2.0',
1177 version : '>= 2.22.0',
1178 required : want_glib == 'true')
1179 libgobject = dependency('gobject-2.0',
1180 version : '>= 2.22.0',
1181 required : want_glib == 'true')
1182 libgio = dependency('gio-2.0',
1183 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001184 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001185else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001186 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001187 libglib = []
1188 libgobject = []
1189 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001190endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001191conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001192
1193want_dbus = get_option('dbus')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001194if want_dbus != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001195 libdbus = dependency('dbus-1',
1196 version : '>= 1.3.2',
1197 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001198 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001199else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001200 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001201 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001202endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001203conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001204
Yu Watanabe42303dc2017-06-18 05:22:32 +09001205default_dnssec = get_option('default-dnssec')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001206if skip_deps
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001207 default_dnssec = 'no'
1208endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001209if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001210 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1211 default_dnssec = 'no'
1212endif
1213conf.set('DEFAULT_DNSSEC_MODE',
1214 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1215substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1216
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001217dns_over_tls = get_option('dns-over-tls')
1218if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001219 if dns_over_tls == 'openssl'
1220 have_gnutls = false
1221 else
Iwan Timmer38e053c2019-10-29 20:26:05 +01001222 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.6.0'))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001223 if dns_over_tls == 'gnutls' and not have_gnutls
1224 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1225 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001226 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001227 if dns_over_tls == 'gnutls' or have_gnutls
1228 have_openssl = false
1229 else
1230 have_openssl = conf.get('HAVE_OPENSSL') == 1
1231 if dns_over_tls != 'auto' and not have_openssl
1232 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
Yu Watanabeb349bc52019-06-17 10:22:54 +09001233 error('DNS-over-TLS support was requested@0@, but dependencies are not available'.format(str))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001234 endif
1235 endif
1236 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001237else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001238 have = false
1239 have_gnutls = false
1240 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001241endif
1242conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001243conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1244conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001245
Iwan Timmerc9299be2018-06-13 20:26:24 +02001246default_dns_over_tls = get_option('default-dns-over-tls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001247if skip_deps
Iwan Timmerc9299be2018-06-13 20:26:24 +02001248 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001249endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001250if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
Iwan Timmer4310bfc2019-02-18 20:41:46 +01001251 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 +02001252 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001253endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001254conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1255 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1256substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001257
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001258want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001259if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001260 have = (conf.get('HAVE_LIBCURL') == 1 and
1261 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001262 conf.get('HAVE_XZ') == 1 and
1263 conf.get('HAVE_GCRYPT') == 1)
1264 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001265 error('importd support was requested, but dependencies are not available')
1266 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001267else
1268 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001269endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001270conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001271
1272want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001273if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001274 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1275 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001276 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1277 # it's possible to build one without the other. Complain only if
Ben Boeckel5238e952019-04-26 20:22:40 -04001278 # support was explicitly requested. The auxiliary files like sysusers
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001279 # config should be installed when any of the programs are built.
1280 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1281 error('remote support was requested, but dependencies are not available')
1282 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001283 have = have_deps[0] or have_deps[1]
1284else
1285 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001286endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001287conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001288
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001289foreach term : ['utmp',
1290 'hibernate',
1291 'environment-d',
1292 'binfmt',
1293 'coredump',
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001294 'pstore',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001295 'resolve',
1296 'logind',
1297 'hostnamed',
1298 'localed',
1299 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001300 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001301 'networkd',
1302 'timedated',
1303 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001304 'firstboot',
1305 'randomseed',
1306 'backlight',
1307 'vconsole',
1308 'quotacheck',
1309 'sysusers',
1310 'tmpfiles',
1311 'hwdb',
1312 'rfkill',
1313 'ldconfig',
1314 'efi',
1315 'tpm',
1316 'ima',
1317 'smack',
1318 'gshadow',
1319 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001320 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001321 'nss-systemd']
1322 have = get_option(term)
1323 name = 'ENABLE_' + term.underscorify().to_upper()
1324 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001325endforeach
1326
Yu Watanabe08540a92018-07-18 09:25:57 +09001327foreach tuple : [['nss-mymachines', 'machined'],
1328 ['nss-resolve', 'resolve']]
1329 want = get_option(tuple[0])
1330 if want != 'false'
1331 have = get_option(tuple[1])
1332 if want == 'true' and not have
1333 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1334 endif
1335 else
1336 have = false
1337 endif
1338 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1339 conf.set10(name, have)
1340endforeach
1341
1342enable_nss = false
1343foreach term : ['ENABLE_NSS_MYHOSTNAME',
1344 'ENABLE_NSS_MYMACHINES',
1345 'ENABLE_NSS_RESOLVE',
1346 'ENABLE_NSS_SYSTEMD']
1347 if conf.get(term) == 1
1348 enable_nss = true
1349 endif
1350endforeach
1351conf.set10('ENABLE_NSS', enable_nss)
1352
Yu Watanabe348b4432018-05-07 18:17:35 +09001353conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001354
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001355tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001356fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001357
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001358conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001359
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001360#####################################################################
1361
1362if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001363 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001364
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001365 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001366 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001367 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001368 elif efi_arch == 'x86_64'
1369 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001370 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001371 elif efi_arch == 'arm'
1372 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001373 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001374 elif efi_arch == 'aarch64'
1375 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001376 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001377 else
1378 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001379 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001380 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001381
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001382 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001383 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001384
Yu Watanabeac093402018-05-10 16:04:16 +09001385 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001386else
1387 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001388endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001389conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001390
1391#####################################################################
1392
1393config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001394 output : 'config.h',
1395 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001396
Yu Watanabe348b4432018-05-07 18:17:35 +09001397meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1398
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001399includes = include_directories('src/basic',
Zbigniew Jędrzejewski-Szmek91b08bb2019-07-02 13:01:23 +02001400 'src/boot',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001401 'src/shared',
1402 'src/systemd',
1403 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001404 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001405 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001406 'src/resolve',
1407 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001408 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001409 'src/login',
1410 'src/udev',
1411 'src/libudev',
1412 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001413 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001414 'src/libsystemd/sd-bus',
1415 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001416 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001417 'src/libsystemd/sd-hwdb',
1418 'src/libsystemd/sd-id128',
1419 'src/libsystemd/sd-netlink',
1420 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001421 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001422 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001423 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001424
1425add_project_arguments('-include', 'config.h', language : 'c')
1426
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001427generate_gperfs = find_program('tools/generate-gperfs.py')
1428
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001429subdir('po')
1430subdir('catalog')
1431subdir('src/systemd')
1432subdir('src/basic')
1433subdir('src/libsystemd')
1434subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001435subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001436subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001437
1438libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001439 'journal-core',
1440 libjournal_core_sources,
1441 journald_gperf_c,
1442 include_directories : includes,
1443 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001444
Davide Cavalca1485aac2019-02-27 11:19:07 -05001445libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001446libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001447 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001448 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001449 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001450 include_directories : includes,
1451 link_args : ['-shared',
1452 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001453 link_with : [libbasic,
1454 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001455 link_whole : [libsystemd_static,
1456 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001457 dependencies : [threads,
1458 librt,
1459 libxz,
1460 liblz4],
1461 link_depends : libsystemd_sym,
1462 install : true,
1463 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001464
Davide Cavalca70848ec2018-04-09 02:43:35 -07001465static_libsystemd = get_option('static-libsystemd')
1466static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1467
1468install_libsystemd_static = static_library(
1469 'systemd',
1470 libsystemd_sources,
1471 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001472 basic_sources,
1473 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001474 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001475 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001476 build_by_default : static_libsystemd != 'false',
1477 install : static_libsystemd != 'false',
1478 install_dir : rootlibdir,
1479 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1480 dependencies : [threads,
1481 librt,
1482 libxz,
1483 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001484 libcap,
1485 libblkid,
1486 libmount,
1487 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001488 libgcrypt],
1489 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1490
Mario Limonciellob61d7772019-09-09 22:49:35 +01001491#Generate autosuspend rules
1492make_autosuspend_rules_py = find_program('tools/make-autosuspend-rules.py')
1493
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001494############################################################
1495
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001496# binaries that have --help and are intended for use by humans,
1497# usually, but not always, installed in /bin.
1498public_programs = []
1499
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001500subdir('src/libudev')
1501subdir('src/shared')
1502subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001503subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001504subdir('src/udev')
1505subdir('src/network')
1506
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001507subdir('src/analyze')
1508subdir('src/journal-remote')
1509subdir('src/coredump')
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001510subdir('src/pstore')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001511subdir('src/hostname')
1512subdir('src/import')
1513subdir('src/kernel-install')
1514subdir('src/locale')
1515subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001516subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001517subdir('src/nspawn')
1518subdir('src/resolve')
1519subdir('src/timedate')
1520subdir('src/timesync')
1521subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001522subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001523
1524subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001525subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmekef2ad302019-10-08 16:43:18 +02001526subdir('rules.d')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001527subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001528
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001529############################################################
1530
1531# only static linking apart from libdl, to make sure that the
1532# module is linked to all libraries that it uses.
1533test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001534 'test-dlopen',
1535 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001536 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001537 include_directories : includes,
1538 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001539 dependencies : [libdl],
1540 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001541
Yu Watanabe08540a92018-07-18 09:25:57 +09001542foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001543 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001544 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1545 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001546
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001547 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001548 if condition
1549 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001550
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001551 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001552 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001553
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001554 nss = shared_library(
1555 'nss_' + module,
1556 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001557 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001558 version : '2',
1559 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001560 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1561 link_args : ['-Wl,-z,nodelete',
1562 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001563 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001564 link_with : [libsystemd_static,
Lennart Poettering733cbd02019-07-23 14:22:06 +02001565 libshared_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001566 libbasic],
1567 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001568 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001569 link_depends : sym,
1570 install : true,
1571 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001572
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001573 # We cannot use shared_module because it does not support version suffix.
1574 # Unfortunately shared_library insists on creating the symlink…
1575 meson.add_install_script('sh', '-c',
1576 'rm $DESTDIR@0@/libnss_@1@.so'
1577 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001578
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001579 if want_tests != 'false'
1580 test('dlopen-nss_' + module,
1581 test_dlopen,
1582 # path to dlopen must include a slash
1583 args : nss.full_path())
1584 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001585 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001586endforeach
1587
1588############################################################
1589
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001590executable('systemd',
1591 systemd_sources,
1592 include_directories : includes,
1593 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001594 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001595 dependencies : [versiondep,
1596 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001597 librt,
1598 libseccomp,
1599 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001600 libmount,
1601 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001602 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001603 install : true,
1604 install_dir : rootlibexecdir)
1605
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001606meson.add_install_script(meson_make_symlink,
1607 join_paths(rootlibexecdir, 'systemd'),
1608 join_paths(rootsbindir, 'init'))
1609
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001610exe = executable('systemd-analyze',
1611 systemd_analyze_sources,
1612 include_directories : includes,
1613 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001614 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001615 dependencies : [versiondep,
1616 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001617 librt,
1618 libseccomp,
1619 libselinux,
1620 libmount,
1621 libblkid],
1622 install_rpath : rootlibexecdir,
1623 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001624public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001625
1626executable('systemd-journald',
1627 systemd_journald_sources,
1628 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001629 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001630 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001631 dependencies : [threads,
1632 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001633 liblz4,
1634 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001635 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001636 install : true,
1637 install_dir : rootlibexecdir)
1638
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001639exe = executable('systemd-cat',
1640 systemd_cat_sources,
1641 include_directories : includes,
1642 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001643 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001644 dependencies : [threads],
1645 install_rpath : rootlibexecdir,
1646 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001647public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001648
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001649exe = executable('journalctl',
1650 journalctl_sources,
1651 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001652 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001653 dependencies : [threads,
1654 libqrencode,
1655 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001656 liblz4,
1657 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001658 install_rpath : rootlibexecdir,
1659 install : true,
1660 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001661public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001662
1663executable('systemd-getty-generator',
1664 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001665 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001666 link_with : [libshared],
1667 install_rpath : rootlibexecdir,
1668 install : true,
1669 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001670
1671executable('systemd-debug-generator',
1672 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001673 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001674 link_with : [libshared],
1675 install_rpath : rootlibexecdir,
1676 install : true,
1677 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001678
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001679executable('systemd-run-generator',
1680 'src/run-generator/run-generator.c',
1681 include_directories : includes,
1682 link_with : [libshared],
1683 install_rpath : rootlibexecdir,
1684 install : true,
1685 install_dir : systemgeneratordir)
1686
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001687executable('systemd-fstab-generator',
1688 'src/fstab-generator/fstab-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001689 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01001690 link_with : [libcore_shared,
1691 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001692 install_rpath : rootlibexecdir,
1693 install : true,
1694 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001695
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001696if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001697 executable('30-systemd-environment-d-generator',
1698 'src/environment-d-generator/environment-d-generator.c',
1699 include_directories : includes,
1700 link_with : [libshared],
1701 install_rpath : rootlibexecdir,
1702 install : true,
1703 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001704
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001705 meson.add_install_script(meson_make_symlink,
1706 join_paths(sysconfdir, 'environment'),
1707 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001708endif
1709
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001710if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001711 executable('systemd-hibernate-resume-generator',
1712 'src/hibernate-resume/hibernate-resume-generator.c',
1713 include_directories : includes,
1714 link_with : [libshared],
1715 install_rpath : rootlibexecdir,
1716 install : true,
1717 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001718
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001719 executable('systemd-hibernate-resume',
1720 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001721 include_directories : includes,
1722 link_with : [libshared],
1723 install_rpath : rootlibexecdir,
1724 install : true,
1725 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001726endif
1727
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001728if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001729 executable('systemd-gpt-auto-generator',
1730 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001731 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001732 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001733 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001734 dependencies : libblkid,
1735 install_rpath : rootlibexecdir,
1736 install : true,
1737 install_dir : systemgeneratordir)
1738
1739 exe = executable('systemd-dissect',
1740 'src/dissect/dissect.c',
1741 include_directories : includes,
1742 link_with : [libshared],
1743 install_rpath : rootlibexecdir,
1744 install : true,
1745 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001746 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001747endif
1748
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001749if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001750 executable('systemd-resolved',
1751 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001752 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001753 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001754 libbasic_gcrypt,
1755 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001756 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001757 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001758 install : true,
1759 install_dir : rootlibexecdir)
1760
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001761 exe = executable('resolvectl',
1762 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001763 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001764 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001765 libbasic_gcrypt,
1766 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001767 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001768 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001769 libm,
1770 libidn],
1771 install_rpath : rootlibexecdir,
1772 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001773 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001774
1775 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001776 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001777 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001778
1779 meson.add_install_script(meson_make_symlink,
1780 join_paths(bindir, 'resolvectl'),
1781 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001782endif
1783
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001784if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001785 executable('systemd-logind',
1786 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001787 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001788 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001789 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001790 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001791 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001792 install_rpath : rootlibexecdir,
1793 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001794 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001795
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001796 exe = executable('loginctl',
1797 loginctl_sources,
1798 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001799 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001800 dependencies : [threads,
1801 liblz4,
1802 libxz],
1803 install_rpath : rootlibexecdir,
1804 install : true,
1805 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001806 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001807
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001808 exe = executable('systemd-inhibit',
1809 'src/login/inhibit.c',
1810 include_directories : includes,
1811 link_with : [libshared],
1812 install_rpath : rootlibexecdir,
1813 install : true,
1814 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001815 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001816
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001817 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001818 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001819 pam_systemd = shared_library(
1820 'pam_systemd',
1821 pam_systemd_c,
1822 name_prefix : '',
1823 include_directories : includes,
1824 link_args : ['-shared',
1825 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001826 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001827 libshared_static],
1828 dependencies : [threads,
1829 libpam,
1830 libpam_misc],
1831 link_depends : pam_systemd_sym,
1832 install : true,
1833 install_dir : pamlibdir)
1834
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001835 if want_tests != 'false'
1836 test('dlopen-pam_systemd',
1837 test_dlopen,
1838 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001839 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001840 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001841 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001842
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001843 executable('systemd-user-runtime-dir',
1844 user_runtime_dir_sources,
1845 include_directories : includes,
1846 link_with : [libshared],
1847 install_rpath : rootlibexecdir,
1848 install : true,
1849 install_dir : rootlibexecdir)
1850endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001851
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001852if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001853 executable('systemd-user-sessions',
1854 'src/user-sessions/user-sessions.c',
1855 include_directories : includes,
1856 link_with : [libshared],
1857 install_rpath : rootlibexecdir,
1858 install : true,
1859 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001860endif
1861
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001862if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001863 exe = executable('bootctl',
1864 'src/boot/bootctl.c',
1865 include_directories : includes,
1866 link_with : [libshared],
1867 dependencies : [libblkid],
1868 install_rpath : rootlibexecdir,
1869 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001870 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001871
1872 executable('systemd-bless-boot',
1873 'src/boot/bless-boot.c',
1874 include_directories : includes,
1875 link_with : [libshared],
1876 dependencies : [libblkid],
1877 install_rpath : rootlibexecdir,
1878 install : true,
1879 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001880
1881 executable('systemd-bless-boot-generator',
1882 'src/boot/bless-boot-generator.c',
1883 include_directories : includes,
1884 link_with : [libshared],
1885 install_rpath : rootlibexecdir,
1886 install : true,
1887 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001888endif
1889
Lennart Poetteringf876f532018-06-25 16:07:33 +02001890executable('systemd-boot-check-no-failures',
1891 'src/boot/boot-check-no-failures.c',
1892 include_directories : includes,
1893 link_with : [libshared],
1894 dependencies : [libblkid],
1895 install_rpath : rootlibexecdir,
1896 install : true,
1897 install_dir : rootlibexecdir)
1898
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001899exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1900 include_directories : includes,
1901 link_with : [libshared],
1902 dependencies : [threads],
1903 install_rpath : rootlibexecdir,
1904 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001905public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001906
Felipe Satelerf3794362018-05-22 15:08:57 -04001907
1908if get_option('link-systemctl-shared')
1909 systemctl_link_with = [libshared]
1910else
1911 systemctl_link_with = [libsystemd_static,
1912 libshared_static,
1913 libjournal_client,
1914 libbasic_gcrypt]
1915endif
1916
Lennart Poettering63a3b3c2019-03-22 20:05:08 +01001917exe = executable('systemctl',
1918 'src/systemctl/systemctl.c',
1919 'src/systemctl/sysv-compat.h',
1920 'src/systemctl/sysv-compat.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001921 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001922 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001923 dependencies : [threads,
1924 libcap,
1925 libselinux,
1926 libxz,
1927 liblz4],
1928 install_rpath : rootlibexecdir,
1929 install : true,
1930 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001931public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001932
Lennart Poettering61d05782018-04-16 21:41:40 +02001933if conf.get('ENABLE_PORTABLED') == 1
1934 executable('systemd-portabled',
1935 systemd_portabled_sources,
1936 include_directories : includes,
1937 link_with : [libshared],
1938 dependencies : [threads],
1939 install_rpath : rootlibexecdir,
1940 install : true,
1941 install_dir : rootlibexecdir)
1942
1943 exe = executable('portablectl', 'src/portable/portablectl.c',
1944 include_directories : includes,
1945 link_with : [libshared],
1946 dependencies : [threads],
1947 install_rpath : rootlibexecdir,
1948 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001949 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001950 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001951endif
1952
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001953foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1954 meson.add_install_script(meson_make_symlink,
1955 join_paths(rootbindir, 'systemctl'),
1956 join_paths(rootsbindir, alias))
1957endforeach
1958
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001959if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001960 executable('systemd-backlight',
1961 'src/backlight/backlight.c',
1962 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001963 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001964 install_rpath : rootlibexecdir,
1965 install : true,
1966 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001967endif
1968
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001969if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001970 executable('systemd-rfkill',
1971 'src/rfkill/rfkill.c',
1972 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001973 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001974 install_rpath : rootlibexecdir,
1975 install : true,
1976 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001977endif
1978
1979executable('systemd-system-update-generator',
1980 'src/system-update-generator/system-update-generator.c',
1981 include_directories : includes,
1982 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001983 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001984 install : true,
1985 install_dir : systemgeneratordir)
1986
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001987if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001988 executable('systemd-cryptsetup',
1989 'src/cryptsetup/cryptsetup.c',
1990 include_directories : includes,
1991 link_with : [libshared],
1992 dependencies : [libcryptsetup],
1993 install_rpath : rootlibexecdir,
1994 install : true,
1995 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001996
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001997 executable('systemd-cryptsetup-generator',
1998 'src/cryptsetup/cryptsetup-generator.c',
1999 include_directories : includes,
2000 link_with : [libshared],
2001 dependencies : [libcryptsetup],
2002 install_rpath : rootlibexecdir,
2003 install : true,
2004 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002005
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002006 executable('systemd-veritysetup',
2007 'src/veritysetup/veritysetup.c',
2008 include_directories : includes,
2009 link_with : [libshared],
2010 dependencies : [libcryptsetup],
2011 install_rpath : rootlibexecdir,
2012 install : true,
2013 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002014
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002015 executable('systemd-veritysetup-generator',
2016 'src/veritysetup/veritysetup-generator.c',
2017 include_directories : includes,
2018 link_with : [libshared],
2019 dependencies : [libcryptsetup],
2020 install_rpath : rootlibexecdir,
2021 install : true,
2022 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002023endif
2024
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002025if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002026 executable('systemd-sysv-generator',
2027 'src/sysv-generator/sysv-generator.c',
2028 include_directories : includes,
2029 link_with : [libshared],
2030 install_rpath : rootlibexecdir,
2031 install : true,
2032 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002033
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002034 executable('systemd-rc-local-generator',
2035 'src/rc-local-generator/rc-local-generator.c',
2036 include_directories : includes,
2037 link_with : [libshared],
2038 install_rpath : rootlibexecdir,
2039 install : true,
2040 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002041endif
2042
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002043if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002044 executable('systemd-hostnamed',
2045 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002046 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002047 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002048 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002049 install : true,
2050 install_dir : rootlibexecdir)
2051
2052 exe = executable('hostnamectl',
2053 'src/hostname/hostnamectl.c',
2054 include_directories : includes,
2055 link_with : [libshared],
2056 install_rpath : rootlibexecdir,
2057 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002058 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002059endif
2060
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002061if conf.get('ENABLE_LOCALED') == 1
2062 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002063 # logind will load libxkbcommon.so dynamically on its own
2064 deps = [libdl]
2065 else
2066 deps = []
2067 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002068
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002069 executable('systemd-localed',
2070 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002071 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002072 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002073 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002074 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002075 install : true,
2076 install_dir : rootlibexecdir)
2077
2078 exe = executable('localectl',
2079 localectl_sources,
2080 include_directories : includes,
2081 link_with : [libshared],
2082 install_rpath : rootlibexecdir,
2083 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002084 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002085endif
2086
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002087if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002088 executable('systemd-timedated',
2089 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002090 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002091 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002092 install_rpath : rootlibexecdir,
2093 install : true,
2094 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002095endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002096
Yu Watanabe6129ec82018-05-03 18:07:43 +09002097if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002098 exe = executable('timedatectl',
2099 'src/timedate/timedatectl.c',
2100 include_directories : includes,
2101 install_rpath : rootlibexecdir,
2102 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002103 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002104 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002105 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002106endif
2107
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002108if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002109 executable('systemd-timesyncd',
2110 systemd_timesyncd_sources,
2111 include_directories : includes,
2112 link_with : [libshared],
2113 dependencies : [threads,
2114 libm],
2115 install_rpath : rootlibexecdir,
2116 install : true,
2117 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002118
2119 executable('systemd-time-wait-sync',
2120 'src/time-wait-sync/time-wait-sync.c',
2121 include_directories : includes,
2122 link_with : [libshared],
2123 install_rpath : rootlibexecdir,
2124 install : true,
2125 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002126endif
2127
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002128if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002129 executable('systemd-machined',
2130 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002131 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002132 link_with : [libmachine_core,
2133 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002134 install_rpath : rootlibexecdir,
2135 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002136 install_dir : rootlibexecdir)
2137
2138 exe = executable('machinectl',
2139 'src/machine/machinectl.c',
2140 include_directories : includes,
2141 link_with : [libshared],
2142 dependencies : [threads,
2143 libxz,
2144 liblz4],
2145 install_rpath : rootlibexecdir,
2146 install : true,
2147 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002148 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002149endif
2150
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002151if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002152 executable('systemd-importd',
2153 systemd_importd_sources,
2154 include_directories : includes,
2155 link_with : [libshared],
2156 dependencies : [threads],
2157 install_rpath : rootlibexecdir,
2158 install : true,
2159 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002160
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002161 systemd_pull = executable('systemd-pull',
2162 systemd_pull_sources,
2163 include_directories : includes,
2164 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002165 dependencies : [versiondep,
2166 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002167 libz,
2168 libbzip2,
2169 libxz,
2170 libgcrypt],
2171 install_rpath : rootlibexecdir,
2172 install : true,
2173 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002174
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002175 systemd_import = executable('systemd-import',
2176 systemd_import_sources,
2177 include_directories : includes,
2178 link_with : [libshared],
2179 dependencies : [libcurl,
2180 libz,
2181 libbzip2,
2182 libxz],
2183 install_rpath : rootlibexecdir,
2184 install : true,
2185 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002186
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002187 systemd_import_fs = executable('systemd-import-fs',
2188 systemd_import_fs_sources,
2189 include_directories : includes,
2190 link_with : [libshared],
2191 install_rpath : rootlibexecdir,
2192 install : true,
2193 install_dir : rootlibexecdir)
2194
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002195 systemd_export = executable('systemd-export',
2196 systemd_export_sources,
2197 include_directories : includes,
2198 link_with : [libshared],
2199 dependencies : [libcurl,
2200 libz,
2201 libbzip2,
2202 libxz],
2203 install_rpath : rootlibexecdir,
2204 install : true,
2205 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002206
2207 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002208endif
2209
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002210if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002211 exe = executable('systemd-journal-upload',
2212 systemd_journal_upload_sources,
2213 include_directories : includes,
2214 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002215 dependencies : [versiondep,
2216 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002217 libcurl,
2218 libgnutls,
2219 libxz,
2220 liblz4],
2221 install_rpath : rootlibexecdir,
2222 install : true,
2223 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002224 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002225endif
2226
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002227if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002228 s_j_remote = executable('systemd-journal-remote',
2229 systemd_journal_remote_sources,
2230 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002231 link_with : [libshared,
2232 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002233 dependencies : [threads,
2234 libmicrohttpd,
2235 libgnutls,
2236 libxz,
2237 liblz4],
2238 install_rpath : rootlibexecdir,
2239 install : true,
2240 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002241
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002242 s_j_gatewayd = executable('systemd-journal-gatewayd',
2243 systemd_journal_gatewayd_sources,
2244 include_directories : includes,
2245 link_with : [libshared],
2246 dependencies : [threads,
2247 libmicrohttpd,
2248 libgnutls,
2249 libxz,
2250 liblz4],
2251 install_rpath : rootlibexecdir,
2252 install : true,
2253 install_dir : rootlibexecdir)
2254 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002255endif
2256
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002257if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002258 executable('systemd-coredump',
2259 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002260 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002261 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002262 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002263 libacl,
2264 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002265 libxz,
2266 liblz4],
2267 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002268 install : true,
2269 install_dir : rootlibexecdir)
2270
2271 exe = executable('coredumpctl',
2272 coredumpctl_sources,
2273 include_directories : includes,
2274 link_with : [libshared],
2275 dependencies : [threads,
2276 libxz,
2277 liblz4],
2278 install_rpath : rootlibexecdir,
2279 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002280 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002281endif
2282
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002283if conf.get('ENABLE_PSTORE') == 1
2284 executable('systemd-pstore',
2285 systemd_pstore_sources,
2286 include_directories : includes,
2287 link_with : [libshared],
2288 dependencies : [threads,
2289 libacl,
2290 libdw,
2291 libxz,
2292 liblz4],
2293 install_rpath : rootlibexecdir,
2294 install : true,
2295 install_dir : rootlibexecdir)
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002296endif
2297
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002298if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002299 exe = executable('systemd-binfmt',
2300 'src/binfmt/binfmt.c',
2301 include_directories : includes,
2302 link_with : [libshared],
2303 install_rpath : rootlibexecdir,
2304 install : true,
2305 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002306 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002307
2308 meson.add_install_script('sh', '-c',
2309 mkdir_p.format(binfmtdir))
2310 meson.add_install_script('sh', '-c',
2311 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2312endif
2313
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002314if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002315 executable('systemd-vconsole-setup',
2316 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002317 include_directories : includes,
2318 link_with : [libshared],
2319 install_rpath : rootlibexecdir,
2320 install : true,
2321 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002322endif
2323
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002324if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002325 executable('systemd-random-seed',
2326 'src/random-seed/random-seed.c',
2327 include_directories : includes,
2328 link_with : [libshared],
2329 install_rpath : rootlibexecdir,
2330 install : true,
2331 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002332endif
2333
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002334if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002335 executable('systemd-firstboot',
2336 'src/firstboot/firstboot.c',
2337 include_directories : includes,
2338 link_with : [libshared],
2339 dependencies : [libcrypt],
2340 install_rpath : rootlibexecdir,
2341 install : true,
2342 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002343endif
2344
2345executable('systemd-remount-fs',
2346 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002347 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002348 link_with : [libcore_shared,
2349 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002350 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002351 install : true,
2352 install_dir : rootlibexecdir)
2353
2354executable('systemd-machine-id-setup',
2355 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002356 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002357 link_with : [libcore_shared,
2358 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002359 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002360 install : true,
2361 install_dir : rootbindir)
2362
2363executable('systemd-fsck',
2364 'src/fsck/fsck.c',
2365 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002366 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002367 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002368 install : true,
2369 install_dir : rootlibexecdir)
2370
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002371executable('systemd-growfs',
2372 'src/partition/growfs.c',
2373 include_directories : includes,
2374 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002375 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002376 install_rpath : rootlibexecdir,
2377 install : true,
2378 install_dir : rootlibexecdir)
2379
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002380executable('systemd-makefs',
2381 'src/partition/makefs.c',
2382 include_directories : includes,
2383 link_with : [libshared],
2384 install_rpath : rootlibexecdir,
2385 install : true,
2386 install_dir : rootlibexecdir)
2387
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002388executable('systemd-sleep',
2389 'src/sleep/sleep.c',
2390 include_directories : includes,
2391 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002392 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002393 install : true,
2394 install_dir : rootlibexecdir)
2395
Yu Watanabed25e1272019-01-03 02:32:57 +09002396install_data('src/sleep/sleep.conf',
2397 install_dir : pkgsysconfdir)
2398
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002399exe = executable('systemd-sysctl',
2400 'src/sysctl/sysctl.c',
2401 include_directories : includes,
2402 link_with : [libshared],
2403 install_rpath : rootlibexecdir,
2404 install : true,
2405 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002406public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002407
2408executable('systemd-ac-power',
2409 'src/ac-power/ac-power.c',
2410 include_directories : includes,
2411 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002412 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002413 install : true,
2414 install_dir : rootlibexecdir)
2415
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002416exe = executable('systemd-detect-virt',
2417 'src/detect-virt/detect-virt.c',
2418 include_directories : includes,
2419 link_with : [libshared],
2420 install_rpath : rootlibexecdir,
2421 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002422public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002423
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002424exe = executable('systemd-delta',
2425 'src/delta/delta.c',
2426 include_directories : includes,
2427 link_with : [libshared],
2428 install_rpath : rootlibexecdir,
2429 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002430public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002431
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002432exe = executable('systemd-escape',
2433 'src/escape/escape.c',
2434 include_directories : includes,
2435 link_with : [libshared],
2436 install_rpath : rootlibexecdir,
2437 install : true,
2438 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002439public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002440
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002441exe = executable('systemd-notify',
2442 'src/notify/notify.c',
2443 include_directories : includes,
2444 link_with : [libshared],
2445 install_rpath : rootlibexecdir,
2446 install : true,
2447 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002448public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002449
2450executable('systemd-volatile-root',
2451 'src/volatile-root/volatile-root.c',
2452 include_directories : includes,
2453 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002454 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002455 install : true,
2456 install_dir : rootlibexecdir)
2457
2458executable('systemd-cgroups-agent',
2459 'src/cgroups-agent/cgroups-agent.c',
2460 include_directories : includes,
2461 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002462 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002463 install : true,
2464 install_dir : rootlibexecdir)
2465
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002466exe = executable('systemd-id128',
2467 'src/id128/id128.c',
2468 include_directories : includes,
2469 link_with : [libshared],
2470 install_rpath : rootlibexecdir,
2471 install : true)
2472public_programs += exe
2473
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002474exe = executable('systemd-path',
2475 'src/path/path.c',
2476 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002477 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002478 install_rpath : rootlibexecdir,
2479 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002480public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002481
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002482exe = executable('systemd-ask-password',
2483 'src/ask-password/ask-password.c',
2484 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002485 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002486 install_rpath : rootlibexecdir,
2487 install : true,
2488 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002489public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002490
2491executable('systemd-reply-password',
2492 'src/reply-password/reply-password.c',
2493 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002494 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002495 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002496 install : true,
2497 install_dir : rootlibexecdir)
2498
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002499exe = executable('systemd-tty-ask-password-agent',
2500 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2501 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002502 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002503 install_rpath : rootlibexecdir,
2504 install : true,
2505 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002506public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002507
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002508exe = executable('systemd-cgls',
2509 'src/cgls/cgls.c',
2510 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002511 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002512 install_rpath : rootlibexecdir,
2513 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002514public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002515
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002516exe = executable('systemd-cgtop',
2517 'src/cgtop/cgtop.c',
2518 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002519 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002520 install_rpath : rootlibexecdir,
2521 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002522public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002523
2524executable('systemd-initctl',
2525 'src/initctl/initctl.c',
2526 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002527 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002528 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002529 install : true,
2530 install_dir : rootlibexecdir)
2531
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002532exe = executable('systemd-mount',
2533 'src/mount/mount-tool.c',
2534 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002535 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek7d991d42019-04-04 13:41:47 +02002536 dependencies: [libmount],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002537 install_rpath : rootlibexecdir,
2538 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002539public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002540
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002541meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002542 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002543
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002544exe = executable('systemd-run',
2545 'src/run/run.c',
2546 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002547 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002548 install_rpath : rootlibexecdir,
2549 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002550public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002551
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002552exe = executable('systemd-stdio-bridge',
2553 'src/stdio-bridge/stdio-bridge.c',
2554 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002555 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002556 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002557 install_rpath : rootlibexecdir,
2558 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002559public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002560
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002561exe = executable('busctl',
2562 'src/busctl/busctl.c',
2563 'src/busctl/busctl-introspect.c',
2564 'src/busctl/busctl-introspect.h',
2565 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002566 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002567 install_rpath : rootlibexecdir,
2568 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002569public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002570
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002571if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002572 exe = executable('systemd-sysusers',
2573 'src/sysusers/sysusers.c',
2574 include_directories : includes,
2575 link_with : [libshared],
2576 install_rpath : rootlibexecdir,
2577 install : true,
2578 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002579 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002580endif
2581
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002582if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002583 exe = executable('systemd-tmpfiles',
2584 'src/tmpfiles/tmpfiles.c',
2585 include_directories : includes,
2586 link_with : [libshared],
2587 dependencies : [libacl],
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-Szmekd9daae52017-11-22 14:13:32 +01002592
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002593 if want_tests != 'false'
2594 test('test-systemd-tmpfiles',
2595 test_systemd_tmpfiles_py,
2596 # https://github.com/mesonbuild/meson/issues/2681
2597 args : exe.full_path())
2598 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002599endif
2600
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002601if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002602 exe = executable('systemd-hwdb',
2603 'src/hwdb/hwdb.c',
2604 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2605 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002606 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002607 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002608 install : true,
2609 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002610 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002611endif
2612
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002613if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002614 executable('systemd-quotacheck',
2615 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002616 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002617 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002618 install_rpath : rootlibexecdir,
2619 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002620 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002621endif
2622
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002623exe = executable('systemd-socket-proxyd',
2624 'src/socket-proxy/socket-proxyd.c',
2625 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002626 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002627 dependencies : [threads],
2628 install_rpath : rootlibexecdir,
2629 install : true,
2630 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002631public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002632
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002633exe = executable('systemd-udevd',
2634 systemd_udevd_sources,
2635 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002636 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002637 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002638 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002639 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002640 dependencies : [versiondep,
2641 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002642 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002643 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002644 libacl,
2645 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002646 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002647 install : true,
2648 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002649public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002650
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002651exe = executable('udevadm',
2652 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002653 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002654 include_directories : includes,
2655 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002656 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002657 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002658 dependencies : [versiondep,
2659 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002660 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002661 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002662 libacl,
2663 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002664 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002665 install : true,
2666 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002667public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002668
2669executable('systemd-shutdown',
2670 systemd_shutdown_sources,
2671 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002672 link_with : [libcore_shared,
2673 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002674 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002675 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002676 install : true,
2677 install_dir : rootlibexecdir)
2678
2679executable('systemd-update-done',
2680 'src/update-done/update-done.c',
2681 include_directories : includes,
2682 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002683 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002684 install : true,
2685 install_dir : rootlibexecdir)
2686
2687executable('systemd-update-utmp',
2688 'src/update-utmp/update-utmp.c',
2689 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002690 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002691 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002692 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002693 install : true,
2694 install_dir : rootlibexecdir)
2695
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002696if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002697 executable('systemd-modules-load',
2698 'src/modules-load/modules-load.c',
2699 include_directories : includes,
2700 link_with : [libshared],
2701 dependencies : [libkmod],
2702 install_rpath : rootlibexecdir,
2703 install : true,
2704 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002705
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002706 meson.add_install_script('sh', '-c',
2707 mkdir_p.format(modulesloaddir))
2708 meson.add_install_script('sh', '-c',
2709 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002710endif
2711
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002712exe = executable('systemd-nspawn',
2713 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002714 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002715 link_with : [libcore_shared,
2716 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002717 libshared],
Franck Bui82384232019-03-22 11:09:08 +01002718 dependencies : [libblkid,
2719 libseccomp],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002720 install_rpath : rootlibexecdir,
2721 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002722public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002723
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002724if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002725 executable('systemd-networkd',
2726 systemd_networkd_sources,
Yu Watanabe737f1402019-10-30 17:02:15 +09002727 include_directories : network_include_dir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002728 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002729 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002730 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002731 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002732 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002733 install_rpath : rootlibexecdir,
2734 install : true,
2735 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002736
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002737 executable('systemd-networkd-wait-online',
2738 systemd_networkd_wait_online_sources,
2739 include_directories : includes,
2740 link_with : [libnetworkd_core,
2741 libshared],
2742 install_rpath : rootlibexecdir,
2743 install : true,
2744 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002745
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002746 exe = executable('networkctl',
2747 networkctl_sources,
2748 include_directories : includes,
2749 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002750 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002751 install_rpath : rootlibexecdir,
2752 install : true,
2753 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002754 public_programs += exe
Yu Watanabe426c1d32019-07-13 03:35:04 +09002755
2756 executable('systemd-network-generator',
2757 network_generator_sources,
2758 include_directories : includes,
2759 link_with : [libshared],
2760 install_rpath : rootlibexecdir,
2761 install : true,
2762 install_dir : rootlibexecdir)
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002763endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002764
2765executable('systemd-sulogin-shell',
2766 ['src/sulogin-shell/sulogin-shell.c'],
2767 include_directories : includes,
2768 link_with : [libshared],
2769 install_rpath : rootlibexecdir,
2770 install : true,
2771 install_dir : rootlibexecdir)
2772
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002773############################################################
2774
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002775custom_target(
2776 'systemd-runtest.env',
2777 output : 'systemd-runtest.env',
2778 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05002779 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002780 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002781 '} >@OUTPUT@'],
2782 build_by_default : true)
2783
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002784foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002785 sources = tuple[0]
2786 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2787 dependencies = tuple[2]
2788 condition = tuple.length() >= 4 ? tuple[3] : ''
2789 type = tuple.length() >= 5 ? tuple[4] : ''
2790 defs = tuple.length() >= 6 ? tuple[5] : []
2791 incs = tuple.length() >= 7 ? tuple[6] : includes
2792 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002793
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002794 name = sources[0].split('/')[-1].split('.')[0]
2795 if type.startswith('timeout=')
2796 timeout = type.split('=')[1].to_int()
2797 type = ''
2798 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002799
2800 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002801 exe = executable(
2802 name,
2803 sources,
2804 include_directories : incs,
2805 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002806 dependencies : [versiondep,
2807 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002808 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002809 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002810 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002811 install : install_tests,
2812 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002813
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002814 if type == 'manual'
2815 message('@0@ is a manual test'.format(name))
2816 elif type == 'unsafe' and want_tests != 'unsafe'
2817 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002818 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002819 test(name, exe,
2820 env : test_env,
2821 timeout : timeout)
2822 endif
2823 else
2824 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2825 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002826endforeach
2827
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002828exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002829 'test-libsystemd-sym',
2830 test_libsystemd_sym_c,
2831 include_directories : includes,
2832 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002833 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002834 install : install_tests,
2835 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002836if want_tests != 'false'
2837 test('test-libsystemd-sym', exe)
2838endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002839
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002840exe = executable(
2841 'test-libsystemd-static-sym',
2842 test_libsystemd_sym_c,
2843 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002844 link_with : [install_libsystemd_static],
2845 dependencies : [threads], # threads is already included in dependencies on the library,
2846 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002847 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002848 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002849 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002850if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002851 test('test-libsystemd-static-sym', exe)
2852endif
2853
2854exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002855 'test-libudev-sym',
2856 test_libudev_sym_c,
2857 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002858 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002859 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002860 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002861 install : install_tests,
2862 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002863if want_tests != 'false'
2864 test('test-libudev-sym', exe)
2865endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002866
2867exe = executable(
2868 'test-libudev-static-sym',
2869 test_libudev_sym_c,
2870 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002871 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002872 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002873 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002874 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002875 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002876if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002877 test('test-libudev-static-sym', exe)
2878endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002879
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002880############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002881
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002882fuzzer_exes = []
2883
Michael Olbrich59967402018-11-11 11:27:35 +01002884if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002885foreach tuple : fuzzers
2886 sources = tuple[0]
2887 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2888 dependencies = tuple[2]
2889 defs = tuple.length() >= 4 ? tuple[3] : []
2890 incs = tuple.length() >= 5 ? tuple[4] : includes
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002891 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002892
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002893 if want_ossfuzz or want_fuzzbuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002894 dependencies += fuzzing_engine
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002895 elif want_libfuzzer
2896 if fuzzing_engine.found()
2897 dependencies += fuzzing_engine
2898 else
2899 link_args += ['-fsanitize=fuzzer']
2900 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002901 else
2902 sources += 'src/fuzz/fuzz-main.c'
2903 endif
2904
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00002905 if want_fuzzbuzz
2906 sources += 'src/fuzz/fuzzer-entry-point.c'
2907 endif
2908
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002909 name = sources[0].split('/')[-1].split('.')[0]
2910
2911 fuzzer_exes += executable(
2912 name,
2913 sources,
2914 include_directories : [incs, include_directories('src/fuzz')],
2915 link_with : link_with,
2916 dependencies : dependencies,
2917 c_args : defs,
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002918 link_args: link_args,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002919 install : false)
2920endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002921endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002922
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01002923run_target('fuzzers',
2924 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002925 command : ['true'])
2926
2927############################################################
2928
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002929make_directive_index_py = find_program('tools/make-directive-index.py')
2930make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002931xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002932hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek62d39992019-11-15 11:32:24 +01002933autosuspend_update_sh = find_program('tools/meson-autosuspend-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002934
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002935subdir('sysctl.d')
2936subdir('sysusers.d')
2937subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmek4f10b802019-10-08 16:52:10 +02002938subdir('hwdb.d')
2939subdir('units')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002940subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002941subdir('network')
2942subdir('man')
2943subdir('shell-completion/bash')
2944subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002945subdir('docs/sysvinit')
2946subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002947
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002948install_subdir('factory/etc',
2949 install_dir : factorydir)
2950
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002951install_data('xorg/50-systemd-user.sh',
2952 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002953install_data('modprobe.d/systemd.conf',
2954 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002955install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002956 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002957 'NEWS',
2958 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302959 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002960 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002961 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302962 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002963 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002964 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002965 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002966 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2967 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002968
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002969meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2970meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2971
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002972############################################################
2973
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002974meson_check_help = find_program('tools/meson-check-help.sh')
2975
2976foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002977 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002978 if want_tests != 'false'
2979 test('check-help-' + name,
2980 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002981 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002982 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002983endforeach
2984
2985############################################################
2986
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02002987check_directives_sh = find_program('tools/check-directives.sh')
2988
2989if want_tests != 'false'
2990 test('check-directives',
2991 check_directives_sh,
2992 args : project_source_root)
2993endif
2994
2995############################################################
2996
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002997# Enable tests for all supported sanitizers
2998foreach tuple : sanitizers
2999 sanitizer = tuple[0]
3000 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003001
Yu Watanabe7a6397d2018-05-15 20:18:24 +09003002 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003003 prev = ''
3004 foreach p : fuzz_regression_tests
3005 b = p.split('/')[-2]
3006 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003007
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003008 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003009
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003010 if name != prev
3011 if want_tests == 'false'
3012 message('Not compiling @0@ because tests is set to false'.format(name))
3013 elif slow_tests
3014 exe = custom_target(
3015 name,
3016 output : name,
3017 depends : build,
3018 command : [env, 'ln', '-fs',
3019 join_paths(build.full_path(), b),
3020 '@OUTPUT@'],
3021 build_by_default : true)
3022 else
3023 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3024 endif
3025 endif
3026 prev = name
3027
3028 if want_tests != 'false' and slow_tests
3029 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3030 env,
3031 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003032 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003033 endif
3034 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003035 endif
3036endforeach
3037
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003038
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003039############################################################
3040
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003041if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003042 all_files = run_command(
3043 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003044 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003045 'ls-files',
3046 ':/*.[ch]'])
3047 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003048
userwithuide85a6902017-08-09 13:41:44 +00003049 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003050 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003051 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003052 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003053 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003054 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003055 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003056endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003057
3058if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003059 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003060 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003061 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003062 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003063endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003064
3065if git.found()
3066 git_head = run_command(
3067 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003068 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003069 'rev-parse', 'HEAD']).stdout().strip()
3070 git_head_short = run_command(
3071 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003072 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003073 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3074
3075 run_target(
3076 'git-snapshot',
3077 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003078 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003079 git_head_short),
3080 '--prefix', 'systemd-@0@/'.format(git_head),
3081 'HEAD'])
3082endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003083
3084############################################################
3085
Lennart Poettering51b13862017-12-20 12:51:14 +01003086meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3087run_target(
3088 'check-api-docs',
3089 depends : [man, libsystemd, libudev],
3090 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3091
3092############################################################
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003093watchdog_opt = service_watchdog == '' ? 'disabled' : service_watchdog
Lennart Poettering51b13862017-12-20 12:51:14 +01003094
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003095status = [
3096 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3097
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003098 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003099 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003100 'prefix directory: @0@'.format(prefixdir),
3101 'rootprefix directory: @0@'.format(rootprefixdir),
3102 'sysconf directory: @0@'.format(sysconfdir),
3103 'include directory: @0@'.format(includedir),
3104 'lib directory: @0@'.format(libdir),
3105 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003106 'SysV init scripts: @0@'.format(sysvinit_path),
3107 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003108 'PAM modules directory: @0@'.format(pamlibdir),
3109 'PAM configuration directory: @0@'.format(pamconfdir),
3110 'RPM macros directory: @0@'.format(rpmmacrosdir),
3111 'modprobe.d directory: @0@'.format(modprobedir),
3112 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3113 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3114 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3115 'bash completions directory: @0@'.format(bashcompletiondir),
3116 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003117 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003118 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3119 get_option('debug-tty')),
3120 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003121 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003122 'maximum system UID: @0@'.format(system_uid_max),
3123 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003124 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3125 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3126 'minimum container UID base: @0@'.format(container_uid_base_min),
3127 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003128 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003129 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003130 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003131 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003132 'nobody user name: @0@'.format(nobody_user),
3133 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003134 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003135 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003136
3137 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003138 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003139 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003140 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003141 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +02003142 'default locale: @0@'.format(default_locale),
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +01003143 'default user $PATH: @0@'.format(default_user_path_display),
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003144 'systemd service watchdog: @0@'.format(watchdog_opt)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003145
3146alt_dns_servers = '\n '.join(dns_servers.split(' '))
3147alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3148status += [
3149 'default DNS servers: @0@'.format(alt_dns_servers),
3150 'default NTP servers: @0@'.format(alt_ntp_servers)]
3151
3152alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3153 '@@0@'.format(time_epoch)).stdout().strip()
3154status += [
3155 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3156
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003157status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003158 'static libsystemd: @0@'.format(static_libsystemd),
3159 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003160
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003161# TODO:
3162# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3163# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3164# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3165
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003166if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003167 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003168
3169 if have_gnu_efi
3170 status += [
3171 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003172 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003173 'EFI lib directory: @0@'.format(efi_libdir),
3174 'EFI lds directory: @0@'.format(efi_ldsdir),
3175 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003176 endif
3177endif
3178
3179found = []
3180missing = []
3181
3182foreach tuple : [
3183 ['libcryptsetup'],
3184 ['PAM'],
3185 ['AUDIT'],
3186 ['IMA'],
3187 ['AppArmor'],
3188 ['SELinux'],
3189 ['SECCOMP'],
3190 ['SMACK'],
3191 ['zlib'],
3192 ['xz'],
3193 ['lz4'],
3194 ['bzip2'],
3195 ['ACL'],
3196 ['gcrypt'],
3197 ['qrencode'],
3198 ['microhttpd'],
3199 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003200 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003201 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003202 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003203 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003204 ['libidn'],
3205 ['libiptc'],
3206 ['elfutils'],
3207 ['binfmt'],
3208 ['vconsole'],
3209 ['quotacheck'],
3210 ['tmpfiles'],
3211 ['environment.d'],
3212 ['sysusers'],
3213 ['firstboot'],
3214 ['randomseed'],
3215 ['backlight'],
3216 ['rfkill'],
3217 ['logind'],
3218 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003219 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003220 ['importd'],
3221 ['hostnamed'],
3222 ['timedated'],
3223 ['timesyncd'],
3224 ['localed'],
3225 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003226 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003227 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3228 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003229 ['coredump'],
Eric DeVolder9b4abc62019-05-16 08:59:01 -05003230 ['pstore'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003231 ['polkit'],
3232 ['legacy pkla', install_polkit_pkla],
3233 ['efi'],
3234 ['gnu-efi', have_gnu_efi],
3235 ['kmod'],
3236 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003237 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003238 ['blkid'],
3239 ['dbus'],
3240 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003241 ['nss-myhostname'],
3242 ['nss-mymachines'],
3243 ['nss-resolve'],
3244 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003245 ['hwdb'],
3246 ['tpm'],
3247 ['man pages', want_man],
3248 ['html pages', want_html],
3249 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003250 ['SysV compat'],
3251 ['utmp'],
3252 ['ldconfig'],
3253 ['hibernate'],
3254 ['adm group', get_option('adm-group')],
3255 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003256 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003257 ['debug hashmap'],
3258 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003259 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003260 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003261 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003262 ['link-udev-shared', get_option('link-udev-shared')],
3263 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003264]
3265
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003266 if tuple.length() >= 2
3267 cond = tuple[1]
3268 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003269 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3270 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003271 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003272 endif
3273 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003274 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003275 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003276 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003277 endif
3278endforeach
3279
3280status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003281 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003282 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003283 '',
3284 'disabled features: @0@'.format(', '.join(missing)),
3285 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003286message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003287
3288if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003289 warning('\n' +
3290 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3291 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3292 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003293endif