blob: 09abd9e2ec673b222d1e99c5d246a44cd8ddaec4 [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-Szmek7eb8a472019-04-03 10:00:14 +02004 version : '242',
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-Szmek5c231282017-04-04 23:03:47 -040011 ],
Yu Watanabe7a6397d2018-05-15 20:18:24 +090012 meson_version : '>= 0.46',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040013 )
14
Lennart Poetteringbfe6bb22019-03-27 14:23:57 +010015libsystemd_version = '0.26.0'
16libudev_version = '1.6.14'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020017
Yu Watanabe348b4432018-05-07 18:17:35 +090018# We need the same data in two different formats, ugh!
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040019# Also, for hysterical reasons, we use different variable
20# names, sometimes. Not all variables are included in every
21# set. Ugh, ugh, ugh!
22conf = configuration_data()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010023conf.set('PROJECT_VERSION', meson.project_version())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040024
25substs = configuration_data()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010026substs.set('PROJECT_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
27substs.set('PROJECT_VERSION', meson.project_version())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040028
Davide Cavalca1485aac2019-02-27 11:19:07 -050029# This is to be used instead of meson.source_root(), as the latter will return
30# the wrong result when systemd is being built as a meson subproject
31project_source_root = meson.current_source_dir()
Zbigniew Jędrzejewski-Szmeka0b15b42019-06-07 14:41:36 +020032relative_source_path = run_command('realpath',
33 '--relative-to=@0@'.format(meson.current_build_dir()),
34 project_source_root).stdout().strip()
35conf.set_quoted('RELATIVE_SOURCE_PATH', relative_source_path)
Davide Cavalca1485aac2019-02-27 11:19:07 -050036
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020037want_ossfuzz = get_option('oss-fuzz')
38want_libfuzzer = get_option('llvm-fuzz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +000039want_fuzzbuzz = get_option('fuzzbuzz')
40if want_ossfuzz + want_libfuzzer + want_fuzzbuzz > 1
41 error('only one of oss-fuzz, llvm-fuzz or fuzzbuzz can be specified')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020042endif
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +000043
44skip_deps = want_ossfuzz or want_libfuzzer
45fuzzer_build = want_ossfuzz or want_libfuzzer or want_fuzzbuzz
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020046
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040047#####################################################################
48
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040049# Try to install the git pre-commit hook
Davide Cavalca1485aac2019-02-27 11:19:07 -050050git_hook = run_command(join_paths(project_source_root, 'tools/add-git-hook.sh'))
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040051if git_hook.returncode() == 0
52 message(git_hook.stdout().strip())
53endif
54
55#####################################################################
56
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010057if get_option('split-usr') == 'auto'
58 split_usr = run_command('test', '-L', '/bin').returncode() != 0
59else
60 split_usr = get_option('split-usr') == 'true'
61endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010062conf.set10('HAVE_SPLIT_USR', split_usr,
63 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010064
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010065if get_option('split-bin') == 'auto'
66 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
67else
68 split_bin = get_option('split-bin') == 'true'
69endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010070conf.set10('HAVE_SPLIT_BIN', split_bin,
71 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010072
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010073rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010074# Unusual rootprefixdir values are used by some distros
75# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010076rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010077if rootprefixdir == ''
78 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010079endif
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010080rootprefixdir_noslash = rootprefixdir == '/' ? '' : rootprefixdir
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040081
82sysvinit_path = get_option('sysvinit-path')
83sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090084conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020085 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040086
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020087conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
88conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
Lennart Poettering09dad042018-11-15 09:50:42 +010089conf.set('HIGH_RLIMIT_NOFILE', 512*1024)
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020090
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010091# join_paths ignores the preceding arguments if an absolute component is
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040092# encountered, so this should canonicalize various paths when they are
93# absolute or relative.
94prefixdir = get_option('prefix')
95if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040096 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040097endif
98bindir = join_paths(prefixdir, get_option('bindir'))
99libdir = join_paths(prefixdir, get_option('libdir'))
100sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
101includedir = join_paths(prefixdir, get_option('includedir'))
102datadir = join_paths(prefixdir, get_option('datadir'))
103localstatedir = join_paths('/', get_option('localstatedir'))
104
105rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +0100106rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400107rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
108
109rootlibdir = get_option('rootlibdir')
110if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400111 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400112endif
113
114# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +0200115pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
116pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400117polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
118polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
119polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400120xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900121rpmmacrosdir = get_option('rpmmacrosdir')
122if rpmmacrosdir != 'no'
123 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
124endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200125modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400126
127# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400128pkgdatadir = join_paths(datadir, 'systemd')
129environmentdir = join_paths(prefixdir, 'lib/environment.d')
130pkgsysconfdir = join_paths(sysconfdir, 'systemd')
131userunitdir = join_paths(prefixdir, 'lib/systemd/user')
132userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
133tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
134sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
135sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
136binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
137modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
138networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
139pkgincludedir = join_paths(includedir, 'systemd')
140systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
141usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
142systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
143userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
144systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
145systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
146systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
147systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
148udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400149udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
150udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
151catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
152kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
153factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400154bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
155testsdir = join_paths(prefixdir, 'lib/systemd/tests')
156systemdstatedir = join_paths(localstatedir, 'lib/systemd')
157catalogstatedir = join_paths(systemdstatedir, 'catalog')
158randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200159profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmeke5ea7412019-07-22 14:47:51 +0200160ntpservicelistdir = join_paths(rootprefixdir, 'lib/systemd/ntp-units.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400161
tblume75aaade2018-02-01 22:46:15 +0100162docdir = get_option('docdir')
163if docdir == ''
164 docdir = join_paths(datadir, 'doc/systemd')
165endif
166
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400167dbuspolicydir = get_option('dbuspolicydir')
168if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400169 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400170endif
171
172dbussessionservicedir = get_option('dbussessionservicedir')
173if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400174 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400175endif
176
177dbussystemservicedir = get_option('dbussystemservicedir')
178if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400179 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400180endif
181
182pamlibdir = get_option('pamlibdir')
183if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400184 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400185endif
186
187pamconfdir = get_option('pamconfdir')
188if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400189 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400190endif
191
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100192memory_accounting_default = get_option('memory-accounting-default')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200193status_unit_format_default = get_option('status-unit-format-default')
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100194
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400195conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400196conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400197conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
198conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
199conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400200conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100201
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100202conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100203
Michael Bieble17e5ba2017-04-13 10:30:56 -0400204conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400205conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
206conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400207conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
208conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
209conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
210conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100211conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100212conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400213conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
214conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
215conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
216conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
217conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100218conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400219conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400220conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
221conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400222conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
223conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
224conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
225conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
226conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
227conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400228conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
229conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700230conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700231conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400232conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400233conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400234conf.set_quoted('LIBDIR', libdir)
235conf.set_quoted('ROOTLIBDIR', rootlibdir)
236conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
237conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400238conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
239conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
Lennart Poettering1d7579c2018-10-10 21:20:08 +0200240conf.set_quoted('SYSTEMD_IMPORT_FS_PATH', join_paths(rootlibexecdir, 'systemd-import-fs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400241conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
242conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
243conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
244conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200245conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100246conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200247conf.set('STATUS_UNIT_FORMAT_DEFAULT', 'STATUS_UNIT_FORMAT_' + status_unit_format_default.to_upper())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400248
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400249substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100250substs.set('rootprefix', rootprefixdir)
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +0100251substs.set('rootprefix_noslash', rootprefixdir_noslash)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400252substs.set('exec_prefix', prefixdir)
253substs.set('libdir', libdir)
254substs.set('rootlibdir', rootlibdir)
255substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100256substs.set('sysconfdir', sysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400257substs.set('bindir', bindir)
258substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400259substs.set('rootlibexecdir', rootlibexecdir)
260substs.set('systemunitdir', systemunitdir)
261substs.set('userunitdir', userunitdir)
262substs.set('systempresetdir', systempresetdir)
263substs.set('userpresetdir', userpresetdir)
264substs.set('udevhwdbdir', udevhwdbdir)
265substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400266substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200267substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400268substs.set('catalogdir', catalogdir)
269substs.set('tmpfilesdir', tmpfilesdir)
270substs.set('sysusersdir', sysusersdir)
271substs.set('sysctldir', sysctldir)
272substs.set('binfmtdir', binfmtdir)
273substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200274substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400275substs.set('systemgeneratordir', systemgeneratordir)
276substs.set('usergeneratordir', usergeneratordir)
277substs.set('systemenvgeneratordir', systemenvgeneratordir)
278substs.set('userenvgeneratordir', userenvgeneratordir)
279substs.set('systemshutdowndir', systemshutdowndir)
280substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400281substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400282substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
283substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400284substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
285substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
286substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100287substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200288substs.set('STATUS_UNIT_FORMAT_DEFAULT', status_unit_format_default)
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200289substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmeke9bbff12019-05-09 13:23:50 +0200290substs.set('BUILD_ROOT', meson.current_build_dir())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400291
292#####################################################################
293
294cc = meson.get_compiler('c')
295pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400296check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100297meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400298
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200299want_tests = get_option('tests')
300slow_tests = want_tests != 'false' and get_option('slow-tests')
301install_tests = get_option('install-tests')
302
James Hilliard46e63a22018-12-27 09:16:20 +0800303if add_languages('cpp', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200304 # Used only for tests
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200305 cxx_cmd = ' '.join(meson.get_compiler('cpp').cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200306else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200307 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400308endif
309
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500310if want_libfuzzer
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +0200311 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer', required : false)
312 if fuzzing_engine.found()
313 add_project_arguments('-fsanitize-coverage=trace-pc-guard,trace-cmp', language : 'c')
314 elif cc.has_argument('-fsanitize=fuzzer-no-link')
315 add_project_arguments('-fsanitize=fuzzer-no-link', language : 'c')
316 else
317 error('Looks like neither libFuzzer nor -fsanitize=fuzzer-no-link is supported')
318 endif
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200319elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500320 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000321elif want_fuzzbuzz
322 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 -0500323endif
324
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900325possible_cc_flags = [
326 '-Wextra',
327 '-Werror=undef',
328 '-Wlogical-op',
329 '-Wmissing-include-dirs',
330 '-Wold-style-definition',
331 '-Wpointer-arith',
332 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900333 '-Wfloat-equal',
334 '-Wsuggest-attribute=noreturn',
335 '-Werror=missing-prototypes',
336 '-Werror=implicit-function-declaration',
337 '-Werror=missing-declarations',
338 '-Werror=return-type',
339 '-Werror=incompatible-pointer-types',
340 '-Werror=format=2',
341 '-Wstrict-prototypes',
342 '-Wredundant-decls',
343 '-Wmissing-noreturn',
344 '-Wimplicit-fallthrough=5',
345 '-Wshadow',
346 '-Wendif-labels',
347 '-Wstrict-aliasing=2',
348 '-Wwrite-strings',
349 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200350 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200351 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900352 '-Wdate-time',
353 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700354
355 # negative arguments are correctly detected starting with meson 0.46.
356 '-Wno-unused-parameter',
357 '-Wno-missing-field-initializers',
358 '-Wno-unused-result',
359 '-Wno-format-signedness',
Zbigniew Jędrzejewski-Szmekeed33622019-03-07 10:56:15 +0100360 '-Wno-error=#warnings', # clang
361 '-Wno-string-plus-int', # clang
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700362
363 # work-around for gcc 7.1 turning this on on its own.
364 '-Wno-error=nonnull',
365
366 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
367 # optimizations enabled, producing essentially false positives.
368 '-Wno-maybe-uninitialized',
369
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900370 '-ffast-math',
371 '-fno-common',
372 '-fdiagnostics-show-option',
373 '-fno-strict-aliasing',
374 '-fvisibility=hidden',
375 '-fstack-protector',
376 '-fstack-protector-strong',
377 '--param=ssp-buffer-size=4',
378]
379
380# --as-needed and --no-undefined are provided by meson by default,
381# run mesonconf to see what is enabled
382possible_link_flags = [
383 '-Wl,-z,relro',
384 '-Wl,-z,now',
385]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400386
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900387if cc.get_id() == 'clang'
388 possible_cc_flags += [
389 '-Wno-typedef-redefinition',
390 '-Wno-gnu-variable-sized-type-not-at-end',
391 ]
392endif
393
394if get_option('buildtype') != 'debug'
395 possible_cc_flags += [
396 '-ffunction-sections',
397 '-fdata-sections',
398 ]
399
400 possible_link_flags += '-Wl,--gc-sections'
401endif
402
Zbigniew Jędrzejewski-Szmeka73f6212019-03-28 09:44:02 +0100403if get_option('b_ndebug') == 'true'
404 # With asserts disabled with get a bunch of warnings about variables which
405 # are used only in the asserts. This is not useful at all, so let's just silence
406 # those warnings.
407 possible_cc_flags += [
408 '-Wno-unused-variable',
409 '-Wno-unused-but-set-variable',
410 ]
411endif
412
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900413add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900414add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900415
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800416if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400417 #include <time.h>
418 #include <inttypes.h>
419 typedef uint64_t usec_t;
420 usec_t now(clockid_t clock);
421 int main(void) {
422 struct timespec now;
423 return 0;
424 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100425''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400426 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400427endif
428
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200429cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400430
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200431has_wstringop_truncation = cc.has_argument('-Wstringop-truncation')
432
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400433#####################################################################
434# compilation result tests
435
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400436conf.set('_GNU_SOURCE', true)
437conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200438conf.set10('HAVE_WSTRINGOP_TRUNCATION', has_wstringop_truncation)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400439
440conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
441conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
442conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
443conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
444conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
445conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
446conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
447
448decl_headers = '''
449#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100450#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400451'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400452
453foreach decl : ['char16_t',
454 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100455 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400456 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400457
458 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200459 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
460
461 if decl == 'struct statx'
462 if have
463 want_linux_stat_h = false
464 else
465 have = cc.sizeof(decl,
466 prefix : decl_headers + '#include <linux/stat.h>',
467 args : '-D_GNU_SOURCE') > 0
468 want_linux_stat_h = have
469 endif
470 endif
471
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200472 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400473endforeach
474
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200475conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700476
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400477foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200478 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400479endforeach
480
481foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100482 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100483 ['gettid', '''#include <sys/types.h>
484 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100485 ['pivot_root', '''#include <stdlib.h>
486 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100487 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400488 #include <sys/stat.h>
489 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100490 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100491 ['renameat2', '''#include <stdio.h>
492 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400493 ['kcmp', '''#include <linux/kcmp.h>'''],
494 ['keyctl', '''#include <sys/types.h>
495 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100496 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400497 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200498 ['bpf', '''#include <sys/syscall.h>
499 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100500 ['statx', '''#include <sys/types.h>
501 #include <sys/stat.h>
502 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100503 ['explicit_bzero' , '''#include <string.h>'''],
504 ['reallocarray', '''#include <malloc.h>'''],
Michal Sekletarb070c7c2019-03-12 18:58:26 +0100505 ['set_mempolicy', '''#include <stdlib.h>
506 #include <unistd.h>'''],
507 ['get_mempolicy', '''#include <stdlib.h>
508 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400509]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400510
Lennart Poettering85db59b2017-12-25 12:01:14 +0100511 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200512 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400513endforeach
514
Lennart Poettering85db59b2017-12-25 12:01:14 +0100515if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200516 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200517 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400518else
519 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200520 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200521 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400522endif
523
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400524#####################################################################
525
Davide Cavalca1485aac2019-02-27 11:19:07 -0500526vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
527 project_source_root,
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100528 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100529 meson.project_version()]
530
Louis Taylord1084aa2019-01-21 21:45:36 +0000531version_h = vcs_tag(
532 input : 'src/version/version.h.in',
533 output : 'version.h',
534 command: vcs_tagger)
535
536versiondep = declare_dependency(sources: version_h)
537
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400538sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400539awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400540m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400541stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400542git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100543env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100544perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400545
Davide Cavalca1485aac2019-02-27 11:19:07 -0500546meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400547mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400548test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
549splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400550
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400551# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
552# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500553progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400554 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400555 ['kmod', '/usr/bin/kmod' ],
556 ['kexec', '/usr/sbin/kexec' ],
557 ['sulogin', '/usr/sbin/sulogin' ],
558 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
559 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
560 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
561 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
Michael Biebl6db90462019-07-18 01:24:00 +0200562 ['nologin', '/usr/sbin/nologin', ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400563 ]
564foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400565 path = get_option(prog[0] + '-path')
566 if path != ''
567 message('Using @1@ for @0@'.format(prog[0], path))
568 else
569 exe = find_program(prog[0],
570 '/usr/sbin/' + prog[0],
571 '/sbin/' + prog[0],
572 required: false)
573 path = exe.found() ? exe.path() : prog[1]
574 endif
575 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
576 conf.set_quoted(name, path)
577 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400578endforeach
579
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500580conf.set_quoted('TELINIT', get_option('telinit-path'))
581
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400582if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100583 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400584endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400585
586############################################################
587
588gperf = find_program('gperf')
589
590gperf_test_format = '''
591#include <string.h>
592const char * in_word_set(const char *, @0@);
593@1@
594'''
595gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
596gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
597gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
598if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400599 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400600else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400601 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
602 if cc.compiles(gperf_test)
603 gperf_len_type = 'unsigned'
604 else
605 error('unable to determine gperf len type')
606 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400607endif
608message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400609conf.set('GPERF_LEN_TYPE', gperf_len_type,
610 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400611
612############################################################
613
614if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400615 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400616endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100617foreach header : ['crypt.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400618 'linux/memfd.h',
619 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200620 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400621 'valgrind/memcheck.h',
622 'valgrind/valgrind.h',
623 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400624
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200625 conf.set10('HAVE_' + header.underscorify().to_upper(),
626 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400627endforeach
628
629############################################################
630
631conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400632conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
633gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400634
635default_hierarchy = get_option('default-hierarchy')
636conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
637 description : 'default cgroup hierarchy as string')
638if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400639 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400640elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400641 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400642else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400643 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400644endif
645
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100646default_net_naming_scheme = get_option('default-net-naming-scheme')
647conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
648
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400649time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900650if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400651 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900652 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400653endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400654conf.set('TIME_EPOCH', time_epoch)
655
656system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900657if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400658 system_uid_max = run_command(
659 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800660 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
661 '/etc/login.defs').stdout().strip()
662 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900663 system_uid_max = 999
664 else
665 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800666 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400667endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400668conf.set('SYSTEM_UID_MAX', system_uid_max)
669substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400670
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400671system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900672if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400673 system_gid_max = run_command(
674 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800675 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
676 '/etc/login.defs').stdout().strip()
677 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900678 system_gid_max = 999
679 else
680 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800681 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400682endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400683conf.set('SYSTEM_GID_MAX', system_gid_max)
684substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400685
Yu Watanabeac093402018-05-10 16:04:16 +0900686dynamic_uid_min = get_option('dynamic-uid-min')
687dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100688conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
689conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
690substs.set('dynamicuidmin', dynamic_uid_min)
691substs.set('dynamicuidmax', dynamic_uid_max)
692
Yu Watanabeac093402018-05-10 16:04:16 +0900693container_uid_base_min = get_option('container-uid-base-min')
694container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100695conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
696conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
697substs.set('containeruidbasemin', container_uid_base_min)
698substs.set('containeruidbasemax', container_uid_base_max)
699
Lennart Poetteringafde4572017-12-05 11:00:24 +0100700nobody_user = get_option('nobody-user')
701nobody_group = get_option('nobody-group')
702
Chen Qi2484bff2018-07-23 14:53:09 +0800703if not meson.is_cross_build()
704 getent_result = run_command('getent', 'passwd', '65534')
705 if getent_result.returncode() == 0
706 name = getent_result.stdout().split(':')[0]
707 if name != nobody_user
708 warning('\n' +
709 '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) +
710 'Your build will result in an user table setup that is incompatible with the local system.')
711 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100712 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800713 id_result = run_command('id', '-u', nobody_user)
714 if id_result.returncode() == 0
715 id = id_result.stdout().to_int()
716 if id != 65534
717 warning('\n' +
718 '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) +
719 'Your build will result in an user table setup that is incompatible with the local system.')
720 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100721 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100722
Chen Qi2484bff2018-07-23 14:53:09 +0800723 getent_result = run_command('getent', 'group', '65534')
724 if getent_result.returncode() == 0
725 name = getent_result.stdout().split(':')[0]
726 if name != nobody_group
727 warning('\n' +
728 '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) +
729 'Your build will result in an group 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', '-g', nobody_group)
733 if id_result.returncode() == 0
734 id = id_result.stdout().to_int()
735 if id != 65534
736 warning('\n' +
737 '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) +
738 'Your build will result in an group table setup that is incompatible with the local system.')
739 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100740 endif
741endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900742if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900743 warning('\n' +
744 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
745 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900746endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100747
748conf.set_quoted('NOBODY_USER_NAME', nobody_user)
749conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900750substs.set('NOBODY_USER_NAME', nobody_user)
751substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100752
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400753tty_gid = get_option('tty-gid')
754conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400755substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400756
Ikey Doherty84786b82017-12-03 12:28:23 +0000757# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900758users_gid = get_option('users-gid')
759substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000760
Yu Watanabe348b4432018-05-07 18:17:35 +0900761conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
762conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400763
Michael Bieblace5e312018-07-13 23:36:13 +0200764dev_kvm_mode = get_option('dev-kvm-mode')
765substs.set('DEV_KVM_MODE', dev_kvm_mode)
766conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100767group_render_mode = get_option('group-render-mode')
768substs.set('GROUP_RENDER_MODE', group_render_mode)
769conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400770
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400771kill_user_processes = get_option('default-kill-user-processes')
772conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100773conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400774substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400775
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400776dns_servers = get_option('dns-servers')
777conf.set_quoted('DNS_SERVERS', dns_servers)
778substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400779
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400780ntp_servers = get_option('ntp-servers')
781conf.set_quoted('NTP_SERVERS', ntp_servers)
782substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400783
Dave Reisner8ca9e922018-12-28 07:38:36 -0500784default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900785if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800786 if not meson.is_cross_build()
787 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
788 default_locale = run_command(choose_default_locale_sh).stdout().strip()
789 else
790 default_locale = 'C.UTF-8'
791 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900792endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500793conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
794
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400795conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
796
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400797substs.set('SUSHELL', get_option('debug-shell'))
798substs.set('DEBUGTTY', get_option('debug-tty'))
Jan Synacek93912e82019-04-25 12:19:16 +0200799conf.set_quoted('DEBUGTTY', get_option('debug-tty'))
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400800
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200801enable_debug_hashmap = false
802enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900803enable_debug_siphash = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200804foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900805 if name == 'hashmap'
806 enable_debug_hashmap = true
807 elif name == 'mmap-cache'
808 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900809 elif name == 'siphash'
810 enable_debug_siphash = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900811 else
812 message('unknown debug option "@0@", ignoring'.format(name))
813 endif
814endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200815conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
816conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900817conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400818
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200819conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200820conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200821
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400822#####################################################################
823
824threads = dependency('threads')
825librt = cc.find_library('rt')
826libm = cc.find_library('m')
827libdl = cc.find_library('dl')
828libcrypt = cc.find_library('crypt')
829
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400830libcap = dependency('libcap', required : false)
831if not libcap.found()
832 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
833 libcap = cc.find_library('cap')
834endif
835
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400836libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100837 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400838
839want_seccomp = get_option('seccomp')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000840if want_seccomp != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400841 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400842 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400843 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200844 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400845else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200846 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400847 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400848endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200849conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400850
851want_selinux = get_option('selinux')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000852if want_selinux != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400853 libselinux = dependency('libselinux',
854 version : '>= 2.1.9',
855 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200856 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400857else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200858 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400859 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400860endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200861conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400862
863want_apparmor = get_option('apparmor')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000864if want_apparmor != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400865 libapparmor = dependency('libapparmor',
866 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200867 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400868else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200869 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400870 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400871endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200872conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400873
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400874smack_run_label = get_option('smack-run-label')
875if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400876 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400877endif
878
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400879want_polkit = get_option('polkit')
880install_polkit = false
881install_polkit_pkla = false
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000882if want_polkit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400883 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400884
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400885 libpolkit = dependency('polkit-gobject-1',
886 required : false)
887 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
888 message('Old polkit detected, will install pkla files')
889 install_polkit_pkla = true
890 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400891endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200892conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400893
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400894want_acl = get_option('acl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000895if want_acl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400896 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200897 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400898else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400900 libacl = []
901endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200902conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400903
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400904want_audit = get_option('audit')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000905if want_audit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400906 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200907 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400908else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200909 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400910 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400911endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200912conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400913
914want_blkid = get_option('blkid')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000915if want_blkid != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400916 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200917 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400918else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200919 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400920 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400921endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400923
924want_kmod = get_option('kmod')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000925if want_kmod != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400926 libkmod = dependency('libkmod',
927 version : '>= 15',
928 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200929 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400930else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200931 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400932 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400933endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200934conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400935
936want_pam = get_option('pam')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000937if want_pam != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400938 libpam = cc.find_library('pam', required : want_pam == 'true')
939 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200940 have = libpam.found() and libpam_misc.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 libpam = []
944 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400945endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200946conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400947
948want_microhttpd = get_option('microhttpd')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000949if want_microhttpd != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400950 libmicrohttpd = dependency('libmicrohttpd',
951 version : '>= 0.9.33',
952 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200953 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400954else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200955 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400956 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400957endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200958conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400959
960want_libcryptsetup = get_option('libcryptsetup')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000961if want_libcryptsetup != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400962 libcryptsetup = dependency('libcryptsetup',
963 version : '>= 1.6.0',
964 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200965 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100966 have_sector = cc.has_member(
967 'struct crypt_params_plain',
968 'sector_size',
969 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400970else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200971 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100972 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400973 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400974endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200975conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100976conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400977
978want_libcurl = get_option('libcurl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000979if want_libcurl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400980 libcurl = dependency('libcurl',
981 version : '>= 7.32.0',
982 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200983 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400984else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200985 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400986 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400987endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200988conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400989
990want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400991want_libidn2 = get_option('libidn2')
992if want_libidn == 'true' and want_libidn2 == 'true'
993 error('libidn and libidn2 cannot be requested simultaneously')
994endif
995
Yu Watanabe1b931392019-06-29 03:13:30 +0900996if want_libidn2 != 'false' and want_libidn != 'true' and not skip_deps
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400997 libidn = dependency('libidn2',
998 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200999 have = libidn.found()
1000else
1001 have = false
Yu Watanabe1b931392019-06-29 03:13:30 +09001002 libidn = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001003endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001004conf.set10('HAVE_LIBIDN2', have)
Yu Watanabe1b931392019-06-29 03:13:30 +09001005if not have and want_libidn != 'false' and not skip_deps
1006 # libidn is used for both libidn and libidn2 objects
1007 libidn = dependency('libidn',
1008 required : want_libidn == 'true')
1009 have = libidn.found()
1010else
1011 have = false
1012endif
1013conf.set10('HAVE_LIBIDN', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001014
1015want_libiptc = get_option('libiptc')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001016if want_libiptc != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001017 libiptc = dependency('libiptc',
1018 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001019 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001020else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001021 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001022 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001023endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001024conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001025
1026want_qrencode = get_option('qrencode')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001027if want_qrencode != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001028 libqrencode = dependency('libqrencode',
1029 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001030 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001031else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001032 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001033 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001034endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001035conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001036
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001037want_gcrypt = get_option('gcrypt')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001038if want_gcrypt != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001039 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1040 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001041 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001042else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001043 have = false
1044endif
1045if not have
1046 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001047 libgcrypt = []
1048 libgpg_error = []
1049endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001050conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001051
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001052want_gnutls = get_option('gnutls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001053if want_gnutls != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001054 libgnutls = dependency('gnutls',
1055 version : '>= 3.1.4',
1056 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001057 have = libgnutls.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 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001061endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001062conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001063
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001064want_openssl = get_option('openssl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001065if want_openssl != 'false' and not skip_deps
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001066 libopenssl = dependency('openssl',
1067 version : '>= 1.1.0',
1068 required : want_openssl == 'true')
1069 have = libopenssl.found()
1070else
1071 have = false
1072 libopenssl = []
1073endif
1074conf.set10('HAVE_OPENSSL', have)
1075
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001076want_elfutils = get_option('elfutils')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001077if want_elfutils != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001078 libdw = dependency('libdw',
1079 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001081else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001082 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001083 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001084endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001085conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001086
1087want_zlib = get_option('zlib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001088if want_zlib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001089 libz = dependency('zlib',
1090 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001091 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001092else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001093 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001094 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001095endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001096conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001097
1098want_bzip2 = get_option('bzip2')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001099if want_bzip2 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001100 libbzip2 = cc.find_library('bz2',
1101 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001102 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001103else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001104 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001105 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001106endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001107conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001108
1109want_xz = get_option('xz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001110if want_xz != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001111 libxz = dependency('liblzma',
1112 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001113 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001114else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001115 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001116 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001117endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001118conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001119
1120want_lz4 = get_option('lz4')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001121if want_lz4 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001122 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001123 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001124 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001125 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001126else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001127 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001128 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001129endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001130conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001131
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001132want_xkbcommon = get_option('xkbcommon')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001133if want_xkbcommon != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001134 libxkbcommon = dependency('xkbcommon',
1135 version : '>= 0.3.0',
1136 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001137 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001138else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001139 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001140 libxkbcommon = []
1141endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001142conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001143
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001144want_pcre2 = get_option('pcre2')
1145if want_pcre2 != 'false'
1146 libpcre2 = dependency('libpcre2-8',
1147 required : want_pcre2 == 'true')
1148 have = libpcre2.found()
1149else
1150 have = false
1151 libpcre2 = []
1152endif
1153conf.set10('HAVE_PCRE2', have)
1154
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001155want_glib = get_option('glib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001156if want_glib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001157 libglib = dependency('glib-2.0',
1158 version : '>= 2.22.0',
1159 required : want_glib == 'true')
1160 libgobject = dependency('gobject-2.0',
1161 version : '>= 2.22.0',
1162 required : want_glib == 'true')
1163 libgio = dependency('gio-2.0',
1164 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001165 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001166else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001167 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001168 libglib = []
1169 libgobject = []
1170 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001171endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001172conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001173
1174want_dbus = get_option('dbus')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001175if want_dbus != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001176 libdbus = dependency('dbus-1',
1177 version : '>= 1.3.2',
1178 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001179 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001180else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001181 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001182 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001183endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001184conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001185
Yu Watanabe42303dc2017-06-18 05:22:32 +09001186default_dnssec = get_option('default-dnssec')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001187if skip_deps
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001188 default_dnssec = 'no'
1189endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001190if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001191 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1192 default_dnssec = 'no'
1193endif
1194conf.set('DEFAULT_DNSSEC_MODE',
1195 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1196substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1197
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001198dns_over_tls = get_option('dns-over-tls')
1199if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001200 if dns_over_tls == 'openssl'
1201 have_gnutls = false
1202 else
1203 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1204 if dns_over_tls == 'gnutls' and not have_gnutls
1205 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1206 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001207 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001208 if dns_over_tls == 'gnutls' or have_gnutls
1209 have_openssl = false
1210 else
1211 have_openssl = conf.get('HAVE_OPENSSL') == 1
1212 if dns_over_tls != 'auto' and not have_openssl
1213 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
Yu Watanabeb349bc52019-06-17 10:22:54 +09001214 error('DNS-over-TLS support was requested@0@, but dependencies are not available'.format(str))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001215 endif
1216 endif
1217 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001218else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001219 have = false
1220 have_gnutls = false
1221 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001222endif
1223conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001224conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1225conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001226
Iwan Timmerc9299be2018-06-13 20:26:24 +02001227default_dns_over_tls = get_option('default-dns-over-tls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001228if skip_deps
Iwan Timmerc9299be2018-06-13 20:26:24 +02001229 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001230endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001231if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
Iwan Timmer4310bfc2019-02-18 20:41:46 +01001232 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 +02001233 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001234endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001235conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1236 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1237substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001238
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001239want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001240if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001241 have = (conf.get('HAVE_LIBCURL') == 1 and
1242 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001243 conf.get('HAVE_XZ') == 1 and
1244 conf.get('HAVE_GCRYPT') == 1)
1245 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001246 error('importd support was requested, but dependencies are not available')
1247 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001248else
1249 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001250endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001251conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001252
1253want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001254if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001255 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1256 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001257 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1258 # it's possible to build one without the other. Complain only if
Ben Boeckel5238e952019-04-26 20:22:40 -04001259 # support was explicitly requested. The auxiliary files like sysusers
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001260 # config should be installed when any of the programs are built.
1261 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1262 error('remote support was requested, but dependencies are not available')
1263 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001264 have = have_deps[0] or have_deps[1]
1265else
1266 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001267endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001268conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001269
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001270foreach term : ['utmp',
1271 'hibernate',
1272 'environment-d',
1273 'binfmt',
1274 'coredump',
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001275 'pstore',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001276 'resolve',
1277 'logind',
1278 'hostnamed',
1279 'localed',
1280 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001281 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001282 'networkd',
1283 'timedated',
1284 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001285 'firstboot',
1286 'randomseed',
1287 'backlight',
1288 'vconsole',
1289 'quotacheck',
1290 'sysusers',
1291 'tmpfiles',
1292 'hwdb',
1293 'rfkill',
1294 'ldconfig',
1295 'efi',
1296 'tpm',
1297 'ima',
1298 'smack',
1299 'gshadow',
1300 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001301 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001302 'nss-systemd']
1303 have = get_option(term)
1304 name = 'ENABLE_' + term.underscorify().to_upper()
1305 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001306endforeach
1307
Yu Watanabe08540a92018-07-18 09:25:57 +09001308foreach tuple : [['nss-mymachines', 'machined'],
1309 ['nss-resolve', 'resolve']]
1310 want = get_option(tuple[0])
1311 if want != 'false'
1312 have = get_option(tuple[1])
1313 if want == 'true' and not have
1314 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1315 endif
1316 else
1317 have = false
1318 endif
1319 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1320 conf.set10(name, have)
1321endforeach
1322
1323enable_nss = false
1324foreach term : ['ENABLE_NSS_MYHOSTNAME',
1325 'ENABLE_NSS_MYMACHINES',
1326 'ENABLE_NSS_RESOLVE',
1327 'ENABLE_NSS_SYSTEMD']
1328 if conf.get(term) == 1
1329 enable_nss = true
1330 endif
1331endforeach
1332conf.set10('ENABLE_NSS', enable_nss)
1333
Yu Watanabe348b4432018-05-07 18:17:35 +09001334conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001335
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001336tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001337fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001338
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001339conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001340
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001341#####################################################################
1342
1343if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001344 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001345
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001346 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001347 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001348 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001349 elif efi_arch == 'x86_64'
1350 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001351 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001352 elif efi_arch == 'arm'
1353 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001354 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001355 elif efi_arch == 'aarch64'
1356 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001357 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001358 else
1359 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001360 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001361 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001362
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001363 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001364 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001365
Yu Watanabeac093402018-05-10 16:04:16 +09001366 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001367else
1368 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001369endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001370conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001371
1372#####################################################################
1373
1374config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001375 output : 'config.h',
1376 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001377
Yu Watanabe348b4432018-05-07 18:17:35 +09001378meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1379
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001380includes = include_directories('src/basic',
Zbigniew Jędrzejewski-Szmek91b08bb2019-07-02 13:01:23 +02001381 'src/boot',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001382 'src/shared',
1383 'src/systemd',
1384 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001385 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001386 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001387 'src/resolve',
1388 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001389 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001390 'src/login',
1391 'src/udev',
1392 'src/libudev',
1393 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001394 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001395 'src/libsystemd/sd-bus',
1396 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001397 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001398 'src/libsystemd/sd-hwdb',
1399 'src/libsystemd/sd-id128',
1400 'src/libsystemd/sd-netlink',
1401 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001402 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001403 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001404 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001405
1406add_project_arguments('-include', 'config.h', language : 'c')
1407
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001408generate_gperfs = find_program('tools/generate-gperfs.py')
1409
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001410subdir('po')
1411subdir('catalog')
1412subdir('src/systemd')
1413subdir('src/basic')
1414subdir('src/libsystemd')
1415subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001416subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001417subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001418
1419libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001420 'journal-core',
1421 libjournal_core_sources,
1422 journald_gperf_c,
1423 include_directories : includes,
1424 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001425
Davide Cavalca1485aac2019-02-27 11:19:07 -05001426libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001427libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001428 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001429 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001430 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001431 include_directories : includes,
1432 link_args : ['-shared',
1433 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001434 link_with : [libbasic,
1435 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001436 link_whole : [libsystemd_static,
1437 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001438 dependencies : [threads,
1439 librt,
1440 libxz,
1441 liblz4],
1442 link_depends : libsystemd_sym,
1443 install : true,
1444 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001445
Davide Cavalca70848ec2018-04-09 02:43:35 -07001446static_libsystemd = get_option('static-libsystemd')
1447static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1448
1449install_libsystemd_static = static_library(
1450 'systemd',
1451 libsystemd_sources,
1452 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001453 basic_sources,
1454 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001455 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001456 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001457 build_by_default : static_libsystemd != 'false',
1458 install : static_libsystemd != 'false',
1459 install_dir : rootlibdir,
1460 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1461 dependencies : [threads,
1462 librt,
1463 libxz,
1464 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001465 libcap,
1466 libblkid,
1467 libmount,
1468 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001469 libgcrypt],
1470 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1471
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001472############################################################
1473
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001474# binaries that have --help and are intended for use by humans,
1475# usually, but not always, installed in /bin.
1476public_programs = []
1477
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001478subdir('src/libudev')
1479subdir('src/shared')
1480subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001481subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001482subdir('src/udev')
1483subdir('src/network')
1484
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001485subdir('src/analyze')
1486subdir('src/journal-remote')
1487subdir('src/coredump')
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001488subdir('src/pstore')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001489subdir('src/hostname')
1490subdir('src/import')
1491subdir('src/kernel-install')
1492subdir('src/locale')
1493subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001494subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001495subdir('src/nspawn')
1496subdir('src/resolve')
1497subdir('src/timedate')
1498subdir('src/timesync')
1499subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001500subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001501
1502subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001503subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001504subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001505subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001506
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001507############################################################
1508
1509# only static linking apart from libdl, to make sure that the
1510# module is linked to all libraries that it uses.
1511test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001512 'test-dlopen',
1513 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001514 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001515 include_directories : includes,
1516 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001517 dependencies : [libdl],
1518 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001519
Yu Watanabe08540a92018-07-18 09:25:57 +09001520foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001521 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001522 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1523 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001524
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001525 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001526 if condition
1527 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001528
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001529 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001530 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001531
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001532 nss = shared_library(
1533 'nss_' + module,
1534 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001535 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001536 version : '2',
1537 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001538 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1539 link_args : ['-Wl,-z,nodelete',
1540 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001541 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001542 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001543 libbasic],
1544 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001545 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001546 link_depends : sym,
1547 install : true,
1548 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001549
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001550 # We cannot use shared_module because it does not support version suffix.
1551 # Unfortunately shared_library insists on creating the symlink…
1552 meson.add_install_script('sh', '-c',
1553 'rm $DESTDIR@0@/libnss_@1@.so'
1554 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001555
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001556 if want_tests != 'false'
1557 test('dlopen-nss_' + module,
1558 test_dlopen,
1559 # path to dlopen must include a slash
1560 args : nss.full_path())
1561 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001562 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001563endforeach
1564
1565############################################################
1566
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001567executable('systemd',
1568 systemd_sources,
1569 include_directories : includes,
1570 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001571 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001572 dependencies : [versiondep,
1573 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001574 librt,
1575 libseccomp,
1576 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001577 libmount,
1578 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001579 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001580 install : true,
1581 install_dir : rootlibexecdir)
1582
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001583meson.add_install_script(meson_make_symlink,
1584 join_paths(rootlibexecdir, 'systemd'),
1585 join_paths(rootsbindir, 'init'))
1586
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001587exe = executable('systemd-analyze',
1588 systemd_analyze_sources,
1589 include_directories : includes,
1590 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001591 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001592 dependencies : [versiondep,
1593 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001594 librt,
1595 libseccomp,
1596 libselinux,
1597 libmount,
1598 libblkid],
1599 install_rpath : rootlibexecdir,
1600 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001601public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001602
1603executable('systemd-journald',
1604 systemd_journald_sources,
1605 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001606 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001607 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001608 dependencies : [threads,
1609 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001610 liblz4,
1611 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001612 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001613 install : true,
1614 install_dir : rootlibexecdir)
1615
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001616exe = executable('systemd-cat',
1617 systemd_cat_sources,
1618 include_directories : includes,
1619 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001620 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001621 dependencies : [threads],
1622 install_rpath : rootlibexecdir,
1623 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001624public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001625
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001626exe = executable('journalctl',
1627 journalctl_sources,
1628 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001629 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001630 dependencies : [threads,
1631 libqrencode,
1632 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001633 liblz4,
1634 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001635 install_rpath : rootlibexecdir,
1636 install : true,
1637 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001638public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001639
1640executable('systemd-getty-generator',
1641 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001642 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001643 link_with : [libshared],
1644 install_rpath : rootlibexecdir,
1645 install : true,
1646 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001647
1648executable('systemd-debug-generator',
1649 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001650 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001651 link_with : [libshared],
1652 install_rpath : rootlibexecdir,
1653 install : true,
1654 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001655
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001656executable('systemd-run-generator',
1657 'src/run-generator/run-generator.c',
1658 include_directories : includes,
1659 link_with : [libshared],
1660 install_rpath : rootlibexecdir,
1661 install : true,
1662 install_dir : systemgeneratordir)
1663
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001664executable('systemd-fstab-generator',
1665 'src/fstab-generator/fstab-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001666 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01001667 link_with : [libcore_shared,
1668 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001669 install_rpath : rootlibexecdir,
1670 install : true,
1671 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001672
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001673if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001674 executable('30-systemd-environment-d-generator',
1675 'src/environment-d-generator/environment-d-generator.c',
1676 include_directories : includes,
1677 link_with : [libshared],
1678 install_rpath : rootlibexecdir,
1679 install : true,
1680 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001681
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001682 meson.add_install_script(meson_make_symlink,
1683 join_paths(sysconfdir, 'environment'),
1684 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001685endif
1686
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001687if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001688 executable('systemd-hibernate-resume-generator',
1689 'src/hibernate-resume/hibernate-resume-generator.c',
1690 include_directories : includes,
1691 link_with : [libshared],
1692 install_rpath : rootlibexecdir,
1693 install : true,
1694 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001695
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001696 executable('systemd-hibernate-resume',
1697 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001698 include_directories : includes,
1699 link_with : [libshared],
1700 install_rpath : rootlibexecdir,
1701 install : true,
1702 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001703endif
1704
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001705if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001706 executable('systemd-gpt-auto-generator',
1707 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001708 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001709 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001710 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001711 dependencies : libblkid,
1712 install_rpath : rootlibexecdir,
1713 install : true,
1714 install_dir : systemgeneratordir)
1715
1716 exe = executable('systemd-dissect',
1717 'src/dissect/dissect.c',
1718 include_directories : includes,
1719 link_with : [libshared],
1720 install_rpath : rootlibexecdir,
1721 install : true,
1722 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001723 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001724endif
1725
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001726if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001727 executable('systemd-resolved',
1728 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001729 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001730 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001731 libbasic_gcrypt,
1732 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001733 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001734 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001735 install : true,
1736 install_dir : rootlibexecdir)
1737
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001738 exe = executable('resolvectl',
1739 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001740 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001741 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001742 libbasic_gcrypt,
1743 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001744 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001745 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001746 libm,
1747 libidn],
1748 install_rpath : rootlibexecdir,
1749 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001750 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001751
1752 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001753 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001754 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001755
1756 meson.add_install_script(meson_make_symlink,
1757 join_paths(bindir, 'resolvectl'),
1758 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001759endif
1760
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001761if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001762 executable('systemd-logind',
1763 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001764 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001765 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001766 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001767 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001768 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001769 install_rpath : rootlibexecdir,
1770 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001771 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001772
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001773 exe = executable('loginctl',
1774 loginctl_sources,
1775 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001776 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001777 dependencies : [threads,
1778 liblz4,
1779 libxz],
1780 install_rpath : rootlibexecdir,
1781 install : true,
1782 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001783 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001784
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001785 exe = executable('systemd-inhibit',
1786 'src/login/inhibit.c',
1787 include_directories : includes,
1788 link_with : [libshared],
1789 install_rpath : rootlibexecdir,
1790 install : true,
1791 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001792 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001793
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001794 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001795 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001796 pam_systemd = shared_library(
1797 'pam_systemd',
1798 pam_systemd_c,
1799 name_prefix : '',
1800 include_directories : includes,
1801 link_args : ['-shared',
1802 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001803 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001804 libshared_static],
1805 dependencies : [threads,
1806 libpam,
1807 libpam_misc],
1808 link_depends : pam_systemd_sym,
1809 install : true,
1810 install_dir : pamlibdir)
1811
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001812 if want_tests != 'false'
1813 test('dlopen-pam_systemd',
1814 test_dlopen,
1815 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001816 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001817 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001818 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001819
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001820 executable('systemd-user-runtime-dir',
1821 user_runtime_dir_sources,
1822 include_directories : includes,
1823 link_with : [libshared],
1824 install_rpath : rootlibexecdir,
1825 install : true,
1826 install_dir : rootlibexecdir)
1827endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001828
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001829if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001830 executable('systemd-user-sessions',
1831 'src/user-sessions/user-sessions.c',
1832 include_directories : includes,
1833 link_with : [libshared],
1834 install_rpath : rootlibexecdir,
1835 install : true,
1836 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001837endif
1838
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001839if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001840 exe = executable('bootctl',
1841 'src/boot/bootctl.c',
1842 include_directories : includes,
1843 link_with : [libshared],
1844 dependencies : [libblkid],
1845 install_rpath : rootlibexecdir,
1846 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001847 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001848
1849 executable('systemd-bless-boot',
1850 'src/boot/bless-boot.c',
1851 include_directories : includes,
1852 link_with : [libshared],
1853 dependencies : [libblkid],
1854 install_rpath : rootlibexecdir,
1855 install : true,
1856 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001857
1858 executable('systemd-bless-boot-generator',
1859 'src/boot/bless-boot-generator.c',
1860 include_directories : includes,
1861 link_with : [libshared],
1862 install_rpath : rootlibexecdir,
1863 install : true,
1864 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001865endif
1866
Lennart Poetteringf876f532018-06-25 16:07:33 +02001867executable('systemd-boot-check-no-failures',
1868 'src/boot/boot-check-no-failures.c',
1869 include_directories : includes,
1870 link_with : [libshared],
1871 dependencies : [libblkid],
1872 install_rpath : rootlibexecdir,
1873 install : true,
1874 install_dir : rootlibexecdir)
1875
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001876exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1877 include_directories : includes,
1878 link_with : [libshared],
1879 dependencies : [threads],
1880 install_rpath : rootlibexecdir,
1881 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001882public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001883
Felipe Satelerf3794362018-05-22 15:08:57 -04001884
1885if get_option('link-systemctl-shared')
1886 systemctl_link_with = [libshared]
1887else
1888 systemctl_link_with = [libsystemd_static,
1889 libshared_static,
1890 libjournal_client,
1891 libbasic_gcrypt]
1892endif
1893
Lennart Poettering63a3b3c2019-03-22 20:05:08 +01001894exe = executable('systemctl',
1895 'src/systemctl/systemctl.c',
1896 'src/systemctl/sysv-compat.h',
1897 'src/systemctl/sysv-compat.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001898 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001899 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001900 dependencies : [threads,
1901 libcap,
1902 libselinux,
1903 libxz,
1904 liblz4],
1905 install_rpath : rootlibexecdir,
1906 install : true,
1907 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001908public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001909
Lennart Poettering61d05782018-04-16 21:41:40 +02001910if conf.get('ENABLE_PORTABLED') == 1
1911 executable('systemd-portabled',
1912 systemd_portabled_sources,
1913 include_directories : includes,
1914 link_with : [libshared],
1915 dependencies : [threads],
1916 install_rpath : rootlibexecdir,
1917 install : true,
1918 install_dir : rootlibexecdir)
1919
1920 exe = executable('portablectl', 'src/portable/portablectl.c',
1921 include_directories : includes,
1922 link_with : [libshared],
1923 dependencies : [threads],
1924 install_rpath : rootlibexecdir,
1925 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001926 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001927 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001928endif
1929
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001930foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1931 meson.add_install_script(meson_make_symlink,
1932 join_paths(rootbindir, 'systemctl'),
1933 join_paths(rootsbindir, alias))
1934endforeach
1935
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001936if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001937 executable('systemd-backlight',
1938 'src/backlight/backlight.c',
1939 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001940 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001941 install_rpath : rootlibexecdir,
1942 install : true,
1943 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001944endif
1945
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001946if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001947 executable('systemd-rfkill',
1948 'src/rfkill/rfkill.c',
1949 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001950 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001951 install_rpath : rootlibexecdir,
1952 install : true,
1953 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001954endif
1955
1956executable('systemd-system-update-generator',
1957 'src/system-update-generator/system-update-generator.c',
1958 include_directories : includes,
1959 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001960 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001961 install : true,
1962 install_dir : systemgeneratordir)
1963
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001964if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001965 executable('systemd-cryptsetup',
1966 'src/cryptsetup/cryptsetup.c',
1967 include_directories : includes,
1968 link_with : [libshared],
1969 dependencies : [libcryptsetup],
1970 install_rpath : rootlibexecdir,
1971 install : true,
1972 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001973
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001974 executable('systemd-cryptsetup-generator',
1975 'src/cryptsetup/cryptsetup-generator.c',
1976 include_directories : includes,
1977 link_with : [libshared],
1978 dependencies : [libcryptsetup],
1979 install_rpath : rootlibexecdir,
1980 install : true,
1981 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001982
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001983 executable('systemd-veritysetup',
1984 'src/veritysetup/veritysetup.c',
1985 include_directories : includes,
1986 link_with : [libshared],
1987 dependencies : [libcryptsetup],
1988 install_rpath : rootlibexecdir,
1989 install : true,
1990 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001991
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001992 executable('systemd-veritysetup-generator',
1993 'src/veritysetup/veritysetup-generator.c',
1994 include_directories : includes,
1995 link_with : [libshared],
1996 dependencies : [libcryptsetup],
1997 install_rpath : rootlibexecdir,
1998 install : true,
1999 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002000endif
2001
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002002if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002003 executable('systemd-sysv-generator',
2004 'src/sysv-generator/sysv-generator.c',
2005 include_directories : includes,
2006 link_with : [libshared],
2007 install_rpath : rootlibexecdir,
2008 install : true,
2009 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002010
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002011 executable('systemd-rc-local-generator',
2012 'src/rc-local-generator/rc-local-generator.c',
2013 include_directories : includes,
2014 link_with : [libshared],
2015 install_rpath : rootlibexecdir,
2016 install : true,
2017 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002018endif
2019
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002020if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002021 executable('systemd-hostnamed',
2022 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002023 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002024 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002025 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002026 install : true,
2027 install_dir : rootlibexecdir)
2028
2029 exe = executable('hostnamectl',
2030 'src/hostname/hostnamectl.c',
2031 include_directories : includes,
2032 link_with : [libshared],
2033 install_rpath : rootlibexecdir,
2034 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002035 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002036endif
2037
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002038if conf.get('ENABLE_LOCALED') == 1
2039 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002040 # logind will load libxkbcommon.so dynamically on its own
2041 deps = [libdl]
2042 else
2043 deps = []
2044 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002045
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002046 executable('systemd-localed',
2047 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002048 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002049 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002050 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002051 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002052 install : true,
2053 install_dir : rootlibexecdir)
2054
2055 exe = executable('localectl',
2056 localectl_sources,
2057 include_directories : includes,
2058 link_with : [libshared],
2059 install_rpath : rootlibexecdir,
2060 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002061 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002062endif
2063
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002064if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002065 executable('systemd-timedated',
2066 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002067 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002068 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002069 install_rpath : rootlibexecdir,
2070 install : true,
2071 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002072endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002073
Yu Watanabe6129ec82018-05-03 18:07:43 +09002074if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002075 exe = executable('timedatectl',
2076 'src/timedate/timedatectl.c',
2077 include_directories : includes,
2078 install_rpath : rootlibexecdir,
2079 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002080 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002081 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002082 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002083endif
2084
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002085if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002086 executable('systemd-timesyncd',
2087 systemd_timesyncd_sources,
2088 include_directories : includes,
2089 link_with : [libshared],
2090 dependencies : [threads,
2091 libm],
2092 install_rpath : rootlibexecdir,
2093 install : true,
2094 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002095
2096 executable('systemd-time-wait-sync',
2097 'src/time-wait-sync/time-wait-sync.c',
2098 include_directories : includes,
2099 link_with : [libshared],
2100 install_rpath : rootlibexecdir,
2101 install : true,
2102 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002103endif
2104
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002105if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002106 executable('systemd-machined',
2107 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002108 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002109 link_with : [libmachine_core,
2110 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002111 install_rpath : rootlibexecdir,
2112 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002113 install_dir : rootlibexecdir)
2114
2115 exe = executable('machinectl',
2116 'src/machine/machinectl.c',
2117 include_directories : includes,
2118 link_with : [libshared],
2119 dependencies : [threads,
2120 libxz,
2121 liblz4],
2122 install_rpath : rootlibexecdir,
2123 install : true,
2124 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002125 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002126endif
2127
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002128if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002129 executable('systemd-importd',
2130 systemd_importd_sources,
2131 include_directories : includes,
2132 link_with : [libshared],
2133 dependencies : [threads],
2134 install_rpath : rootlibexecdir,
2135 install : true,
2136 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002137
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002138 systemd_pull = executable('systemd-pull',
2139 systemd_pull_sources,
2140 include_directories : includes,
2141 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002142 dependencies : [versiondep,
2143 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002144 libz,
2145 libbzip2,
2146 libxz,
2147 libgcrypt],
2148 install_rpath : rootlibexecdir,
2149 install : true,
2150 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002151
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002152 systemd_import = executable('systemd-import',
2153 systemd_import_sources,
2154 include_directories : includes,
2155 link_with : [libshared],
2156 dependencies : [libcurl,
2157 libz,
2158 libbzip2,
2159 libxz],
2160 install_rpath : rootlibexecdir,
2161 install : true,
2162 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002163
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002164 systemd_import_fs = executable('systemd-import-fs',
2165 systemd_import_fs_sources,
2166 include_directories : includes,
2167 link_with : [libshared],
2168 install_rpath : rootlibexecdir,
2169 install : true,
2170 install_dir : rootlibexecdir)
2171
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002172 systemd_export = executable('systemd-export',
2173 systemd_export_sources,
2174 include_directories : includes,
2175 link_with : [libshared],
2176 dependencies : [libcurl,
2177 libz,
2178 libbzip2,
2179 libxz],
2180 install_rpath : rootlibexecdir,
2181 install : true,
2182 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002183
2184 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002185endif
2186
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002187if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002188 exe = executable('systemd-journal-upload',
2189 systemd_journal_upload_sources,
2190 include_directories : includes,
2191 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002192 dependencies : [versiondep,
2193 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002194 libcurl,
2195 libgnutls,
2196 libxz,
2197 liblz4],
2198 install_rpath : rootlibexecdir,
2199 install : true,
2200 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002201 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002202endif
2203
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002204if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002205 s_j_remote = executable('systemd-journal-remote',
2206 systemd_journal_remote_sources,
2207 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002208 link_with : [libshared,
2209 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002210 dependencies : [threads,
2211 libmicrohttpd,
2212 libgnutls,
2213 libxz,
2214 liblz4],
2215 install_rpath : rootlibexecdir,
2216 install : true,
2217 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002218
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002219 s_j_gatewayd = executable('systemd-journal-gatewayd',
2220 systemd_journal_gatewayd_sources,
2221 include_directories : includes,
2222 link_with : [libshared],
2223 dependencies : [threads,
2224 libmicrohttpd,
2225 libgnutls,
2226 libxz,
2227 liblz4],
2228 install_rpath : rootlibexecdir,
2229 install : true,
2230 install_dir : rootlibexecdir)
2231 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002232endif
2233
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002234if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002235 executable('systemd-coredump',
2236 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002237 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002238 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002239 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002240 libacl,
2241 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002242 libxz,
2243 liblz4],
2244 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002245 install : true,
2246 install_dir : rootlibexecdir)
2247
2248 exe = executable('coredumpctl',
2249 coredumpctl_sources,
2250 include_directories : includes,
2251 link_with : [libshared],
2252 dependencies : [threads,
2253 libxz,
2254 liblz4],
2255 install_rpath : rootlibexecdir,
2256 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002257 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002258endif
2259
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002260if conf.get('ENABLE_PSTORE') == 1
2261 executable('systemd-pstore',
2262 systemd_pstore_sources,
2263 include_directories : includes,
2264 link_with : [libshared],
2265 dependencies : [threads,
2266 libacl,
2267 libdw,
2268 libxz,
2269 liblz4],
2270 install_rpath : rootlibexecdir,
2271 install : true,
2272 install_dir : rootlibexecdir)
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002273endif
2274
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002275if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002276 exe = executable('systemd-binfmt',
2277 'src/binfmt/binfmt.c',
2278 include_directories : includes,
2279 link_with : [libshared],
2280 install_rpath : rootlibexecdir,
2281 install : true,
2282 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002283 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002284
2285 meson.add_install_script('sh', '-c',
2286 mkdir_p.format(binfmtdir))
2287 meson.add_install_script('sh', '-c',
2288 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2289endif
2290
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002291if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002292 executable('systemd-vconsole-setup',
2293 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002294 include_directories : includes,
2295 link_with : [libshared],
2296 install_rpath : rootlibexecdir,
2297 install : true,
2298 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002299endif
2300
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002301if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002302 executable('systemd-random-seed',
2303 'src/random-seed/random-seed.c',
2304 include_directories : includes,
2305 link_with : [libshared],
2306 install_rpath : rootlibexecdir,
2307 install : true,
2308 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002309endif
2310
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002311if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002312 executable('systemd-firstboot',
2313 'src/firstboot/firstboot.c',
2314 include_directories : includes,
2315 link_with : [libshared],
2316 dependencies : [libcrypt],
2317 install_rpath : rootlibexecdir,
2318 install : true,
2319 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002320endif
2321
2322executable('systemd-remount-fs',
2323 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002324 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002325 link_with : [libcore_shared,
2326 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002327 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002328 install : true,
2329 install_dir : rootlibexecdir)
2330
2331executable('systemd-machine-id-setup',
2332 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002333 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002334 link_with : [libcore_shared,
2335 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002336 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002337 install : true,
2338 install_dir : rootbindir)
2339
2340executable('systemd-fsck',
2341 'src/fsck/fsck.c',
2342 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002343 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002344 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002345 install : true,
2346 install_dir : rootlibexecdir)
2347
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002348executable('systemd-growfs',
2349 'src/partition/growfs.c',
2350 include_directories : includes,
2351 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002352 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002353 install_rpath : rootlibexecdir,
2354 install : true,
2355 install_dir : rootlibexecdir)
2356
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002357executable('systemd-makefs',
2358 'src/partition/makefs.c',
2359 include_directories : includes,
2360 link_with : [libshared],
2361 install_rpath : rootlibexecdir,
2362 install : true,
2363 install_dir : rootlibexecdir)
2364
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002365executable('systemd-sleep',
2366 'src/sleep/sleep.c',
2367 include_directories : includes,
2368 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002369 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002370 install : true,
2371 install_dir : rootlibexecdir)
2372
Yu Watanabed25e1272019-01-03 02:32:57 +09002373install_data('src/sleep/sleep.conf',
2374 install_dir : pkgsysconfdir)
2375
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002376exe = executable('systemd-sysctl',
2377 'src/sysctl/sysctl.c',
2378 include_directories : includes,
2379 link_with : [libshared],
2380 install_rpath : rootlibexecdir,
2381 install : true,
2382 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002383public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002384
2385executable('systemd-ac-power',
2386 'src/ac-power/ac-power.c',
2387 include_directories : includes,
2388 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002389 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002390 install : true,
2391 install_dir : rootlibexecdir)
2392
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002393exe = executable('systemd-detect-virt',
2394 'src/detect-virt/detect-virt.c',
2395 include_directories : includes,
2396 link_with : [libshared],
2397 install_rpath : rootlibexecdir,
2398 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002399public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002400
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002401exe = executable('systemd-delta',
2402 'src/delta/delta.c',
2403 include_directories : includes,
2404 link_with : [libshared],
2405 install_rpath : rootlibexecdir,
2406 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002407public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002408
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002409exe = executable('systemd-escape',
2410 'src/escape/escape.c',
2411 include_directories : includes,
2412 link_with : [libshared],
2413 install_rpath : rootlibexecdir,
2414 install : true,
2415 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002416public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002417
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002418exe = executable('systemd-notify',
2419 'src/notify/notify.c',
2420 include_directories : includes,
2421 link_with : [libshared],
2422 install_rpath : rootlibexecdir,
2423 install : true,
2424 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002425public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002426
2427executable('systemd-volatile-root',
2428 'src/volatile-root/volatile-root.c',
2429 include_directories : includes,
2430 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002431 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002432 install : true,
2433 install_dir : rootlibexecdir)
2434
2435executable('systemd-cgroups-agent',
2436 'src/cgroups-agent/cgroups-agent.c',
2437 include_directories : includes,
2438 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002439 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002440 install : true,
2441 install_dir : rootlibexecdir)
2442
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002443exe = executable('systemd-id128',
2444 'src/id128/id128.c',
2445 include_directories : includes,
2446 link_with : [libshared],
2447 install_rpath : rootlibexecdir,
2448 install : true)
2449public_programs += exe
2450
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002451exe = executable('systemd-path',
2452 'src/path/path.c',
2453 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002454 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002455 install_rpath : rootlibexecdir,
2456 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002457public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002458
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002459exe = executable('systemd-ask-password',
2460 'src/ask-password/ask-password.c',
2461 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002462 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002463 install_rpath : rootlibexecdir,
2464 install : true,
2465 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002466public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002467
2468executable('systemd-reply-password',
2469 'src/reply-password/reply-password.c',
2470 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002471 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002472 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002473 install : true,
2474 install_dir : rootlibexecdir)
2475
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002476exe = executable('systemd-tty-ask-password-agent',
2477 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2478 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002479 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002480 install_rpath : rootlibexecdir,
2481 install : true,
2482 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002483public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002484
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002485exe = executable('systemd-cgls',
2486 'src/cgls/cgls.c',
2487 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002488 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002489 install_rpath : rootlibexecdir,
2490 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002491public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002492
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002493exe = executable('systemd-cgtop',
2494 'src/cgtop/cgtop.c',
2495 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002496 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002497 install_rpath : rootlibexecdir,
2498 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002499public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002500
2501executable('systemd-initctl',
2502 'src/initctl/initctl.c',
2503 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002504 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002505 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002506 install : true,
2507 install_dir : rootlibexecdir)
2508
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002509exe = executable('systemd-mount',
2510 'src/mount/mount-tool.c',
2511 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002512 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek7d991d42019-04-04 13:41:47 +02002513 dependencies: [libmount],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002514 install_rpath : rootlibexecdir,
2515 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002516public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002517
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002518meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002519 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002520
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002521exe = executable('systemd-run',
2522 'src/run/run.c',
2523 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002524 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002525 install_rpath : rootlibexecdir,
2526 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002527public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002528
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002529exe = executable('systemd-stdio-bridge',
2530 'src/stdio-bridge/stdio-bridge.c',
2531 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002532 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002533 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002534 install_rpath : rootlibexecdir,
2535 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002536public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002537
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002538exe = executable('busctl',
2539 'src/busctl/busctl.c',
2540 'src/busctl/busctl-introspect.c',
2541 'src/busctl/busctl-introspect.h',
2542 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002543 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002544 install_rpath : rootlibexecdir,
2545 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002546public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002547
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002548if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002549 exe = executable('systemd-sysusers',
2550 'src/sysusers/sysusers.c',
2551 include_directories : includes,
2552 link_with : [libshared],
2553 install_rpath : rootlibexecdir,
2554 install : true,
2555 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002556 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002557endif
2558
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002559if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002560 exe = executable('systemd-tmpfiles',
2561 'src/tmpfiles/tmpfiles.c',
2562 include_directories : includes,
2563 link_with : [libshared],
2564 dependencies : [libacl],
2565 install_rpath : rootlibexecdir,
2566 install : true,
2567 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002568 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002569
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002570 if want_tests != 'false'
2571 test('test-systemd-tmpfiles',
2572 test_systemd_tmpfiles_py,
2573 # https://github.com/mesonbuild/meson/issues/2681
2574 args : exe.full_path())
2575 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002576endif
2577
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002578if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002579 exe = executable('systemd-hwdb',
2580 'src/hwdb/hwdb.c',
2581 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2582 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002583 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002584 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002585 install : true,
2586 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002587 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002588endif
2589
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002590if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002591 executable('systemd-quotacheck',
2592 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002593 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002594 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002595 install_rpath : rootlibexecdir,
2596 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002597 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002598endif
2599
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002600exe = executable('systemd-socket-proxyd',
2601 'src/socket-proxy/socket-proxyd.c',
2602 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002603 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002604 dependencies : [threads],
2605 install_rpath : rootlibexecdir,
2606 install : true,
2607 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002608public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002609
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002610exe = executable('systemd-udevd',
2611 systemd_udevd_sources,
2612 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002613 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002614 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002615 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002616 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002617 dependencies : [versiondep,
2618 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002619 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002620 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002621 libacl,
2622 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002623 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002624 install : true,
2625 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002626public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002627
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002628exe = executable('udevadm',
2629 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002630 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002631 include_directories : includes,
2632 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002633 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002634 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002635 dependencies : [versiondep,
2636 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002637 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002638 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002639 libacl,
2640 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002641 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002642 install : true,
2643 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002644public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002645
2646executable('systemd-shutdown',
2647 systemd_shutdown_sources,
2648 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002649 link_with : [libcore_shared,
2650 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002651 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002652 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002653 install : true,
2654 install_dir : rootlibexecdir)
2655
2656executable('systemd-update-done',
2657 'src/update-done/update-done.c',
2658 include_directories : includes,
2659 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002660 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002661 install : true,
2662 install_dir : rootlibexecdir)
2663
2664executable('systemd-update-utmp',
2665 'src/update-utmp/update-utmp.c',
2666 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002667 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002668 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002669 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002670 install : true,
2671 install_dir : rootlibexecdir)
2672
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002673if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002674 executable('systemd-modules-load',
2675 'src/modules-load/modules-load.c',
2676 include_directories : includes,
2677 link_with : [libshared],
2678 dependencies : [libkmod],
2679 install_rpath : rootlibexecdir,
2680 install : true,
2681 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002682
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002683 meson.add_install_script('sh', '-c',
2684 mkdir_p.format(modulesloaddir))
2685 meson.add_install_script('sh', '-c',
2686 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002687endif
2688
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002689exe = executable('systemd-nspawn',
2690 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002691 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002692 link_with : [libcore_shared,
2693 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002694 libshared],
Franck Bui82384232019-03-22 11:09:08 +01002695 dependencies : [libblkid,
2696 libseccomp],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002697 install_rpath : rootlibexecdir,
2698 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002699public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002700
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002701if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002702 executable('systemd-networkd',
2703 systemd_networkd_sources,
2704 include_directories : includes,
2705 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002706 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002707 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002708 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002709 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002710 install_rpath : rootlibexecdir,
2711 install : true,
2712 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002713
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002714 executable('systemd-networkd-wait-online',
2715 systemd_networkd_wait_online_sources,
2716 include_directories : includes,
2717 link_with : [libnetworkd_core,
2718 libshared],
2719 install_rpath : rootlibexecdir,
2720 install : true,
2721 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002722
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002723 exe = executable('networkctl',
2724 networkctl_sources,
2725 include_directories : includes,
2726 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002727 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002728 install_rpath : rootlibexecdir,
2729 install : true,
2730 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002731 public_programs += exe
Yu Watanabe426c1d32019-07-13 03:35:04 +09002732
2733 executable('systemd-network-generator',
2734 network_generator_sources,
2735 include_directories : includes,
2736 link_with : [libshared],
2737 install_rpath : rootlibexecdir,
2738 install : true,
2739 install_dir : rootlibexecdir)
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002740endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002741
2742executable('systemd-sulogin-shell',
2743 ['src/sulogin-shell/sulogin-shell.c'],
2744 include_directories : includes,
2745 link_with : [libshared],
2746 install_rpath : rootlibexecdir,
2747 install : true,
2748 install_dir : rootlibexecdir)
2749
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002750############################################################
2751
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002752custom_target(
2753 'systemd-runtest.env',
2754 output : 'systemd-runtest.env',
2755 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05002756 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002757 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002758 '} >@OUTPUT@'],
2759 build_by_default : true)
2760
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002761foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002762 sources = tuple[0]
2763 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2764 dependencies = tuple[2]
2765 condition = tuple.length() >= 4 ? tuple[3] : ''
2766 type = tuple.length() >= 5 ? tuple[4] : ''
2767 defs = tuple.length() >= 6 ? tuple[5] : []
2768 incs = tuple.length() >= 7 ? tuple[6] : includes
2769 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002770
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002771 name = sources[0].split('/')[-1].split('.')[0]
2772 if type.startswith('timeout=')
2773 timeout = type.split('=')[1].to_int()
2774 type = ''
2775 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002776
2777 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002778 exe = executable(
2779 name,
2780 sources,
2781 include_directories : incs,
2782 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002783 dependencies : [versiondep,
2784 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002785 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002786 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002787 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002788 install : install_tests,
2789 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002790
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002791 if type == 'manual'
2792 message('@0@ is a manual test'.format(name))
2793 elif type == 'unsafe' and want_tests != 'unsafe'
2794 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002795 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002796 test(name, exe,
2797 env : test_env,
2798 timeout : timeout)
2799 endif
2800 else
2801 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2802 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002803endforeach
2804
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002805exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002806 'test-libsystemd-sym',
2807 test_libsystemd_sym_c,
2808 include_directories : includes,
2809 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002810 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002811 install : install_tests,
2812 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002813if want_tests != 'false'
2814 test('test-libsystemd-sym', exe)
2815endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002816
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002817exe = executable(
2818 'test-libsystemd-static-sym',
2819 test_libsystemd_sym_c,
2820 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002821 link_with : [install_libsystemd_static],
2822 dependencies : [threads], # threads is already included in dependencies on the library,
2823 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002824 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002825 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002826 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002827if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002828 test('test-libsystemd-static-sym', exe)
2829endif
2830
2831exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002832 'test-libudev-sym',
2833 test_libudev_sym_c,
2834 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002835 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002836 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002837 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002838 install : install_tests,
2839 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002840if want_tests != 'false'
2841 test('test-libudev-sym', exe)
2842endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002843
2844exe = executable(
2845 'test-libudev-static-sym',
2846 test_libudev_sym_c,
2847 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002848 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002849 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002850 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002851 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002852 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002853if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002854 test('test-libudev-static-sym', exe)
2855endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002856
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002857############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002858
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002859fuzzer_exes = []
2860
Michael Olbrich59967402018-11-11 11:27:35 +01002861if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002862foreach tuple : fuzzers
2863 sources = tuple[0]
2864 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2865 dependencies = tuple[2]
2866 defs = tuple.length() >= 4 ? tuple[3] : []
2867 incs = tuple.length() >= 5 ? tuple[4] : includes
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002868 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002869
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002870 if want_ossfuzz or want_fuzzbuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002871 dependencies += fuzzing_engine
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002872 elif want_libfuzzer
2873 if fuzzing_engine.found()
2874 dependencies += fuzzing_engine
2875 else
2876 link_args += ['-fsanitize=fuzzer']
2877 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002878 else
2879 sources += 'src/fuzz/fuzz-main.c'
2880 endif
2881
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00002882 if want_fuzzbuzz
2883 sources += 'src/fuzz/fuzzer-entry-point.c'
2884 endif
2885
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002886 name = sources[0].split('/')[-1].split('.')[0]
2887
2888 fuzzer_exes += executable(
2889 name,
2890 sources,
2891 include_directories : [incs, include_directories('src/fuzz')],
2892 link_with : link_with,
2893 dependencies : dependencies,
2894 c_args : defs,
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002895 link_args: link_args,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002896 install : false)
2897endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002898endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002899
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01002900run_target('fuzzers',
2901 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002902 command : ['true'])
2903
2904############################################################
2905
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002906make_directive_index_py = find_program('tools/make-directive-index.py')
2907make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002908xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002909hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002910
2911subdir('units')
2912subdir('sysctl.d')
2913subdir('sysusers.d')
2914subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002915subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002916subdir('hwdb')
2917subdir('network')
2918subdir('man')
2919subdir('shell-completion/bash')
2920subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002921subdir('docs/sysvinit')
2922subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002923
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002924install_subdir('factory/etc',
2925 install_dir : factorydir)
2926
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002927install_data('xorg/50-systemd-user.sh',
2928 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002929install_data('modprobe.d/systemd.conf',
2930 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002931install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002932 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002933 'NEWS',
2934 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302935 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002936 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002937 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302938 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002939 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002940 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002941 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002942 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2943 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002944
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002945meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2946meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2947
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002948############################################################
2949
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002950meson_check_help = find_program('tools/meson-check-help.sh')
2951
2952foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002953 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002954 if want_tests != 'false'
2955 test('check-help-' + name,
2956 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002957 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002958 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002959endforeach
2960
2961############################################################
2962
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02002963check_directives_sh = find_program('tools/check-directives.sh')
2964
2965if want_tests != 'false'
2966 test('check-directives',
2967 check_directives_sh,
2968 args : project_source_root)
2969endif
2970
2971############################################################
2972
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002973# Enable tests for all supported sanitizers
2974foreach tuple : sanitizers
2975 sanitizer = tuple[0]
2976 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002977
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002978 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002979 prev = ''
2980 foreach p : fuzz_regression_tests
2981 b = p.split('/')[-2]
2982 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002983
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002984 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002985
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002986 if name != prev
2987 if want_tests == 'false'
2988 message('Not compiling @0@ because tests is set to false'.format(name))
2989 elif slow_tests
2990 exe = custom_target(
2991 name,
2992 output : name,
2993 depends : build,
2994 command : [env, 'ln', '-fs',
2995 join_paths(build.full_path(), b),
2996 '@OUTPUT@'],
2997 build_by_default : true)
2998 else
2999 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3000 endif
3001 endif
3002 prev = name
3003
3004 if want_tests != 'false' and slow_tests
3005 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3006 env,
3007 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003008 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003009 endif
3010 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003011 endif
3012endforeach
3013
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003014
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003015############################################################
3016
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003017if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003018 all_files = run_command(
3019 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003020 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003021 'ls-files',
3022 ':/*.[ch]'])
3023 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003024
userwithuide85a6902017-08-09 13:41:44 +00003025 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003026 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003027 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003028 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003029 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003030 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003031 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003032endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003033
3034if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003035 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003036 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003037 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003038 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003039endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003040
3041if git.found()
3042 git_head = run_command(
3043 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003044 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003045 'rev-parse', 'HEAD']).stdout().strip()
3046 git_head_short = run_command(
3047 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003048 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003049 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3050
3051 run_target(
3052 'git-snapshot',
3053 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003054 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003055 git_head_short),
3056 '--prefix', 'systemd-@0@/'.format(git_head),
3057 'HEAD'])
3058endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003059
3060############################################################
3061
Lennart Poettering51b13862017-12-20 12:51:14 +01003062meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3063run_target(
3064 'check-api-docs',
3065 depends : [man, libsystemd, libudev],
3066 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3067
3068############################################################
3069
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003070status = [
3071 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3072
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003073 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003074 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003075 'prefix directory: @0@'.format(prefixdir),
3076 'rootprefix directory: @0@'.format(rootprefixdir),
3077 'sysconf directory: @0@'.format(sysconfdir),
3078 'include directory: @0@'.format(includedir),
3079 'lib directory: @0@'.format(libdir),
3080 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003081 'SysV init scripts: @0@'.format(sysvinit_path),
3082 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003083 'PAM modules directory: @0@'.format(pamlibdir),
3084 'PAM configuration directory: @0@'.format(pamconfdir),
3085 'RPM macros directory: @0@'.format(rpmmacrosdir),
3086 'modprobe.d directory: @0@'.format(modprobedir),
3087 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3088 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3089 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3090 'bash completions directory: @0@'.format(bashcompletiondir),
3091 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003092 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003093 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3094 get_option('debug-tty')),
3095 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003096 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003097 'maximum system UID: @0@'.format(system_uid_max),
3098 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003099 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3100 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3101 'minimum container UID base: @0@'.format(container_uid_base_min),
3102 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003103 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003104 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003105 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003106 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003107 'nobody user name: @0@'.format(nobody_user),
3108 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003109 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003110 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003111
3112 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003113 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003114 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003115 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003116 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
3117 'default locale: @0@'.format(default_locale)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003118
3119alt_dns_servers = '\n '.join(dns_servers.split(' '))
3120alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3121status += [
3122 'default DNS servers: @0@'.format(alt_dns_servers),
3123 'default NTP servers: @0@'.format(alt_ntp_servers)]
3124
3125alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3126 '@@0@'.format(time_epoch)).stdout().strip()
3127status += [
3128 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3129
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003130status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003131 'static libsystemd: @0@'.format(static_libsystemd),
3132 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003133
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003134# TODO:
3135# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3136# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3137# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3138
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003139if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003140 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003141
3142 if have_gnu_efi
3143 status += [
3144 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003145 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003146 'EFI lib directory: @0@'.format(efi_libdir),
3147 'EFI lds directory: @0@'.format(efi_ldsdir),
3148 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003149 endif
3150endif
3151
3152found = []
3153missing = []
3154
3155foreach tuple : [
3156 ['libcryptsetup'],
3157 ['PAM'],
3158 ['AUDIT'],
3159 ['IMA'],
3160 ['AppArmor'],
3161 ['SELinux'],
3162 ['SECCOMP'],
3163 ['SMACK'],
3164 ['zlib'],
3165 ['xz'],
3166 ['lz4'],
3167 ['bzip2'],
3168 ['ACL'],
3169 ['gcrypt'],
3170 ['qrencode'],
3171 ['microhttpd'],
3172 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003173 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003174 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003175 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003176 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003177 ['libidn'],
3178 ['libiptc'],
3179 ['elfutils'],
3180 ['binfmt'],
3181 ['vconsole'],
3182 ['quotacheck'],
3183 ['tmpfiles'],
3184 ['environment.d'],
3185 ['sysusers'],
3186 ['firstboot'],
3187 ['randomseed'],
3188 ['backlight'],
3189 ['rfkill'],
3190 ['logind'],
3191 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003192 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003193 ['importd'],
3194 ['hostnamed'],
3195 ['timedated'],
3196 ['timesyncd'],
3197 ['localed'],
3198 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003199 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003200 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3201 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003202 ['coredump'],
Eric DeVolder9b4abc62019-05-16 08:59:01 -05003203 ['pstore'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003204 ['polkit'],
3205 ['legacy pkla', install_polkit_pkla],
3206 ['efi'],
3207 ['gnu-efi', have_gnu_efi],
3208 ['kmod'],
3209 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003210 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003211 ['blkid'],
3212 ['dbus'],
3213 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003214 ['nss-myhostname'],
3215 ['nss-mymachines'],
3216 ['nss-resolve'],
3217 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003218 ['hwdb'],
3219 ['tpm'],
3220 ['man pages', want_man],
3221 ['html pages', want_html],
3222 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003223 ['SysV compat'],
3224 ['utmp'],
3225 ['ldconfig'],
3226 ['hibernate'],
3227 ['adm group', get_option('adm-group')],
3228 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003229 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003230 ['debug hashmap'],
3231 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003232 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003233 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003234 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003235 ['link-udev-shared', get_option('link-udev-shared')],
3236 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003237]
3238
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003239 if tuple.length() >= 2
3240 cond = tuple[1]
3241 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003242 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3243 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003244 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003245 endif
3246 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003247 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003248 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003249 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003250 endif
3251endforeach
3252
3253status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003254 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003255 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003256 '',
3257 'disabled features: @0@'.format(', '.join(missing)),
3258 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003259message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003260
3261if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003262 warning('\n' +
3263 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3264 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3265 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003266endif