blob: edde42ea74a6223b998e6145d1107843138454fb [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01002
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003project('systemd', 'c',
Zbigniew Jędrzejewski-Szmek78af8a72019-11-22 14:41:10 +01004 version : '244',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04005 license : 'LGPLv2+',
6 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04007 'c_std=gnu99',
8 'prefix=/usr',
9 'sysconfdir=/etc',
10 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek827ca902019-11-10 11:39:15 +010011 'warning_level=2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040012 ],
Yu Watanabe7a6397d2018-05-15 20:18:24 +090013 meson_version : '>= 0.46',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040014 )
15
Zbigniew Jędrzejewski-Szmek78af8a72019-11-22 14:41:10 +010016libsystemd_version = '0.27.1'
17libudev_version = '1.6.16'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020018
Yu Watanabe348b4432018-05-07 18:17:35 +090019# We need the same data in two different formats, ugh!
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040020# Also, for hysterical reasons, we use different variable
21# names, sometimes. Not all variables are included in every
22# set. Ugh, ugh, ugh!
23conf = configuration_data()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010024conf.set('PROJECT_VERSION', meson.project_version())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040025
26substs = configuration_data()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010027substs.set('PROJECT_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
28substs.set('PROJECT_VERSION', meson.project_version())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040029
Davide Cavalca1485aac2019-02-27 11:19:07 -050030# This is to be used instead of meson.source_root(), as the latter will return
31# the wrong result when systemd is being built as a meson subproject
32project_source_root = meson.current_source_dir()
Zbigniew Jędrzejewski-Szmeka0b15b42019-06-07 14:41:36 +020033relative_source_path = run_command('realpath',
34 '--relative-to=@0@'.format(meson.current_build_dir()),
35 project_source_root).stdout().strip()
36conf.set_quoted('RELATIVE_SOURCE_PATH', relative_source_path)
Davide Cavalca1485aac2019-02-27 11:19:07 -050037
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020038want_ossfuzz = get_option('oss-fuzz')
39want_libfuzzer = get_option('llvm-fuzz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +000040want_fuzzbuzz = get_option('fuzzbuzz')
41if want_ossfuzz + want_libfuzzer + want_fuzzbuzz > 1
42 error('only one of oss-fuzz, llvm-fuzz or fuzzbuzz can be specified')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020043endif
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +000044
45skip_deps = want_ossfuzz or want_libfuzzer
46fuzzer_build = want_ossfuzz or want_libfuzzer or want_fuzzbuzz
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020047
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040048#####################################################################
49
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040050# Try to install the git pre-commit hook
Davide Cavalca1485aac2019-02-27 11:19:07 -050051git_hook = run_command(join_paths(project_source_root, 'tools/add-git-hook.sh'))
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040052if git_hook.returncode() == 0
53 message(git_hook.stdout().strip())
54endif
55
56#####################################################################
57
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010058if get_option('split-usr') == 'auto'
59 split_usr = run_command('test', '-L', '/bin').returncode() != 0
60else
61 split_usr = get_option('split-usr') == 'true'
62endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010063conf.set10('HAVE_SPLIT_USR', split_usr,
64 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010065
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010066if get_option('split-bin') == 'auto'
67 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
68else
69 split_bin = get_option('split-bin') == 'true'
70endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010071conf.set10('HAVE_SPLIT_BIN', split_bin,
72 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010073
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010074rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010075# Unusual rootprefixdir values are used by some distros
76# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010077rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010078if rootprefixdir == ''
79 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010080endif
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010081rootprefixdir_noslash = rootprefixdir == '/' ? '' : rootprefixdir
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040082
83sysvinit_path = get_option('sysvinit-path')
84sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090085conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020086 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040087
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020088conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
89conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
Lennart Poettering09dad042018-11-15 09:50:42 +010090conf.set('HIGH_RLIMIT_NOFILE', 512*1024)
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020091
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010092# join_paths ignores the preceding arguments if an absolute component is
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040093# encountered, so this should canonicalize various paths when they are
94# absolute or relative.
95prefixdir = get_option('prefix')
96if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040097 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040098endif
99bindir = join_paths(prefixdir, get_option('bindir'))
100libdir = join_paths(prefixdir, get_option('libdir'))
101sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
102includedir = join_paths(prefixdir, get_option('includedir'))
103datadir = join_paths(prefixdir, get_option('datadir'))
104localstatedir = join_paths('/', get_option('localstatedir'))
105
106rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +0100107rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400108rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
109
110rootlibdir = get_option('rootlibdir')
111if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400112 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400113endif
114
115# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +0200116pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
117pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400118polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
119polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
120polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400121xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900122rpmmacrosdir = get_option('rpmmacrosdir')
123if rpmmacrosdir != 'no'
124 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
125endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200126modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400127
128# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400129pkgdatadir = join_paths(datadir, 'systemd')
130environmentdir = join_paths(prefixdir, 'lib/environment.d')
131pkgsysconfdir = join_paths(sysconfdir, 'systemd')
132userunitdir = join_paths(prefixdir, 'lib/systemd/user')
133userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
134tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
135sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
136sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
137binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
138modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
139networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
140pkgincludedir = join_paths(includedir, 'systemd')
141systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
142usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
143systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
144userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
145systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
146systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
147systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
148systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
149udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400150udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
151udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
152catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
153kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
154factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400155bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
156testsdir = join_paths(prefixdir, 'lib/systemd/tests')
157systemdstatedir = join_paths(localstatedir, 'lib/systemd')
158catalogstatedir = join_paths(systemdstatedir, 'catalog')
159randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200160profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmeke5ea7412019-07-22 14:47:51 +0200161ntpservicelistdir = join_paths(rootprefixdir, 'lib/systemd/ntp-units.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400162
tblume75aaade2018-02-01 22:46:15 +0100163docdir = get_option('docdir')
164if docdir == ''
165 docdir = join_paths(datadir, 'doc/systemd')
166endif
167
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400168dbuspolicydir = get_option('dbuspolicydir')
169if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400170 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400171endif
172
173dbussessionservicedir = get_option('dbussessionservicedir')
174if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400175 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400176endif
177
178dbussystemservicedir = get_option('dbussystemservicedir')
179if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400180 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400181endif
182
183pamlibdir = get_option('pamlibdir')
184if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400185 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400186endif
187
188pamconfdir = get_option('pamconfdir')
189if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400190 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400191endif
192
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100193memory_accounting_default = get_option('memory-accounting-default')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200194status_unit_format_default = get_option('status-unit-format-default')
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100195
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400196conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400197conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400198conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
199conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
200conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400201conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100202
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100203conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100204
Michael Bieble17e5ba2017-04-13 10:30:56 -0400205conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400206conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
207conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400208conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
209conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
210conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
211conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100212conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100213conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400214conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
215conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
216conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
217conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
218conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100219conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400220conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400221conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
222conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400223conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
224conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
225conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
226conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
227conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
228conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400229conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
230conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700231conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700232conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400233conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400234conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400235conf.set_quoted('LIBDIR', libdir)
236conf.set_quoted('ROOTLIBDIR', rootlibdir)
237conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
238conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400239conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
240conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
Lennart Poettering1d7579c2018-10-10 21:20:08 +0200241conf.set_quoted('SYSTEMD_IMPORT_FS_PATH', join_paths(rootlibexecdir, 'systemd-import-fs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400242conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
243conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
244conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
245conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200246conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100247conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200248conf.set('STATUS_UNIT_FORMAT_DEFAULT', 'STATUS_UNIT_FORMAT_' + status_unit_format_default.to_upper())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400249
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400250substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100251substs.set('rootprefix', rootprefixdir)
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +0100252substs.set('rootprefix_noslash', rootprefixdir_noslash)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400253substs.set('exec_prefix', prefixdir)
254substs.set('libdir', libdir)
255substs.set('rootlibdir', rootlibdir)
256substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100257substs.set('sysconfdir', sysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400258substs.set('bindir', bindir)
259substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400260substs.set('rootlibexecdir', rootlibexecdir)
261substs.set('systemunitdir', systemunitdir)
262substs.set('userunitdir', userunitdir)
263substs.set('systempresetdir', systempresetdir)
264substs.set('userpresetdir', userpresetdir)
265substs.set('udevhwdbdir', udevhwdbdir)
266substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400267substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200268substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400269substs.set('catalogdir', catalogdir)
270substs.set('tmpfilesdir', tmpfilesdir)
271substs.set('sysusersdir', sysusersdir)
272substs.set('sysctldir', sysctldir)
273substs.set('binfmtdir', binfmtdir)
274substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200275substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400276substs.set('systemgeneratordir', systemgeneratordir)
277substs.set('usergeneratordir', usergeneratordir)
278substs.set('systemenvgeneratordir', systemenvgeneratordir)
279substs.set('userenvgeneratordir', userenvgeneratordir)
280substs.set('systemshutdowndir', systemshutdowndir)
281substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400282substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400283substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
284substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400285substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
286substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
287substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100288substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200289substs.set('STATUS_UNIT_FORMAT_DEFAULT', status_unit_format_default)
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200290substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmeke9bbff12019-05-09 13:23:50 +0200291substs.set('BUILD_ROOT', meson.current_build_dir())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400292
293#####################################################################
294
295cc = meson.get_compiler('c')
296pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400297check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100298meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400299
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200300want_tests = get_option('tests')
301slow_tests = want_tests != 'false' and get_option('slow-tests')
302install_tests = get_option('install-tests')
303
James Hilliard46e63a22018-12-27 09:16:20 +0800304if add_languages('cpp', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200305 # Used only for tests
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100306 cxx = meson.get_compiler('cpp')
307 cxx_cmd = ' '.join(cxx.cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200308else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200309 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400310endif
311
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500312if want_libfuzzer
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +0200313 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer', required : false)
314 if fuzzing_engine.found()
315 add_project_arguments('-fsanitize-coverage=trace-pc-guard,trace-cmp', language : 'c')
316 elif cc.has_argument('-fsanitize=fuzzer-no-link')
317 add_project_arguments('-fsanitize=fuzzer-no-link', language : 'c')
318 else
319 error('Looks like neither libFuzzer nor -fsanitize=fuzzer-no-link is supported')
320 endif
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200321elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500322 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000323elif want_fuzzbuzz
324 fuzzing_engine = meson.get_compiler('cpp').find_library(get_option('fuzzbuzz-engine'), dirs: get_option('fuzzbuzz-engine-dir'))
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500325endif
326
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100327# Those generate many false positives, and we do not want to change the code to
328# avoid them.
329basic_disabled_warnings = [
330 '-Wno-unused-parameter',
331 '-Wno-missing-field-initializers',
332 '-Wno-unused-result',
333 '-Wno-format-signedness',
334]
335if get_option('b_ndebug') == 'true'
336 # With asserts disabled with get a bunch of warnings about variables which
337 # are used only in the asserts. This is not useful at all, so let's just silence
338 # those warnings.
339 basic_disabled_warnings += [
340 '-Wno-unused-variable',
341 '-Wno-unused-but-set-variable',
342 ]
343endif
344
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900345possible_cc_flags = [
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900346 '-Werror=undef',
347 '-Wlogical-op',
348 '-Wmissing-include-dirs',
349 '-Wold-style-definition',
350 '-Wpointer-arith',
351 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900352 '-Wfloat-equal',
353 '-Wsuggest-attribute=noreturn',
354 '-Werror=missing-prototypes',
355 '-Werror=implicit-function-declaration',
356 '-Werror=missing-declarations',
357 '-Werror=return-type',
358 '-Werror=incompatible-pointer-types',
359 '-Werror=format=2',
360 '-Wstrict-prototypes',
361 '-Wredundant-decls',
362 '-Wmissing-noreturn',
363 '-Wimplicit-fallthrough=5',
364 '-Wshadow',
365 '-Wendif-labels',
366 '-Wstrict-aliasing=2',
367 '-Wwrite-strings',
368 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200369 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200370 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900371 '-Wdate-time',
372 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700373
374 # negative arguments are correctly detected starting with meson 0.46.
Zbigniew Jędrzejewski-Szmekeed33622019-03-07 10:56:15 +0100375 '-Wno-error=#warnings', # clang
376 '-Wno-string-plus-int', # clang
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700377
378 # work-around for gcc 7.1 turning this on on its own.
379 '-Wno-error=nonnull',
380
381 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
382 # optimizations enabled, producing essentially false positives.
383 '-Wno-maybe-uninitialized',
384
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900385 '-ffast-math',
386 '-fno-common',
387 '-fdiagnostics-show-option',
388 '-fno-strict-aliasing',
389 '-fvisibility=hidden',
390 '-fstack-protector',
391 '-fstack-protector-strong',
392 '--param=ssp-buffer-size=4',
393]
394
395# --as-needed and --no-undefined are provided by meson by default,
396# run mesonconf to see what is enabled
397possible_link_flags = [
398 '-Wl,-z,relro',
399 '-Wl,-z,now',
Norbert Lange68e70ac2019-09-19 17:49:20 +0200400 '-fstack-protector',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900401]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400402
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900403if cc.get_id() == 'clang'
404 possible_cc_flags += [
405 '-Wno-typedef-redefinition',
406 '-Wno-gnu-variable-sized-type-not-at-end',
407 ]
408endif
409
410if get_option('buildtype') != 'debug'
411 possible_cc_flags += [
412 '-ffunction-sections',
413 '-fdata-sections',
414 ]
415
416 possible_link_flags += '-Wl,--gc-sections'
417endif
418
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100419add_project_arguments(cc.get_supported_arguments(basic_disabled_warnings), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900420add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900421add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900422
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800423if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400424 #include <time.h>
425 #include <inttypes.h>
426 typedef uint64_t usec_t;
427 usec_t now(clockid_t clock);
428 int main(void) {
429 struct timespec now;
430 return 0;
431 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100432''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400433 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400434endif
435
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100436if cxx_cmd != ''
437 add_project_arguments(cxx.get_supported_arguments(basic_disabled_warnings), language : 'cpp')
438endif
439
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200440cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400441
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200442has_wstringop_truncation = cc.has_argument('-Wstringop-truncation')
443
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400444#####################################################################
445# compilation result tests
446
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400447conf.set('_GNU_SOURCE', true)
448conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200449conf.set10('HAVE_WSTRINGOP_TRUNCATION', has_wstringop_truncation)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400450
451conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
452conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
453conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
454conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
455conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
456conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
457conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
458
459decl_headers = '''
460#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100461#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400462'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400463
464foreach decl : ['char16_t',
465 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100466 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400467 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400468
469 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200470 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
471
472 if decl == 'struct statx'
473 if have
474 want_linux_stat_h = false
475 else
476 have = cc.sizeof(decl,
477 prefix : decl_headers + '#include <linux/stat.h>',
478 args : '-D_GNU_SOURCE') > 0
479 want_linux_stat_h = have
480 endif
481 endif
482
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200483 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400484endforeach
485
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200486conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700487
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400488foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200489 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400490endforeach
491
492foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100493 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100494 ['gettid', '''#include <sys/types.h>
495 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100496 ['pivot_root', '''#include <stdlib.h>
497 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100498 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400499 #include <sys/stat.h>
500 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100501 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100502 ['renameat2', '''#include <stdio.h>
503 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400504 ['kcmp', '''#include <linux/kcmp.h>'''],
505 ['keyctl', '''#include <sys/types.h>
506 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100507 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400508 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200509 ['bpf', '''#include <sys/syscall.h>
510 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100511 ['statx', '''#include <sys/types.h>
512 #include <sys/stat.h>
513 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100514 ['explicit_bzero' , '''#include <string.h>'''],
515 ['reallocarray', '''#include <malloc.h>'''],
Michal Sekletarb070c7c2019-03-12 18:58:26 +0100516 ['set_mempolicy', '''#include <stdlib.h>
517 #include <unistd.h>'''],
518 ['get_mempolicy', '''#include <stdlib.h>
519 #include <unistd.h>'''],
Lennart Poettering5f152f42019-10-25 16:06:06 +0200520 ['pidfd_send_signal', '''#include <stdlib.h>
521 #include <unistd.h>
522 #include <signal.h>
523 #include <sys/wait.h>'''],
524 ['pidfd_open', '''#include <stdlib.h>
525 #include <unistd.h>
526 #include <signal.h>
527 #include <sys/wait.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400528]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400529
Lennart Poettering85db59b2017-12-25 12:01:14 +0100530 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200531 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400532endforeach
533
Lennart Poettering85db59b2017-12-25 12:01:14 +0100534if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200535 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200536 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400537else
538 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200539 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200540 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400541endif
542
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400543#####################################################################
544
Davide Cavalca1485aac2019-02-27 11:19:07 -0500545vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
546 project_source_root,
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100547 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100548 meson.project_version()]
549
Louis Taylord1084aa2019-01-21 21:45:36 +0000550version_h = vcs_tag(
551 input : 'src/version/version.h.in',
552 output : 'version.h',
553 command: vcs_tagger)
554
555versiondep = declare_dependency(sources: version_h)
556
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400557sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400558awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400559m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400560stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400561git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100562env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100563perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400564
Davide Cavalca1485aac2019-02-27 11:19:07 -0500565meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400566mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400567test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
568splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400569
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400570# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
571# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500572progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400573 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400574 ['kmod', '/usr/bin/kmod' ],
575 ['kexec', '/usr/sbin/kexec' ],
576 ['sulogin', '/usr/sbin/sulogin' ],
577 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
578 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
579 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
580 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
Michael Biebl6db90462019-07-18 01:24:00 +0200581 ['nologin', '/usr/sbin/nologin', ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400582 ]
583foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400584 path = get_option(prog[0] + '-path')
585 if path != ''
586 message('Using @1@ for @0@'.format(prog[0], path))
587 else
588 exe = find_program(prog[0],
589 '/usr/sbin/' + prog[0],
590 '/sbin/' + prog[0],
591 required: false)
592 path = exe.found() ? exe.path() : prog[1]
593 endif
594 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
595 conf.set_quoted(name, path)
596 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400597endforeach
598
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500599conf.set_quoted('TELINIT', get_option('telinit-path'))
600
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400601if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100602 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400603endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400604
605############################################################
606
607gperf = find_program('gperf')
608
609gperf_test_format = '''
610#include <string.h>
611const char * in_word_set(const char *, @0@);
612@1@
613'''
614gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
615gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
616gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
617if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400618 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400619else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400620 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
621 if cc.compiles(gperf_test)
622 gperf_len_type = 'unsigned'
623 else
624 error('unable to determine gperf len type')
625 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400626endif
627message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400628conf.set('GPERF_LEN_TYPE', gperf_len_type,
629 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400630
631############################################################
632
633if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400634 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400635endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100636foreach header : ['crypt.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400637 'linux/memfd.h',
638 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200639 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400640 'valgrind/memcheck.h',
641 'valgrind/valgrind.h',
642 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400643
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200644 conf.set10('HAVE_' + header.underscorify().to_upper(),
645 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400646endforeach
647
648############################################################
649
650conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400651conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
652gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400653
654default_hierarchy = get_option('default-hierarchy')
655conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
656 description : 'default cgroup hierarchy as string')
657if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400658 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400659elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400660 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400661else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400662 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400663endif
664
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100665default_net_naming_scheme = get_option('default-net-naming-scheme')
666conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
667
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400668time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900669if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400670 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900671 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400672endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400673conf.set('TIME_EPOCH', time_epoch)
674
675system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900676if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400677 system_uid_max = run_command(
678 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800679 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
680 '/etc/login.defs').stdout().strip()
681 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900682 system_uid_max = 999
683 else
684 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800685 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400686endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400687conf.set('SYSTEM_UID_MAX', system_uid_max)
688substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400689
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400690system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900691if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400692 system_gid_max = run_command(
693 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800694 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
695 '/etc/login.defs').stdout().strip()
696 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900697 system_gid_max = 999
698 else
699 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800700 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400701endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400702conf.set('SYSTEM_GID_MAX', system_gid_max)
703substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400704
Yu Watanabeac093402018-05-10 16:04:16 +0900705dynamic_uid_min = get_option('dynamic-uid-min')
706dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100707conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
708conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
709substs.set('dynamicuidmin', dynamic_uid_min)
710substs.set('dynamicuidmax', dynamic_uid_max)
711
Yu Watanabeac093402018-05-10 16:04:16 +0900712container_uid_base_min = get_option('container-uid-base-min')
713container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100714conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
715conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
716substs.set('containeruidbasemin', container_uid_base_min)
717substs.set('containeruidbasemax', container_uid_base_max)
718
Lennart Poetteringafde4572017-12-05 11:00:24 +0100719nobody_user = get_option('nobody-user')
720nobody_group = get_option('nobody-group')
721
Chen Qi2484bff2018-07-23 14:53:09 +0800722if not meson.is_cross_build()
723 getent_result = run_command('getent', 'passwd', '65534')
724 if getent_result.returncode() == 0
725 name = getent_result.stdout().split(':')[0]
726 if name != nobody_user
727 warning('\n' +
728 '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) +
729 'Your build will result in an user table setup that is incompatible with the local system.')
730 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100731 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800732 id_result = run_command('id', '-u', nobody_user)
733 if id_result.returncode() == 0
734 id = id_result.stdout().to_int()
735 if id != 65534
736 warning('\n' +
737 '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) +
738 'Your build will result in an user table setup that is incompatible with the local system.')
739 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100740 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100741
Chen Qi2484bff2018-07-23 14:53:09 +0800742 getent_result = run_command('getent', 'group', '65534')
743 if getent_result.returncode() == 0
744 name = getent_result.stdout().split(':')[0]
745 if name != nobody_group
746 warning('\n' +
747 '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) +
748 'Your build will result in an group table setup that is incompatible with the local system.')
749 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100750 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800751 id_result = run_command('id', '-g', nobody_group)
752 if id_result.returncode() == 0
753 id = id_result.stdout().to_int()
754 if id != 65534
755 warning('\n' +
756 '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) +
757 'Your build will result in an group table setup that is incompatible with the local system.')
758 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100759 endif
760endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900761if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900762 warning('\n' +
763 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
764 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900765endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100766
767conf.set_quoted('NOBODY_USER_NAME', nobody_user)
768conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900769substs.set('NOBODY_USER_NAME', nobody_user)
770substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100771
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400772tty_gid = get_option('tty-gid')
773conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400774substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400775
Ikey Doherty84786b82017-12-03 12:28:23 +0000776# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900777users_gid = get_option('users-gid')
778substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000779
Yu Watanabe348b4432018-05-07 18:17:35 +0900780conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
781conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400782
Michael Bieblace5e312018-07-13 23:36:13 +0200783dev_kvm_mode = get_option('dev-kvm-mode')
784substs.set('DEV_KVM_MODE', dev_kvm_mode)
785conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100786group_render_mode = get_option('group-render-mode')
787substs.set('GROUP_RENDER_MODE', group_render_mode)
788conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400789
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400790kill_user_processes = get_option('default-kill-user-processes')
791conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100792conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400793substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400794
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400795dns_servers = get_option('dns-servers')
796conf.set_quoted('DNS_SERVERS', dns_servers)
797substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400798
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400799ntp_servers = get_option('ntp-servers')
800conf.set_quoted('NTP_SERVERS', ntp_servers)
801substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400802
Dave Reisner8ca9e922018-12-28 07:38:36 -0500803default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900804if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800805 if not meson.is_cross_build()
806 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
807 default_locale = run_command(choose_default_locale_sh).stdout().strip()
808 else
809 default_locale = 'C.UTF-8'
810 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900811endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500812conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
813
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400814conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
815
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200816service_watchdog = get_option('service-watchdog')
Anita Zhang7bc9ea52019-10-25 15:46:21 -0700817watchdog_value = service_watchdog == '' ? '' : 'WatchdogSec=' + service_watchdog
818substs.set('SERVICE_WATCHDOG', watchdog_value)
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200819
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400820substs.set('SUSHELL', get_option('debug-shell'))
821substs.set('DEBUGTTY', get_option('debug-tty'))
Jan Synacek93912e82019-04-25 12:19:16 +0200822conf.set_quoted('DEBUGTTY', get_option('debug-tty'))
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400823
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200824enable_debug_hashmap = false
825enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900826enable_debug_siphash = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200827foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900828 if name == 'hashmap'
829 enable_debug_hashmap = true
830 elif name == 'mmap-cache'
831 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900832 elif name == 'siphash'
833 enable_debug_siphash = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900834 else
835 message('unknown debug option "@0@", ignoring'.format(name))
836 endif
837endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200838conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
839conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900840conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400841
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200842conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200843conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200844
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100845default_user_path = get_option('user-path')
846if default_user_path != ''
847 conf.set_quoted('DEFAULT_USER_PATH', default_user_path)
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100848 default_user_path_display = default_user_path
849else
850 # meson 0.49 fails when ?: is used in .format()
851 default_user_path_display = '(same as system services)'
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100852endif
853
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100854
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400855#####################################################################
856
857threads = dependency('threads')
858librt = cc.find_library('rt')
859libm = cc.find_library('m')
860libdl = cc.find_library('dl')
861libcrypt = cc.find_library('crypt')
862
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400863libcap = dependency('libcap', required : false)
864if not libcap.found()
865 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
866 libcap = cc.find_library('cap')
867endif
868
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400869libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100870 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400871
872want_seccomp = get_option('seccomp')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000873if want_seccomp != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400874 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400875 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400876 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200877 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400878else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200879 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400880 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400881endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200882conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400883
884want_selinux = get_option('selinux')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000885if want_selinux != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400886 libselinux = dependency('libselinux',
887 version : '>= 2.1.9',
888 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200889 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400890else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200891 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400892 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400893endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200894conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400895
896want_apparmor = get_option('apparmor')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000897if want_apparmor != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400898 libapparmor = dependency('libapparmor',
899 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200900 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400901else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200902 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400903 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400904endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200905conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400906
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400907smack_run_label = get_option('smack-run-label')
908if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400909 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400910endif
911
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400912want_polkit = get_option('polkit')
913install_polkit = false
914install_polkit_pkla = false
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000915if want_polkit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400916 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400917
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400918 libpolkit = dependency('polkit-gobject-1',
919 required : false)
920 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
921 message('Old polkit detected, will install pkla files')
922 install_polkit_pkla = true
923 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400924endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200925conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400926
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400927want_acl = get_option('acl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000928if want_acl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400929 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200930 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400931else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200932 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400933 libacl = []
934endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200935conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400936
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400937want_audit = get_option('audit')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000938if want_audit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400939 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200940 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400941else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200942 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400943 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400944endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200945conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400946
947want_blkid = get_option('blkid')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000948if want_blkid != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400949 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200950 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400951else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200952 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400953 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400954endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200955conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400956
957want_kmod = get_option('kmod')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000958if want_kmod != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400959 libkmod = dependency('libkmod',
960 version : '>= 15',
961 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200962 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400963else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200964 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400965 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400966endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200967conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400968
969want_pam = get_option('pam')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000970if want_pam != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400971 libpam = cc.find_library('pam', required : want_pam == 'true')
972 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200973 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400974else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200975 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400976 libpam = []
977 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400978endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200979conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400980
981want_microhttpd = get_option('microhttpd')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000982if want_microhttpd != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400983 libmicrohttpd = dependency('libmicrohttpd',
984 version : '>= 0.9.33',
985 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200986 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400987else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200988 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400989 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400990endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200991conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400992
993want_libcryptsetup = get_option('libcryptsetup')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000994if want_libcryptsetup != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400995 libcryptsetup = dependency('libcryptsetup',
Jay Strictd90874b2019-09-26 15:54:29 +0200996 version : '>= 2.0.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400997 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200998 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400999else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001000 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001001 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001002endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001003conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001004
1005want_libcurl = get_option('libcurl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001006if want_libcurl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001007 libcurl = dependency('libcurl',
1008 version : '>= 7.32.0',
1009 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001010 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001011else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001012 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001013 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001014endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001015conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001016
1017want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001018want_libidn2 = get_option('libidn2')
1019if want_libidn == 'true' and want_libidn2 == 'true'
1020 error('libidn and libidn2 cannot be requested simultaneously')
1021endif
1022
Yu Watanabe1b931392019-06-29 03:13:30 +09001023if want_libidn2 != 'false' and want_libidn != 'true' and not skip_deps
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001024 libidn = dependency('libidn2',
1025 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001026 have = libidn.found()
1027else
1028 have = false
Yu Watanabe1b931392019-06-29 03:13:30 +09001029 libidn = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001030endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001031conf.set10('HAVE_LIBIDN2', have)
Yu Watanabe1b931392019-06-29 03:13:30 +09001032if not have and want_libidn != 'false' and not skip_deps
1033 # libidn is used for both libidn and libidn2 objects
1034 libidn = dependency('libidn',
1035 required : want_libidn == 'true')
1036 have = libidn.found()
1037else
1038 have = false
1039endif
1040conf.set10('HAVE_LIBIDN', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001041
1042want_libiptc = get_option('libiptc')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001043if want_libiptc != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001044 libiptc = dependency('libiptc',
1045 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001046 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001047else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001048 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001049 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001050endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001051conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001052
1053want_qrencode = get_option('qrencode')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001054if want_qrencode != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001055 libqrencode = dependency('libqrencode',
1056 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001057 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001058else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001059 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001060 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001061endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001062conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001063
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001064want_gcrypt = get_option('gcrypt')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001065if want_gcrypt != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001066 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1067 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001068 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001069else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001070 have = false
1071endif
1072if not have
1073 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001074 libgcrypt = []
1075 libgpg_error = []
1076endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001077conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001078
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001079want_gnutls = get_option('gnutls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001080if want_gnutls != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001081 libgnutls = dependency('gnutls',
1082 version : '>= 3.1.4',
1083 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001084 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001085else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001086 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001087 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001088endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001089conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001090
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001091want_openssl = get_option('openssl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001092if want_openssl != 'false' and not skip_deps
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001093 libopenssl = dependency('openssl',
1094 version : '>= 1.1.0',
1095 required : want_openssl == 'true')
1096 have = libopenssl.found()
1097else
1098 have = false
1099 libopenssl = []
1100endif
1101conf.set10('HAVE_OPENSSL', have)
1102
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001103want_elfutils = get_option('elfutils')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001104if want_elfutils != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001105 libdw = dependency('libdw',
1106 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001107 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001108else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001109 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001110 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001111endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001112conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001113
1114want_zlib = get_option('zlib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001115if want_zlib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001116 libz = dependency('zlib',
1117 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001118 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001119else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001120 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001121 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001122endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001123conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001124
1125want_bzip2 = get_option('bzip2')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001126if want_bzip2 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001127 libbzip2 = cc.find_library('bz2',
1128 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001129 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001130else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001131 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001132 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001133endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001134conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001135
1136want_xz = get_option('xz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001137if want_xz != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001138 libxz = dependency('liblzma',
1139 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001140 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001141else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001142 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001143 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001144endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001145conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001146
1147want_lz4 = get_option('lz4')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001148if want_lz4 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001149 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001150 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001151 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001152 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001153else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001154 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001155 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001156endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001157conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001158
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001159want_xkbcommon = get_option('xkbcommon')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001160if want_xkbcommon != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001161 libxkbcommon = dependency('xkbcommon',
1162 version : '>= 0.3.0',
1163 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001164 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001165else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001166 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001167 libxkbcommon = []
1168endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001169conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001170
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001171want_pcre2 = get_option('pcre2')
1172if want_pcre2 != 'false'
1173 libpcre2 = dependency('libpcre2-8',
1174 required : want_pcre2 == 'true')
1175 have = libpcre2.found()
1176else
1177 have = false
1178 libpcre2 = []
1179endif
1180conf.set10('HAVE_PCRE2', have)
1181
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001182want_glib = get_option('glib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001183if want_glib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001184 libglib = dependency('glib-2.0',
1185 version : '>= 2.22.0',
1186 required : want_glib == 'true')
1187 libgobject = dependency('gobject-2.0',
1188 version : '>= 2.22.0',
1189 required : want_glib == 'true')
1190 libgio = dependency('gio-2.0',
1191 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001192 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001193else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001194 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001195 libglib = []
1196 libgobject = []
1197 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001198endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001199conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001200
1201want_dbus = get_option('dbus')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001202if want_dbus != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001203 libdbus = dependency('dbus-1',
1204 version : '>= 1.3.2',
1205 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001206 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001207else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001208 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001209 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001210endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001211conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001212
Yu Watanabe42303dc2017-06-18 05:22:32 +09001213default_dnssec = get_option('default-dnssec')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001214if skip_deps
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001215 default_dnssec = 'no'
1216endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001217if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001218 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1219 default_dnssec = 'no'
1220endif
1221conf.set('DEFAULT_DNSSEC_MODE',
1222 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1223substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1224
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001225dns_over_tls = get_option('dns-over-tls')
1226if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001227 if dns_over_tls == 'openssl'
1228 have_gnutls = false
1229 else
Iwan Timmer38e053c2019-10-29 20:26:05 +01001230 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.6.0'))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001231 if dns_over_tls == 'gnutls' and not have_gnutls
1232 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1233 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001234 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001235 if dns_over_tls == 'gnutls' or have_gnutls
1236 have_openssl = false
1237 else
1238 have_openssl = conf.get('HAVE_OPENSSL') == 1
1239 if dns_over_tls != 'auto' and not have_openssl
1240 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
Yu Watanabeb349bc52019-06-17 10:22:54 +09001241 error('DNS-over-TLS support was requested@0@, but dependencies are not available'.format(str))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001242 endif
1243 endif
1244 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001245else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001246 have = false
1247 have_gnutls = false
1248 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001249endif
1250conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001251conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1252conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001253
Iwan Timmerc9299be2018-06-13 20:26:24 +02001254default_dns_over_tls = get_option('default-dns-over-tls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001255if skip_deps
Iwan Timmerc9299be2018-06-13 20:26:24 +02001256 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001257endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001258if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
Iwan Timmer4310bfc2019-02-18 20:41:46 +01001259 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 +02001260 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001261endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001262conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1263 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1264substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001265
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001266want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001267if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001268 have = (conf.get('HAVE_LIBCURL') == 1 and
1269 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001270 conf.get('HAVE_XZ') == 1 and
1271 conf.get('HAVE_GCRYPT') == 1)
1272 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001273 error('importd support was requested, but dependencies are not available')
1274 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001275else
1276 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001277endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001278conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001279
1280want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001281if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001282 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1283 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001284 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1285 # it's possible to build one without the other. Complain only if
Ben Boeckel5238e952019-04-26 20:22:40 -04001286 # support was explicitly requested. The auxiliary files like sysusers
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001287 # config should be installed when any of the programs are built.
1288 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1289 error('remote support was requested, but dependencies are not available')
1290 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001291 have = have_deps[0] or have_deps[1]
1292else
1293 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001294endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001295conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001296
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001297foreach term : ['utmp',
1298 'hibernate',
1299 'environment-d',
1300 'binfmt',
1301 'coredump',
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001302 'pstore',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001303 'resolve',
1304 'logind',
1305 'hostnamed',
1306 'localed',
1307 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001308 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001309 'networkd',
1310 'timedated',
1311 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001312 'firstboot',
1313 'randomseed',
1314 'backlight',
1315 'vconsole',
1316 'quotacheck',
1317 'sysusers',
1318 'tmpfiles',
1319 'hwdb',
1320 'rfkill',
1321 'ldconfig',
1322 'efi',
1323 'tpm',
1324 'ima',
1325 'smack',
1326 'gshadow',
1327 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001328 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001329 'nss-systemd']
1330 have = get_option(term)
1331 name = 'ENABLE_' + term.underscorify().to_upper()
1332 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001333endforeach
1334
Yu Watanabe08540a92018-07-18 09:25:57 +09001335foreach tuple : [['nss-mymachines', 'machined'],
1336 ['nss-resolve', 'resolve']]
1337 want = get_option(tuple[0])
1338 if want != 'false'
1339 have = get_option(tuple[1])
1340 if want == 'true' and not have
1341 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1342 endif
1343 else
1344 have = false
1345 endif
1346 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1347 conf.set10(name, have)
1348endforeach
1349
1350enable_nss = false
1351foreach term : ['ENABLE_NSS_MYHOSTNAME',
1352 'ENABLE_NSS_MYMACHINES',
1353 'ENABLE_NSS_RESOLVE',
1354 'ENABLE_NSS_SYSTEMD']
1355 if conf.get(term) == 1
1356 enable_nss = true
1357 endif
1358endforeach
1359conf.set10('ENABLE_NSS', enable_nss)
1360
Yu Watanabe348b4432018-05-07 18:17:35 +09001361conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001362
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001363tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001364fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001365
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001366conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001367
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001368#####################################################################
1369
1370if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001371 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001372
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001373 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001374 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001375 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001376 elif efi_arch == 'x86_64'
1377 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001378 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001379 elif efi_arch == 'arm'
1380 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001381 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001382 elif efi_arch == 'aarch64'
1383 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001384 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001385 else
1386 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001387 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001388 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001389
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001390 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001391 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001392
Yu Watanabeac093402018-05-10 16:04:16 +09001393 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001394else
1395 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001396endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001397conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001398
1399#####################################################################
1400
1401config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001402 output : 'config.h',
1403 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001404
Yu Watanabe348b4432018-05-07 18:17:35 +09001405meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1406
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001407includes = include_directories('src/basic',
Zbigniew Jędrzejewski-Szmek91b08bb2019-07-02 13:01:23 +02001408 'src/boot',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001409 'src/shared',
1410 'src/systemd',
1411 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001412 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001413 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001414 'src/resolve',
1415 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001416 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001417 'src/login',
1418 'src/udev',
1419 'src/libudev',
1420 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001421 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001422 'src/libsystemd/sd-bus',
1423 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001424 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001425 'src/libsystemd/sd-hwdb',
1426 'src/libsystemd/sd-id128',
1427 'src/libsystemd/sd-netlink',
1428 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001429 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001430 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001431 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001432
1433add_project_arguments('-include', 'config.h', language : 'c')
1434
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001435generate_gperfs = find_program('tools/generate-gperfs.py')
1436
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001437subdir('po')
1438subdir('catalog')
1439subdir('src/systemd')
1440subdir('src/basic')
1441subdir('src/libsystemd')
1442subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001443subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001444subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001445
1446libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001447 'journal-core',
1448 libjournal_core_sources,
1449 journald_gperf_c,
1450 include_directories : includes,
1451 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001452
Davide Cavalca1485aac2019-02-27 11:19:07 -05001453libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001454libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001455 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001456 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001457 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001458 include_directories : includes,
1459 link_args : ['-shared',
1460 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001461 link_with : [libbasic,
1462 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001463 link_whole : [libsystemd_static,
1464 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001465 dependencies : [threads,
1466 librt,
1467 libxz,
1468 liblz4],
1469 link_depends : libsystemd_sym,
1470 install : true,
1471 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001472
Davide Cavalca70848ec2018-04-09 02:43:35 -07001473static_libsystemd = get_option('static-libsystemd')
1474static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1475
1476install_libsystemd_static = static_library(
1477 'systemd',
1478 libsystemd_sources,
1479 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001480 basic_sources,
1481 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001482 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001483 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001484 build_by_default : static_libsystemd != 'false',
1485 install : static_libsystemd != 'false',
1486 install_dir : rootlibdir,
1487 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1488 dependencies : [threads,
1489 librt,
1490 libxz,
1491 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001492 libcap,
1493 libblkid,
1494 libmount,
1495 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001496 libgcrypt],
1497 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1498
Mario Limonciellob61d7772019-09-09 22:49:35 +01001499#Generate autosuspend rules
1500make_autosuspend_rules_py = find_program('tools/make-autosuspend-rules.py')
1501
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001502############################################################
1503
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001504# binaries that have --help and are intended for use by humans,
1505# usually, but not always, installed in /bin.
1506public_programs = []
1507
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001508subdir('src/libudev')
1509subdir('src/shared')
1510subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001511subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001512subdir('src/udev')
1513subdir('src/network')
1514
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001515subdir('src/analyze')
1516subdir('src/journal-remote')
1517subdir('src/coredump')
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001518subdir('src/pstore')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001519subdir('src/hostname')
1520subdir('src/import')
1521subdir('src/kernel-install')
1522subdir('src/locale')
1523subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001524subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001525subdir('src/nspawn')
1526subdir('src/resolve')
1527subdir('src/timedate')
1528subdir('src/timesync')
1529subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001530subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001531
1532subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001533subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmekef2ad302019-10-08 16:43:18 +02001534subdir('rules.d')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001535subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001536
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001537############################################################
1538
1539# only static linking apart from libdl, to make sure that the
1540# module is linked to all libraries that it uses.
1541test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001542 'test-dlopen',
1543 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001544 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001545 include_directories : includes,
1546 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001547 dependencies : [libdl],
1548 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001549
Yu Watanabe08540a92018-07-18 09:25:57 +09001550foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001551 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001552 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1553 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001554
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001555 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001556 if condition
1557 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001558
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001559 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001560 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001561
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001562 nss = shared_library(
1563 'nss_' + module,
1564 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001565 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001566 version : '2',
1567 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001568 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1569 link_args : ['-Wl,-z,nodelete',
1570 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001571 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001572 link_with : [libsystemd_static,
Lennart Poettering733cbd02019-07-23 14:22:06 +02001573 libshared_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001574 libbasic],
1575 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001576 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001577 link_depends : sym,
1578 install : true,
1579 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001580
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001581 # We cannot use shared_module because it does not support version suffix.
1582 # Unfortunately shared_library insists on creating the symlink…
1583 meson.add_install_script('sh', '-c',
1584 'rm $DESTDIR@0@/libnss_@1@.so'
1585 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001586
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001587 if want_tests != 'false'
1588 test('dlopen-nss_' + module,
1589 test_dlopen,
1590 # path to dlopen must include a slash
1591 args : nss.full_path())
1592 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001593 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001594endforeach
1595
1596############################################################
1597
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001598executable('systemd',
1599 systemd_sources,
1600 include_directories : includes,
1601 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001602 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001603 dependencies : [versiondep,
1604 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001605 librt,
1606 libseccomp,
1607 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001608 libmount,
1609 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001610 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001611 install : true,
1612 install_dir : rootlibexecdir)
1613
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001614meson.add_install_script(meson_make_symlink,
1615 join_paths(rootlibexecdir, 'systemd'),
1616 join_paths(rootsbindir, 'init'))
1617
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001618exe = executable('systemd-analyze',
1619 systemd_analyze_sources,
1620 include_directories : includes,
1621 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001622 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001623 dependencies : [versiondep,
1624 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001625 librt,
1626 libseccomp,
1627 libselinux,
1628 libmount,
1629 libblkid],
1630 install_rpath : rootlibexecdir,
1631 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001632public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001633
1634executable('systemd-journald',
1635 systemd_journald_sources,
1636 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001637 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001638 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001639 dependencies : [threads,
1640 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001641 liblz4,
1642 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001643 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001644 install : true,
1645 install_dir : rootlibexecdir)
1646
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001647exe = executable('systemd-cat',
1648 systemd_cat_sources,
1649 include_directories : includes,
1650 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001651 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001652 dependencies : [threads],
1653 install_rpath : rootlibexecdir,
1654 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001655public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001656
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001657exe = executable('journalctl',
1658 journalctl_sources,
1659 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001660 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001661 dependencies : [threads,
1662 libqrencode,
1663 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001664 liblz4,
1665 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001666 install_rpath : rootlibexecdir,
1667 install : true,
1668 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001669public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001670
1671executable('systemd-getty-generator',
1672 'src/getty-generator/getty-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
1679executable('systemd-debug-generator',
1680 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001681 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001682 link_with : [libshared],
1683 install_rpath : rootlibexecdir,
1684 install : true,
1685 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001686
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001687executable('systemd-run-generator',
1688 'src/run-generator/run-generator.c',
1689 include_directories : includes,
1690 link_with : [libshared],
1691 install_rpath : rootlibexecdir,
1692 install : true,
1693 install_dir : systemgeneratordir)
1694
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001695executable('systemd-fstab-generator',
1696 'src/fstab-generator/fstab-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001697 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01001698 link_with : [libcore_shared,
1699 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001700 install_rpath : rootlibexecdir,
1701 install : true,
1702 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001703
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001704if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001705 executable('30-systemd-environment-d-generator',
1706 'src/environment-d-generator/environment-d-generator.c',
1707 include_directories : includes,
1708 link_with : [libshared],
1709 install_rpath : rootlibexecdir,
1710 install : true,
1711 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001712
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001713 meson.add_install_script(meson_make_symlink,
1714 join_paths(sysconfdir, 'environment'),
1715 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001716endif
1717
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001718if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001719 executable('systemd-hibernate-resume-generator',
1720 'src/hibernate-resume/hibernate-resume-generator.c',
1721 include_directories : includes,
1722 link_with : [libshared],
1723 install_rpath : rootlibexecdir,
1724 install : true,
1725 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001726
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001727 executable('systemd-hibernate-resume',
1728 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001729 include_directories : includes,
1730 link_with : [libshared],
1731 install_rpath : rootlibexecdir,
1732 install : true,
1733 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001734endif
1735
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001736if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001737 executable('systemd-gpt-auto-generator',
1738 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001739 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001740 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001741 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001742 dependencies : libblkid,
1743 install_rpath : rootlibexecdir,
1744 install : true,
1745 install_dir : systemgeneratordir)
1746
1747 exe = executable('systemd-dissect',
1748 'src/dissect/dissect.c',
1749 include_directories : includes,
1750 link_with : [libshared],
1751 install_rpath : rootlibexecdir,
1752 install : true,
1753 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001754 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001755endif
1756
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001757if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001758 executable('systemd-resolved',
1759 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001760 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001761 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001762 libbasic_gcrypt,
1763 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001764 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001765 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001766 install : true,
1767 install_dir : rootlibexecdir)
1768
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001769 exe = executable('resolvectl',
1770 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001771 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001772 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001773 libbasic_gcrypt,
1774 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001775 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001776 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001777 libm,
1778 libidn],
1779 install_rpath : rootlibexecdir,
1780 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001781 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001782
1783 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001784 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001785 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001786
1787 meson.add_install_script(meson_make_symlink,
1788 join_paths(bindir, 'resolvectl'),
1789 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001790endif
1791
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001792if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001793 executable('systemd-logind',
1794 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001795 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001796 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001797 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001798 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001799 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001800 install_rpath : rootlibexecdir,
1801 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001802 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001803
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001804 exe = executable('loginctl',
1805 loginctl_sources,
1806 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001807 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001808 dependencies : [threads,
1809 liblz4,
1810 libxz],
1811 install_rpath : rootlibexecdir,
1812 install : true,
1813 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001814 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001815
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001816 exe = executable('systemd-inhibit',
1817 'src/login/inhibit.c',
1818 include_directories : includes,
1819 link_with : [libshared],
1820 install_rpath : rootlibexecdir,
1821 install : true,
1822 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001823 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001824
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001825 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001826 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001827 pam_systemd = shared_library(
1828 'pam_systemd',
1829 pam_systemd_c,
1830 name_prefix : '',
1831 include_directories : includes,
1832 link_args : ['-shared',
1833 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001834 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001835 libshared_static],
1836 dependencies : [threads,
1837 libpam,
1838 libpam_misc],
1839 link_depends : pam_systemd_sym,
1840 install : true,
1841 install_dir : pamlibdir)
1842
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001843 if want_tests != 'false'
1844 test('dlopen-pam_systemd',
1845 test_dlopen,
1846 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001847 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001848 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001849 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001850
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001851 executable('systemd-user-runtime-dir',
1852 user_runtime_dir_sources,
1853 include_directories : includes,
1854 link_with : [libshared],
1855 install_rpath : rootlibexecdir,
1856 install : true,
1857 install_dir : rootlibexecdir)
1858endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001859
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001860if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001861 executable('systemd-user-sessions',
1862 'src/user-sessions/user-sessions.c',
1863 include_directories : includes,
1864 link_with : [libshared],
1865 install_rpath : rootlibexecdir,
1866 install : true,
1867 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001868endif
1869
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001870if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001871 exe = executable('bootctl',
1872 'src/boot/bootctl.c',
1873 include_directories : includes,
1874 link_with : [libshared],
1875 dependencies : [libblkid],
1876 install_rpath : rootlibexecdir,
1877 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001878 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001879
1880 executable('systemd-bless-boot',
1881 'src/boot/bless-boot.c',
1882 include_directories : includes,
1883 link_with : [libshared],
1884 dependencies : [libblkid],
1885 install_rpath : rootlibexecdir,
1886 install : true,
1887 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001888
1889 executable('systemd-bless-boot-generator',
1890 'src/boot/bless-boot-generator.c',
1891 include_directories : includes,
1892 link_with : [libshared],
1893 install_rpath : rootlibexecdir,
1894 install : true,
1895 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001896endif
1897
Lennart Poetteringf876f532018-06-25 16:07:33 +02001898executable('systemd-boot-check-no-failures',
1899 'src/boot/boot-check-no-failures.c',
1900 include_directories : includes,
1901 link_with : [libshared],
1902 dependencies : [libblkid],
1903 install_rpath : rootlibexecdir,
1904 install : true,
1905 install_dir : rootlibexecdir)
1906
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001907exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1908 include_directories : includes,
1909 link_with : [libshared],
1910 dependencies : [threads],
1911 install_rpath : rootlibexecdir,
1912 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001913public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001914
Felipe Satelerf3794362018-05-22 15:08:57 -04001915
1916if get_option('link-systemctl-shared')
1917 systemctl_link_with = [libshared]
1918else
1919 systemctl_link_with = [libsystemd_static,
1920 libshared_static,
1921 libjournal_client,
1922 libbasic_gcrypt]
1923endif
1924
Lennart Poettering63a3b3c2019-03-22 20:05:08 +01001925exe = executable('systemctl',
1926 'src/systemctl/systemctl.c',
1927 'src/systemctl/sysv-compat.h',
1928 'src/systemctl/sysv-compat.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001929 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001930 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001931 dependencies : [threads,
1932 libcap,
1933 libselinux,
1934 libxz,
1935 liblz4],
1936 install_rpath : rootlibexecdir,
1937 install : true,
1938 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001939public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001940
Lennart Poettering61d05782018-04-16 21:41:40 +02001941if conf.get('ENABLE_PORTABLED') == 1
1942 executable('systemd-portabled',
1943 systemd_portabled_sources,
1944 include_directories : includes,
1945 link_with : [libshared],
1946 dependencies : [threads],
1947 install_rpath : rootlibexecdir,
1948 install : true,
1949 install_dir : rootlibexecdir)
1950
1951 exe = executable('portablectl', 'src/portable/portablectl.c',
1952 include_directories : includes,
1953 link_with : [libshared],
1954 dependencies : [threads],
1955 install_rpath : rootlibexecdir,
1956 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001957 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001958 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001959endif
1960
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001961foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1962 meson.add_install_script(meson_make_symlink,
1963 join_paths(rootbindir, 'systemctl'),
1964 join_paths(rootsbindir, alias))
1965endforeach
1966
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001967if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001968 executable('systemd-backlight',
1969 'src/backlight/backlight.c',
1970 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001971 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001972 install_rpath : rootlibexecdir,
1973 install : true,
1974 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001975endif
1976
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001977if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001978 executable('systemd-rfkill',
1979 'src/rfkill/rfkill.c',
1980 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001981 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001982 install_rpath : rootlibexecdir,
1983 install : true,
1984 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001985endif
1986
1987executable('systemd-system-update-generator',
1988 'src/system-update-generator/system-update-generator.c',
1989 include_directories : includes,
1990 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001991 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001992 install : true,
1993 install_dir : systemgeneratordir)
1994
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001995if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001996 executable('systemd-cryptsetup',
1997 'src/cryptsetup/cryptsetup.c',
1998 include_directories : includes,
1999 link_with : [libshared],
2000 dependencies : [libcryptsetup],
2001 install_rpath : rootlibexecdir,
2002 install : true,
2003 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002004
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002005 executable('systemd-cryptsetup-generator',
2006 'src/cryptsetup/cryptsetup-generator.c',
2007 include_directories : includes,
2008 link_with : [libshared],
2009 dependencies : [libcryptsetup],
2010 install_rpath : rootlibexecdir,
2011 install : true,
2012 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002013
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002014 executable('systemd-veritysetup',
2015 'src/veritysetup/veritysetup.c',
2016 include_directories : includes,
2017 link_with : [libshared],
2018 dependencies : [libcryptsetup],
2019 install_rpath : rootlibexecdir,
2020 install : true,
2021 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002022
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002023 executable('systemd-veritysetup-generator',
2024 'src/veritysetup/veritysetup-generator.c',
2025 include_directories : includes,
2026 link_with : [libshared],
2027 dependencies : [libcryptsetup],
2028 install_rpath : rootlibexecdir,
2029 install : true,
2030 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002031endif
2032
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002033if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002034 executable('systemd-sysv-generator',
2035 'src/sysv-generator/sysv-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 -04002041
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002042 executable('systemd-rc-local-generator',
2043 'src/rc-local-generator/rc-local-generator.c',
2044 include_directories : includes,
2045 link_with : [libshared],
2046 install_rpath : rootlibexecdir,
2047 install : true,
2048 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002049endif
2050
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002051if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002052 executable('systemd-hostnamed',
2053 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002054 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002055 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002056 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002057 install : true,
2058 install_dir : rootlibexecdir)
2059
2060 exe = executable('hostnamectl',
2061 'src/hostname/hostnamectl.c',
2062 include_directories : includes,
2063 link_with : [libshared],
2064 install_rpath : rootlibexecdir,
2065 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002066 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002067endif
2068
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002069if conf.get('ENABLE_LOCALED') == 1
2070 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002071 # logind will load libxkbcommon.so dynamically on its own
2072 deps = [libdl]
2073 else
2074 deps = []
2075 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002076
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002077 executable('systemd-localed',
2078 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002079 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002080 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002081 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002082 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002083 install : true,
2084 install_dir : rootlibexecdir)
2085
2086 exe = executable('localectl',
2087 localectl_sources,
2088 include_directories : includes,
2089 link_with : [libshared],
2090 install_rpath : rootlibexecdir,
2091 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002092 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002093endif
2094
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002095if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002096 executable('systemd-timedated',
2097 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002098 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002099 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002100 install_rpath : rootlibexecdir,
2101 install : true,
2102 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002103endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002104
Yu Watanabe6129ec82018-05-03 18:07:43 +09002105if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002106 exe = executable('timedatectl',
2107 'src/timedate/timedatectl.c',
2108 include_directories : includes,
2109 install_rpath : rootlibexecdir,
2110 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002111 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002112 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002113 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002114endif
2115
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002116if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002117 executable('systemd-timesyncd',
2118 systemd_timesyncd_sources,
2119 include_directories : includes,
2120 link_with : [libshared],
2121 dependencies : [threads,
2122 libm],
2123 install_rpath : rootlibexecdir,
2124 install : true,
2125 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002126
2127 executable('systemd-time-wait-sync',
2128 'src/time-wait-sync/time-wait-sync.c',
2129 include_directories : includes,
2130 link_with : [libshared],
2131 install_rpath : rootlibexecdir,
2132 install : true,
2133 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002134endif
2135
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002136if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002137 executable('systemd-machined',
2138 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002139 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002140 link_with : [libmachine_core,
2141 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002142 install_rpath : rootlibexecdir,
2143 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002144 install_dir : rootlibexecdir)
2145
2146 exe = executable('machinectl',
2147 'src/machine/machinectl.c',
2148 include_directories : includes,
2149 link_with : [libshared],
2150 dependencies : [threads,
2151 libxz,
2152 liblz4],
2153 install_rpath : rootlibexecdir,
2154 install : true,
2155 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002156 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002157endif
2158
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002159if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002160 executable('systemd-importd',
2161 systemd_importd_sources,
2162 include_directories : includes,
2163 link_with : [libshared],
2164 dependencies : [threads],
2165 install_rpath : rootlibexecdir,
2166 install : true,
2167 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002168
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002169 systemd_pull = executable('systemd-pull',
2170 systemd_pull_sources,
2171 include_directories : includes,
2172 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002173 dependencies : [versiondep,
2174 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002175 libz,
2176 libbzip2,
2177 libxz,
2178 libgcrypt],
2179 install_rpath : rootlibexecdir,
2180 install : true,
2181 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002182
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002183 systemd_import = executable('systemd-import',
2184 systemd_import_sources,
2185 include_directories : includes,
2186 link_with : [libshared],
2187 dependencies : [libcurl,
2188 libz,
2189 libbzip2,
2190 libxz],
2191 install_rpath : rootlibexecdir,
2192 install : true,
2193 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002194
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002195 systemd_import_fs = executable('systemd-import-fs',
2196 systemd_import_fs_sources,
2197 include_directories : includes,
2198 link_with : [libshared],
2199 install_rpath : rootlibexecdir,
2200 install : true,
2201 install_dir : rootlibexecdir)
2202
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002203 systemd_export = executable('systemd-export',
2204 systemd_export_sources,
2205 include_directories : includes,
2206 link_with : [libshared],
2207 dependencies : [libcurl,
2208 libz,
2209 libbzip2,
2210 libxz],
2211 install_rpath : rootlibexecdir,
2212 install : true,
2213 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002214
2215 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002216endif
2217
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002218if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002219 exe = executable('systemd-journal-upload',
2220 systemd_journal_upload_sources,
2221 include_directories : includes,
2222 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002223 dependencies : [versiondep,
2224 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002225 libcurl,
2226 libgnutls,
2227 libxz,
2228 liblz4],
2229 install_rpath : rootlibexecdir,
2230 install : true,
2231 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002232 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002233endif
2234
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002235if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002236 s_j_remote = executable('systemd-journal-remote',
2237 systemd_journal_remote_sources,
2238 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002239 link_with : [libshared,
2240 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002241 dependencies : [threads,
2242 libmicrohttpd,
2243 libgnutls,
2244 libxz,
2245 liblz4],
2246 install_rpath : rootlibexecdir,
2247 install : true,
2248 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002249
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002250 s_j_gatewayd = executable('systemd-journal-gatewayd',
2251 systemd_journal_gatewayd_sources,
2252 include_directories : includes,
2253 link_with : [libshared],
2254 dependencies : [threads,
2255 libmicrohttpd,
2256 libgnutls,
2257 libxz,
2258 liblz4],
2259 install_rpath : rootlibexecdir,
2260 install : true,
2261 install_dir : rootlibexecdir)
2262 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002263endif
2264
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002265if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002266 executable('systemd-coredump',
2267 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002268 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002269 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002270 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002271 libacl,
2272 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002273 libxz,
2274 liblz4],
2275 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002276 install : true,
2277 install_dir : rootlibexecdir)
2278
2279 exe = executable('coredumpctl',
2280 coredumpctl_sources,
2281 include_directories : includes,
2282 link_with : [libshared],
2283 dependencies : [threads,
2284 libxz,
2285 liblz4],
2286 install_rpath : rootlibexecdir,
2287 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002288 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002289endif
2290
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002291if conf.get('ENABLE_PSTORE') == 1
2292 executable('systemd-pstore',
2293 systemd_pstore_sources,
2294 include_directories : includes,
2295 link_with : [libshared],
2296 dependencies : [threads,
2297 libacl,
2298 libdw,
2299 libxz,
2300 liblz4],
2301 install_rpath : rootlibexecdir,
2302 install : true,
2303 install_dir : rootlibexecdir)
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002304endif
2305
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002306if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002307 exe = executable('systemd-binfmt',
2308 'src/binfmt/binfmt.c',
2309 include_directories : includes,
2310 link_with : [libshared],
2311 install_rpath : rootlibexecdir,
2312 install : true,
2313 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002314 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002315
2316 meson.add_install_script('sh', '-c',
2317 mkdir_p.format(binfmtdir))
2318 meson.add_install_script('sh', '-c',
2319 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2320endif
2321
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002322if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002323 executable('systemd-vconsole-setup',
2324 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002325 include_directories : includes,
2326 link_with : [libshared],
2327 install_rpath : rootlibexecdir,
2328 install : true,
2329 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002330endif
2331
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002332if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002333 executable('systemd-random-seed',
2334 'src/random-seed/random-seed.c',
2335 include_directories : includes,
2336 link_with : [libshared],
2337 install_rpath : rootlibexecdir,
2338 install : true,
2339 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002340endif
2341
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002342if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002343 executable('systemd-firstboot',
2344 'src/firstboot/firstboot.c',
2345 include_directories : includes,
2346 link_with : [libshared],
2347 dependencies : [libcrypt],
2348 install_rpath : rootlibexecdir,
2349 install : true,
2350 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002351endif
2352
2353executable('systemd-remount-fs',
2354 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002355 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002356 link_with : [libcore_shared,
2357 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002358 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002359 install : true,
2360 install_dir : rootlibexecdir)
2361
2362executable('systemd-machine-id-setup',
2363 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002364 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002365 link_with : [libcore_shared,
2366 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002367 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002368 install : true,
2369 install_dir : rootbindir)
2370
2371executable('systemd-fsck',
2372 'src/fsck/fsck.c',
2373 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002374 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002375 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002376 install : true,
2377 install_dir : rootlibexecdir)
2378
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002379executable('systemd-growfs',
2380 'src/partition/growfs.c',
2381 include_directories : includes,
2382 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002383 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002384 install_rpath : rootlibexecdir,
2385 install : true,
2386 install_dir : rootlibexecdir)
2387
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002388executable('systemd-makefs',
2389 'src/partition/makefs.c',
2390 include_directories : includes,
2391 link_with : [libshared],
2392 install_rpath : rootlibexecdir,
2393 install : true,
2394 install_dir : rootlibexecdir)
2395
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002396executable('systemd-sleep',
2397 'src/sleep/sleep.c',
2398 include_directories : includes,
2399 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002400 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002401 install : true,
2402 install_dir : rootlibexecdir)
2403
Yu Watanabed25e1272019-01-03 02:32:57 +09002404install_data('src/sleep/sleep.conf',
2405 install_dir : pkgsysconfdir)
2406
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002407exe = executable('systemd-sysctl',
2408 'src/sysctl/sysctl.c',
2409 include_directories : includes,
2410 link_with : [libshared],
2411 install_rpath : rootlibexecdir,
2412 install : true,
2413 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002414public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002415
2416executable('systemd-ac-power',
2417 'src/ac-power/ac-power.c',
2418 include_directories : includes,
2419 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002420 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002421 install : true,
2422 install_dir : rootlibexecdir)
2423
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002424exe = executable('systemd-detect-virt',
2425 'src/detect-virt/detect-virt.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-delta',
2433 'src/delta/delta.c',
2434 include_directories : includes,
2435 link_with : [libshared],
2436 install_rpath : rootlibexecdir,
2437 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002438public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002439
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002440exe = executable('systemd-escape',
2441 'src/escape/escape.c',
2442 include_directories : includes,
2443 link_with : [libshared],
2444 install_rpath : rootlibexecdir,
2445 install : true,
2446 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002447public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002448
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002449exe = executable('systemd-notify',
2450 'src/notify/notify.c',
2451 include_directories : includes,
2452 link_with : [libshared],
2453 install_rpath : rootlibexecdir,
2454 install : true,
2455 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002456public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002457
2458executable('systemd-volatile-root',
2459 'src/volatile-root/volatile-root.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
2466executable('systemd-cgroups-agent',
2467 'src/cgroups-agent/cgroups-agent.c',
2468 include_directories : includes,
2469 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002470 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002471 install : true,
2472 install_dir : rootlibexecdir)
2473
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002474exe = executable('systemd-id128',
2475 'src/id128/id128.c',
2476 include_directories : includes,
2477 link_with : [libshared],
2478 install_rpath : rootlibexecdir,
2479 install : true)
2480public_programs += exe
2481
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002482exe = executable('systemd-path',
2483 'src/path/path.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)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002488public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002489
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002490exe = executable('systemd-ask-password',
2491 'src/ask-password/ask-password.c',
2492 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002493 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002494 install_rpath : rootlibexecdir,
2495 install : true,
2496 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002497public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002498
2499executable('systemd-reply-password',
2500 'src/reply-password/reply-password.c',
2501 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002502 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002503 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002504 install : true,
2505 install_dir : rootlibexecdir)
2506
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002507exe = executable('systemd-tty-ask-password-agent',
2508 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2509 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002510 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002511 install_rpath : rootlibexecdir,
2512 install : true,
2513 install_dir : rootbindir)
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-cgls',
2517 'src/cgls/cgls.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
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002524exe = executable('systemd-cgtop',
2525 'src/cgtop/cgtop.c',
2526 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002527 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002528 install_rpath : rootlibexecdir,
2529 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002530public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002531
2532executable('systemd-initctl',
2533 'src/initctl/initctl.c',
2534 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002535 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002536 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002537 install : true,
2538 install_dir : rootlibexecdir)
2539
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002540exe = executable('systemd-mount',
2541 'src/mount/mount-tool.c',
2542 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002543 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek7d991d42019-04-04 13:41:47 +02002544 dependencies: [libmount],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002545 install_rpath : rootlibexecdir,
2546 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002547public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002548
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002549meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002550 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002551
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002552exe = executable('systemd-run',
2553 'src/run/run.c',
2554 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002555 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002556 install_rpath : rootlibexecdir,
2557 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002558public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002559
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002560exe = executable('systemd-stdio-bridge',
2561 'src/stdio-bridge/stdio-bridge.c',
2562 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002563 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002564 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002565 install_rpath : rootlibexecdir,
2566 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002567public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002568
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002569exe = executable('busctl',
2570 'src/busctl/busctl.c',
2571 'src/busctl/busctl-introspect.c',
2572 'src/busctl/busctl-introspect.h',
2573 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002574 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002575 install_rpath : rootlibexecdir,
2576 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002577public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002578
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002579if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002580 exe = executable('systemd-sysusers',
2581 'src/sysusers/sysusers.c',
2582 include_directories : includes,
2583 link_with : [libshared],
2584 install_rpath : rootlibexecdir,
2585 install : true,
2586 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002587 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002588endif
2589
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002590if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002591 exe = executable('systemd-tmpfiles',
2592 'src/tmpfiles/tmpfiles.c',
2593 include_directories : includes,
2594 link_with : [libshared],
2595 dependencies : [libacl],
2596 install_rpath : rootlibexecdir,
2597 install : true,
2598 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002599 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002600
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002601 if want_tests != 'false'
2602 test('test-systemd-tmpfiles',
2603 test_systemd_tmpfiles_py,
2604 # https://github.com/mesonbuild/meson/issues/2681
2605 args : exe.full_path())
2606 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002607endif
2608
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002609if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002610 exe = executable('systemd-hwdb',
2611 'src/hwdb/hwdb.c',
2612 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2613 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002614 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002615 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002616 install : true,
2617 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002618 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002619endif
2620
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002621if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002622 executable('systemd-quotacheck',
2623 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002624 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002625 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002626 install_rpath : rootlibexecdir,
2627 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002628 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002629endif
2630
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002631exe = executable('systemd-socket-proxyd',
2632 'src/socket-proxy/socket-proxyd.c',
2633 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002634 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002635 dependencies : [threads],
2636 install_rpath : rootlibexecdir,
2637 install : true,
2638 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002639public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002640
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002641exe = executable('systemd-udevd',
2642 systemd_udevd_sources,
2643 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002644 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002645 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002646 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002647 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002648 dependencies : [versiondep,
2649 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002650 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002651 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002652 libacl,
2653 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002654 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002655 install : true,
2656 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002657public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002658
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002659exe = executable('udevadm',
2660 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002661 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002662 include_directories : includes,
2663 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002664 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002665 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002666 dependencies : [versiondep,
2667 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002668 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002669 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002670 libacl,
2671 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002672 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002673 install : true,
2674 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002675public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002676
2677executable('systemd-shutdown',
2678 systemd_shutdown_sources,
2679 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002680 link_with : [libcore_shared,
2681 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002682 dependencies : [libmount],
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-done',
2688 'src/update-done/update-done.c',
2689 include_directories : includes,
2690 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002691 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002692 install : true,
2693 install_dir : rootlibexecdir)
2694
2695executable('systemd-update-utmp',
2696 'src/update-utmp/update-utmp.c',
2697 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002698 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002699 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002700 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002701 install : true,
2702 install_dir : rootlibexecdir)
2703
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002704if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002705 executable('systemd-modules-load',
2706 'src/modules-load/modules-load.c',
2707 include_directories : includes,
2708 link_with : [libshared],
2709 dependencies : [libkmod],
2710 install_rpath : rootlibexecdir,
2711 install : true,
2712 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002713
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002714 meson.add_install_script('sh', '-c',
2715 mkdir_p.format(modulesloaddir))
2716 meson.add_install_script('sh', '-c',
2717 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002718endif
2719
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002720exe = executable('systemd-nspawn',
2721 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002722 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002723 link_with : [libcore_shared,
2724 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002725 libshared],
Franck Bui82384232019-03-22 11:09:08 +01002726 dependencies : [libblkid,
2727 libseccomp],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002728 install_rpath : rootlibexecdir,
2729 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002730public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002731
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002732if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002733 executable('systemd-networkd',
2734 systemd_networkd_sources,
Yu Watanabe737f1402019-10-30 17:02:15 +09002735 include_directories : network_include_dir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002736 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002737 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002738 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002739 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002740 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002741 install_rpath : rootlibexecdir,
2742 install : true,
2743 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002744
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002745 executable('systemd-networkd-wait-online',
2746 systemd_networkd_wait_online_sources,
2747 include_directories : includes,
2748 link_with : [libnetworkd_core,
2749 libshared],
2750 install_rpath : rootlibexecdir,
2751 install : true,
2752 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002753
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002754 exe = executable('networkctl',
2755 networkctl_sources,
2756 include_directories : includes,
2757 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002758 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002759 install_rpath : rootlibexecdir,
2760 install : true,
2761 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002762 public_programs += exe
Yu Watanabe426c1d32019-07-13 03:35:04 +09002763
2764 executable('systemd-network-generator',
2765 network_generator_sources,
2766 include_directories : includes,
2767 link_with : [libshared],
2768 install_rpath : rootlibexecdir,
2769 install : true,
2770 install_dir : rootlibexecdir)
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002771endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002772
2773executable('systemd-sulogin-shell',
2774 ['src/sulogin-shell/sulogin-shell.c'],
2775 include_directories : includes,
2776 link_with : [libshared],
2777 install_rpath : rootlibexecdir,
2778 install : true,
2779 install_dir : rootlibexecdir)
2780
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002781############################################################
2782
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002783custom_target(
2784 'systemd-runtest.env',
2785 output : 'systemd-runtest.env',
2786 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05002787 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002788 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002789 '} >@OUTPUT@'],
2790 build_by_default : true)
2791
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002792foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002793 sources = tuple[0]
2794 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2795 dependencies = tuple[2]
2796 condition = tuple.length() >= 4 ? tuple[3] : ''
2797 type = tuple.length() >= 5 ? tuple[4] : ''
2798 defs = tuple.length() >= 6 ? tuple[5] : []
2799 incs = tuple.length() >= 7 ? tuple[6] : includes
2800 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002801
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002802 name = sources[0].split('/')[-1].split('.')[0]
2803 if type.startswith('timeout=')
2804 timeout = type.split('=')[1].to_int()
2805 type = ''
2806 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002807
2808 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002809 exe = executable(
2810 name,
2811 sources,
2812 include_directories : incs,
2813 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002814 dependencies : [versiondep,
2815 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002816 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002817 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002818 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002819 install : install_tests,
2820 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002821
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002822 if type == 'manual'
2823 message('@0@ is a manual test'.format(name))
2824 elif type == 'unsafe' and want_tests != 'unsafe'
2825 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002826 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002827 test(name, exe,
2828 env : test_env,
2829 timeout : timeout)
2830 endif
2831 else
2832 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2833 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002834endforeach
2835
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002836exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002837 'test-libsystemd-sym',
2838 test_libsystemd_sym_c,
2839 include_directories : includes,
2840 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002841 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002842 install : install_tests,
2843 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002844if want_tests != 'false'
2845 test('test-libsystemd-sym', exe)
2846endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002847
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002848exe = executable(
2849 'test-libsystemd-static-sym',
2850 test_libsystemd_sym_c,
2851 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002852 link_with : [install_libsystemd_static],
2853 dependencies : [threads], # threads is already included in dependencies on the library,
2854 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002855 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002856 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002857 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002858if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002859 test('test-libsystemd-static-sym', exe)
2860endif
2861
2862exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002863 'test-libudev-sym',
2864 test_libudev_sym_c,
2865 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002866 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002867 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002868 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002869 install : install_tests,
2870 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002871if want_tests != 'false'
2872 test('test-libudev-sym', exe)
2873endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002874
2875exe = executable(
2876 'test-libudev-static-sym',
2877 test_libudev_sym_c,
2878 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002879 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002880 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002881 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002882 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002883 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002884if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002885 test('test-libudev-static-sym', exe)
2886endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002887
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002888############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002889
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002890fuzzer_exes = []
2891
Michael Olbrich59967402018-11-11 11:27:35 +01002892if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002893foreach tuple : fuzzers
2894 sources = tuple[0]
2895 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2896 dependencies = tuple[2]
2897 defs = tuple.length() >= 4 ? tuple[3] : []
2898 incs = tuple.length() >= 5 ? tuple[4] : includes
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002899 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002900
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002901 if want_ossfuzz or want_fuzzbuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002902 dependencies += fuzzing_engine
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002903 elif want_libfuzzer
2904 if fuzzing_engine.found()
2905 dependencies += fuzzing_engine
2906 else
2907 link_args += ['-fsanitize=fuzzer']
2908 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002909 else
2910 sources += 'src/fuzz/fuzz-main.c'
2911 endif
2912
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00002913 if want_fuzzbuzz
2914 sources += 'src/fuzz/fuzzer-entry-point.c'
2915 endif
2916
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002917 name = sources[0].split('/')[-1].split('.')[0]
2918
2919 fuzzer_exes += executable(
2920 name,
2921 sources,
2922 include_directories : [incs, include_directories('src/fuzz')],
2923 link_with : link_with,
2924 dependencies : dependencies,
2925 c_args : defs,
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002926 link_args: link_args,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002927 install : false)
2928endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002929endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002930
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01002931run_target('fuzzers',
2932 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002933 command : ['true'])
2934
2935############################################################
2936
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002937make_directive_index_py = find_program('tools/make-directive-index.py')
2938make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002939xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002940hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek62d39992019-11-15 11:32:24 +01002941autosuspend_update_sh = find_program('tools/meson-autosuspend-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002942
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002943subdir('sysctl.d')
2944subdir('sysusers.d')
2945subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmek4f10b802019-10-08 16:52:10 +02002946subdir('hwdb.d')
2947subdir('units')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002948subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002949subdir('network')
2950subdir('man')
2951subdir('shell-completion/bash')
2952subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002953subdir('docs/sysvinit')
2954subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002955
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002956install_subdir('factory/etc',
2957 install_dir : factorydir)
2958
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002959install_data('xorg/50-systemd-user.sh',
2960 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002961install_data('modprobe.d/systemd.conf',
2962 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002963install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002964 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002965 'NEWS',
2966 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302967 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002968 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002969 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302970 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002971 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002972 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002973 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002974 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2975 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002976
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002977meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2978meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2979
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002980############################################################
2981
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002982meson_check_help = find_program('tools/meson-check-help.sh')
2983
2984foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002985 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002986 if want_tests != 'false'
2987 test('check-help-' + name,
2988 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002989 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002990 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002991endforeach
2992
2993############################################################
2994
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02002995check_directives_sh = find_program('tools/check-directives.sh')
2996
2997if want_tests != 'false'
2998 test('check-directives',
2999 check_directives_sh,
3000 args : project_source_root)
3001endif
3002
3003############################################################
3004
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003005# Enable tests for all supported sanitizers
3006foreach tuple : sanitizers
3007 sanitizer = tuple[0]
3008 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003009
Yu Watanabe7a6397d2018-05-15 20:18:24 +09003010 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003011 prev = ''
3012 foreach p : fuzz_regression_tests
3013 b = p.split('/')[-2]
3014 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003015
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003016 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003017
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003018 if name != prev
3019 if want_tests == 'false'
3020 message('Not compiling @0@ because tests is set to false'.format(name))
3021 elif slow_tests
3022 exe = custom_target(
3023 name,
3024 output : name,
3025 depends : build,
3026 command : [env, 'ln', '-fs',
3027 join_paths(build.full_path(), b),
3028 '@OUTPUT@'],
3029 build_by_default : true)
3030 else
3031 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3032 endif
3033 endif
3034 prev = name
3035
3036 if want_tests != 'false' and slow_tests
3037 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3038 env,
3039 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003040 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003041 endif
3042 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003043 endif
3044endforeach
3045
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003046
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003047############################################################
3048
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003049if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003050 all_files = run_command(
3051 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003052 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003053 'ls-files',
3054 ':/*.[ch]'])
3055 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003056
userwithuide85a6902017-08-09 13:41:44 +00003057 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003058 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003059 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003060 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003061 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003062 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003063 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003064endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003065
3066if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003067 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003068 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003069 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003070 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003071endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003072
3073if git.found()
3074 git_head = run_command(
3075 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003076 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003077 'rev-parse', 'HEAD']).stdout().strip()
3078 git_head_short = run_command(
3079 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003080 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003081 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3082
3083 run_target(
3084 'git-snapshot',
3085 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003086 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003087 git_head_short),
3088 '--prefix', 'systemd-@0@/'.format(git_head),
3089 'HEAD'])
3090endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003091
3092############################################################
3093
Lennart Poettering51b13862017-12-20 12:51:14 +01003094meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3095run_target(
3096 'check-api-docs',
3097 depends : [man, libsystemd, libudev],
3098 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3099
3100############################################################
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003101watchdog_opt = service_watchdog == '' ? 'disabled' : service_watchdog
Lennart Poettering51b13862017-12-20 12:51:14 +01003102
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003103status = [
3104 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3105
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003106 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003107 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003108 'prefix directory: @0@'.format(prefixdir),
3109 'rootprefix directory: @0@'.format(rootprefixdir),
3110 'sysconf directory: @0@'.format(sysconfdir),
3111 'include directory: @0@'.format(includedir),
3112 'lib directory: @0@'.format(libdir),
3113 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003114 'SysV init scripts: @0@'.format(sysvinit_path),
3115 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003116 'PAM modules directory: @0@'.format(pamlibdir),
3117 'PAM configuration directory: @0@'.format(pamconfdir),
3118 'RPM macros directory: @0@'.format(rpmmacrosdir),
3119 'modprobe.d directory: @0@'.format(modprobedir),
3120 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3121 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3122 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3123 'bash completions directory: @0@'.format(bashcompletiondir),
3124 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003125 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003126 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3127 get_option('debug-tty')),
3128 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003129 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003130 'maximum system UID: @0@'.format(system_uid_max),
3131 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003132 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3133 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3134 'minimum container UID base: @0@'.format(container_uid_base_min),
3135 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003136 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003137 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003138 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003139 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003140 'nobody user name: @0@'.format(nobody_user),
3141 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003142 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003143 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003144
3145 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003146 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003147 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003148 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003149 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +02003150 'default locale: @0@'.format(default_locale),
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +01003151 'default user $PATH: @0@'.format(default_user_path_display),
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003152 'systemd service watchdog: @0@'.format(watchdog_opt)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003153
3154alt_dns_servers = '\n '.join(dns_servers.split(' '))
3155alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3156status += [
3157 'default DNS servers: @0@'.format(alt_dns_servers),
3158 'default NTP servers: @0@'.format(alt_ntp_servers)]
3159
3160alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3161 '@@0@'.format(time_epoch)).stdout().strip()
3162status += [
3163 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3164
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003165status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003166 'static libsystemd: @0@'.format(static_libsystemd),
3167 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003168
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003169# TODO:
3170# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3171# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3172# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3173
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003174if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003175 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003176
3177 if have_gnu_efi
3178 status += [
3179 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003180 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003181 'EFI lib directory: @0@'.format(efi_libdir),
3182 'EFI lds directory: @0@'.format(efi_ldsdir),
3183 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003184 endif
3185endif
3186
3187found = []
3188missing = []
3189
3190foreach tuple : [
3191 ['libcryptsetup'],
3192 ['PAM'],
3193 ['AUDIT'],
3194 ['IMA'],
3195 ['AppArmor'],
3196 ['SELinux'],
3197 ['SECCOMP'],
3198 ['SMACK'],
3199 ['zlib'],
3200 ['xz'],
3201 ['lz4'],
3202 ['bzip2'],
3203 ['ACL'],
3204 ['gcrypt'],
3205 ['qrencode'],
3206 ['microhttpd'],
3207 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003208 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003209 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003210 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003211 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003212 ['libidn'],
3213 ['libiptc'],
3214 ['elfutils'],
3215 ['binfmt'],
3216 ['vconsole'],
3217 ['quotacheck'],
3218 ['tmpfiles'],
3219 ['environment.d'],
3220 ['sysusers'],
3221 ['firstboot'],
3222 ['randomseed'],
3223 ['backlight'],
3224 ['rfkill'],
3225 ['logind'],
3226 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003227 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003228 ['importd'],
3229 ['hostnamed'],
3230 ['timedated'],
3231 ['timesyncd'],
3232 ['localed'],
3233 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003234 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003235 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3236 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003237 ['coredump'],
Eric DeVolder9b4abc62019-05-16 08:59:01 -05003238 ['pstore'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003239 ['polkit'],
3240 ['legacy pkla', install_polkit_pkla],
3241 ['efi'],
3242 ['gnu-efi', have_gnu_efi],
3243 ['kmod'],
3244 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003245 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003246 ['blkid'],
3247 ['dbus'],
3248 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003249 ['nss-myhostname'],
3250 ['nss-mymachines'],
3251 ['nss-resolve'],
3252 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003253 ['hwdb'],
3254 ['tpm'],
3255 ['man pages', want_man],
3256 ['html pages', want_html],
3257 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003258 ['SysV compat'],
3259 ['utmp'],
3260 ['ldconfig'],
3261 ['hibernate'],
3262 ['adm group', get_option('adm-group')],
3263 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003264 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003265 ['debug hashmap'],
3266 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003267 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003268 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003269 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003270 ['link-udev-shared', get_option('link-udev-shared')],
3271 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003272]
3273
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003274 if tuple.length() >= 2
3275 cond = tuple[1]
3276 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003277 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3278 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003279 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003280 endif
3281 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003282 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003283 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003284 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003285 endif
3286endforeach
3287
3288status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003289 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003290 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003291 '',
3292 'disabled features: @0@'.format(', '.join(missing)),
3293 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003294message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003295
3296if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003297 warning('\n' +
3298 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3299 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3300 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003301endif