blob: e5ceb1e169db344f49849986a81e96c48b2cf2b0 [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',
Lennart Poettering18999852019-07-23 15:36:01 +02004 version : '243',
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 Poettering18999852019-07-23 15:36:01 +020015libsystemd_version = '0.27.0'
16libudev_version = '1.6.15'
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,
Lennart Poettering733cbd02019-07-23 14:22:06 +02001543 libshared_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001544 libbasic],
1545 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001546 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001547 link_depends : sym,
1548 install : true,
1549 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001550
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001551 # We cannot use shared_module because it does not support version suffix.
1552 # Unfortunately shared_library insists on creating the symlink…
1553 meson.add_install_script('sh', '-c',
1554 'rm $DESTDIR@0@/libnss_@1@.so'
1555 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001556
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001557 if want_tests != 'false'
1558 test('dlopen-nss_' + module,
1559 test_dlopen,
1560 # path to dlopen must include a slash
1561 args : nss.full_path())
1562 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001563 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001564endforeach
1565
1566############################################################
1567
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001568executable('systemd',
1569 systemd_sources,
1570 include_directories : includes,
1571 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001572 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001573 dependencies : [versiondep,
1574 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001575 librt,
1576 libseccomp,
1577 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001578 libmount,
1579 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001580 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001581 install : true,
1582 install_dir : rootlibexecdir)
1583
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001584meson.add_install_script(meson_make_symlink,
1585 join_paths(rootlibexecdir, 'systemd'),
1586 join_paths(rootsbindir, 'init'))
1587
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001588exe = executable('systemd-analyze',
1589 systemd_analyze_sources,
1590 include_directories : includes,
1591 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001592 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001593 dependencies : [versiondep,
1594 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001595 librt,
1596 libseccomp,
1597 libselinux,
1598 libmount,
1599 libblkid],
1600 install_rpath : rootlibexecdir,
1601 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001602public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001603
1604executable('systemd-journald',
1605 systemd_journald_sources,
1606 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001607 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001608 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001609 dependencies : [threads,
1610 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001611 liblz4,
1612 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001613 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001614 install : true,
1615 install_dir : rootlibexecdir)
1616
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001617exe = executable('systemd-cat',
1618 systemd_cat_sources,
1619 include_directories : includes,
1620 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001621 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001622 dependencies : [threads],
1623 install_rpath : rootlibexecdir,
1624 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001625public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001626
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001627exe = executable('journalctl',
1628 journalctl_sources,
1629 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001630 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001631 dependencies : [threads,
1632 libqrencode,
1633 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001634 liblz4,
1635 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001636 install_rpath : rootlibexecdir,
1637 install : true,
1638 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001639public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001640
1641executable('systemd-getty-generator',
1642 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001643 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001644 link_with : [libshared],
1645 install_rpath : rootlibexecdir,
1646 install : true,
1647 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001648
1649executable('systemd-debug-generator',
1650 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001651 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001652 link_with : [libshared],
1653 install_rpath : rootlibexecdir,
1654 install : true,
1655 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001656
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001657executable('systemd-run-generator',
1658 'src/run-generator/run-generator.c',
1659 include_directories : includes,
1660 link_with : [libshared],
1661 install_rpath : rootlibexecdir,
1662 install : true,
1663 install_dir : systemgeneratordir)
1664
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001665executable('systemd-fstab-generator',
1666 'src/fstab-generator/fstab-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001667 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01001668 link_with : [libcore_shared,
1669 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001670 install_rpath : rootlibexecdir,
1671 install : true,
1672 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001673
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001674if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001675 executable('30-systemd-environment-d-generator',
1676 'src/environment-d-generator/environment-d-generator.c',
1677 include_directories : includes,
1678 link_with : [libshared],
1679 install_rpath : rootlibexecdir,
1680 install : true,
1681 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001682
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001683 meson.add_install_script(meson_make_symlink,
1684 join_paths(sysconfdir, 'environment'),
1685 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001686endif
1687
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001688if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001689 executable('systemd-hibernate-resume-generator',
1690 'src/hibernate-resume/hibernate-resume-generator.c',
1691 include_directories : includes,
1692 link_with : [libshared],
1693 install_rpath : rootlibexecdir,
1694 install : true,
1695 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001696
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001697 executable('systemd-hibernate-resume',
1698 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001699 include_directories : includes,
1700 link_with : [libshared],
1701 install_rpath : rootlibexecdir,
1702 install : true,
1703 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001704endif
1705
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001706if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001707 executable('systemd-gpt-auto-generator',
1708 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001709 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001710 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001711 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001712 dependencies : libblkid,
1713 install_rpath : rootlibexecdir,
1714 install : true,
1715 install_dir : systemgeneratordir)
1716
1717 exe = executable('systemd-dissect',
1718 'src/dissect/dissect.c',
1719 include_directories : includes,
1720 link_with : [libshared],
1721 install_rpath : rootlibexecdir,
1722 install : true,
1723 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001724 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001725endif
1726
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001727if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001728 executable('systemd-resolved',
1729 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001730 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001731 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001732 libbasic_gcrypt,
1733 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001734 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001735 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001736 install : true,
1737 install_dir : rootlibexecdir)
1738
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001739 exe = executable('resolvectl',
1740 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001741 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001742 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001743 libbasic_gcrypt,
1744 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001745 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001746 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001747 libm,
1748 libidn],
1749 install_rpath : rootlibexecdir,
1750 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001751 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001752
1753 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001754 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001755 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001756
1757 meson.add_install_script(meson_make_symlink,
1758 join_paths(bindir, 'resolvectl'),
1759 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001760endif
1761
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001762if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001763 executable('systemd-logind',
1764 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001765 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001766 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001767 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001768 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001769 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001770 install_rpath : rootlibexecdir,
1771 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001772 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001773
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001774 exe = executable('loginctl',
1775 loginctl_sources,
1776 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001777 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001778 dependencies : [threads,
1779 liblz4,
1780 libxz],
1781 install_rpath : rootlibexecdir,
1782 install : true,
1783 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001784 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001785
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001786 exe = executable('systemd-inhibit',
1787 'src/login/inhibit.c',
1788 include_directories : includes,
1789 link_with : [libshared],
1790 install_rpath : rootlibexecdir,
1791 install : true,
1792 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001793 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001794
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001795 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001796 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001797 pam_systemd = shared_library(
1798 'pam_systemd',
1799 pam_systemd_c,
1800 name_prefix : '',
1801 include_directories : includes,
1802 link_args : ['-shared',
1803 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001804 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001805 libshared_static],
1806 dependencies : [threads,
1807 libpam,
1808 libpam_misc],
1809 link_depends : pam_systemd_sym,
1810 install : true,
1811 install_dir : pamlibdir)
1812
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001813 if want_tests != 'false'
1814 test('dlopen-pam_systemd',
1815 test_dlopen,
1816 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001817 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001818 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001819 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001820
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001821 executable('systemd-user-runtime-dir',
1822 user_runtime_dir_sources,
1823 include_directories : includes,
1824 link_with : [libshared],
1825 install_rpath : rootlibexecdir,
1826 install : true,
1827 install_dir : rootlibexecdir)
1828endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001829
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001830if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001831 executable('systemd-user-sessions',
1832 'src/user-sessions/user-sessions.c',
1833 include_directories : includes,
1834 link_with : [libshared],
1835 install_rpath : rootlibexecdir,
1836 install : true,
1837 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001838endif
1839
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001840if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001841 exe = executable('bootctl',
1842 'src/boot/bootctl.c',
1843 include_directories : includes,
1844 link_with : [libshared],
1845 dependencies : [libblkid],
1846 install_rpath : rootlibexecdir,
1847 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001848 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001849
1850 executable('systemd-bless-boot',
1851 'src/boot/bless-boot.c',
1852 include_directories : includes,
1853 link_with : [libshared],
1854 dependencies : [libblkid],
1855 install_rpath : rootlibexecdir,
1856 install : true,
1857 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001858
1859 executable('systemd-bless-boot-generator',
1860 'src/boot/bless-boot-generator.c',
1861 include_directories : includes,
1862 link_with : [libshared],
1863 install_rpath : rootlibexecdir,
1864 install : true,
1865 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001866endif
1867
Lennart Poetteringf876f532018-06-25 16:07:33 +02001868executable('systemd-boot-check-no-failures',
1869 'src/boot/boot-check-no-failures.c',
1870 include_directories : includes,
1871 link_with : [libshared],
1872 dependencies : [libblkid],
1873 install_rpath : rootlibexecdir,
1874 install : true,
1875 install_dir : rootlibexecdir)
1876
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001877exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1878 include_directories : includes,
1879 link_with : [libshared],
1880 dependencies : [threads],
1881 install_rpath : rootlibexecdir,
1882 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001883public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001884
Felipe Satelerf3794362018-05-22 15:08:57 -04001885
1886if get_option('link-systemctl-shared')
1887 systemctl_link_with = [libshared]
1888else
1889 systemctl_link_with = [libsystemd_static,
1890 libshared_static,
1891 libjournal_client,
1892 libbasic_gcrypt]
1893endif
1894
Lennart Poettering63a3b3c2019-03-22 20:05:08 +01001895exe = executable('systemctl',
1896 'src/systemctl/systemctl.c',
1897 'src/systemctl/sysv-compat.h',
1898 'src/systemctl/sysv-compat.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001899 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001900 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001901 dependencies : [threads,
1902 libcap,
1903 libselinux,
1904 libxz,
1905 liblz4],
1906 install_rpath : rootlibexecdir,
1907 install : true,
1908 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001909public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001910
Lennart Poettering61d05782018-04-16 21:41:40 +02001911if conf.get('ENABLE_PORTABLED') == 1
1912 executable('systemd-portabled',
1913 systemd_portabled_sources,
1914 include_directories : includes,
1915 link_with : [libshared],
1916 dependencies : [threads],
1917 install_rpath : rootlibexecdir,
1918 install : true,
1919 install_dir : rootlibexecdir)
1920
1921 exe = executable('portablectl', 'src/portable/portablectl.c',
1922 include_directories : includes,
1923 link_with : [libshared],
1924 dependencies : [threads],
1925 install_rpath : rootlibexecdir,
1926 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001927 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001928 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001929endif
1930
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001931foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1932 meson.add_install_script(meson_make_symlink,
1933 join_paths(rootbindir, 'systemctl'),
1934 join_paths(rootsbindir, alias))
1935endforeach
1936
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001937if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001938 executable('systemd-backlight',
1939 'src/backlight/backlight.c',
1940 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001941 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001942 install_rpath : rootlibexecdir,
1943 install : true,
1944 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001945endif
1946
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001947if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001948 executable('systemd-rfkill',
1949 'src/rfkill/rfkill.c',
1950 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001951 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001952 install_rpath : rootlibexecdir,
1953 install : true,
1954 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001955endif
1956
1957executable('systemd-system-update-generator',
1958 'src/system-update-generator/system-update-generator.c',
1959 include_directories : includes,
1960 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001961 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001962 install : true,
1963 install_dir : systemgeneratordir)
1964
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001965if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001966 executable('systemd-cryptsetup',
1967 'src/cryptsetup/cryptsetup.c',
1968 include_directories : includes,
1969 link_with : [libshared],
1970 dependencies : [libcryptsetup],
1971 install_rpath : rootlibexecdir,
1972 install : true,
1973 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001974
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001975 executable('systemd-cryptsetup-generator',
1976 'src/cryptsetup/cryptsetup-generator.c',
1977 include_directories : includes,
1978 link_with : [libshared],
1979 dependencies : [libcryptsetup],
1980 install_rpath : rootlibexecdir,
1981 install : true,
1982 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001983
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001984 executable('systemd-veritysetup',
1985 'src/veritysetup/veritysetup.c',
1986 include_directories : includes,
1987 link_with : [libshared],
1988 dependencies : [libcryptsetup],
1989 install_rpath : rootlibexecdir,
1990 install : true,
1991 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001992
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001993 executable('systemd-veritysetup-generator',
1994 'src/veritysetup/veritysetup-generator.c',
1995 include_directories : includes,
1996 link_with : [libshared],
1997 dependencies : [libcryptsetup],
1998 install_rpath : rootlibexecdir,
1999 install : true,
2000 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002001endif
2002
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002003if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002004 executable('systemd-sysv-generator',
2005 'src/sysv-generator/sysv-generator.c',
2006 include_directories : includes,
2007 link_with : [libshared],
2008 install_rpath : rootlibexecdir,
2009 install : true,
2010 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002011
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002012 executable('systemd-rc-local-generator',
2013 'src/rc-local-generator/rc-local-generator.c',
2014 include_directories : includes,
2015 link_with : [libshared],
2016 install_rpath : rootlibexecdir,
2017 install : true,
2018 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002019endif
2020
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002021if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002022 executable('systemd-hostnamed',
2023 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002024 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002025 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002026 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002027 install : true,
2028 install_dir : rootlibexecdir)
2029
2030 exe = executable('hostnamectl',
2031 'src/hostname/hostnamectl.c',
2032 include_directories : includes,
2033 link_with : [libshared],
2034 install_rpath : rootlibexecdir,
2035 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002036 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002037endif
2038
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002039if conf.get('ENABLE_LOCALED') == 1
2040 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002041 # logind will load libxkbcommon.so dynamically on its own
2042 deps = [libdl]
2043 else
2044 deps = []
2045 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002046
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002047 executable('systemd-localed',
2048 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002049 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002050 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002051 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002052 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002053 install : true,
2054 install_dir : rootlibexecdir)
2055
2056 exe = executable('localectl',
2057 localectl_sources,
2058 include_directories : includes,
2059 link_with : [libshared],
2060 install_rpath : rootlibexecdir,
2061 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002062 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002063endif
2064
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002065if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002066 executable('systemd-timedated',
2067 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002068 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002069 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002070 install_rpath : rootlibexecdir,
2071 install : true,
2072 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002073endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002074
Yu Watanabe6129ec82018-05-03 18:07:43 +09002075if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002076 exe = executable('timedatectl',
2077 'src/timedate/timedatectl.c',
2078 include_directories : includes,
2079 install_rpath : rootlibexecdir,
2080 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002081 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002082 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002083 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002084endif
2085
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002086if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002087 executable('systemd-timesyncd',
2088 systemd_timesyncd_sources,
2089 include_directories : includes,
2090 link_with : [libshared],
2091 dependencies : [threads,
2092 libm],
2093 install_rpath : rootlibexecdir,
2094 install : true,
2095 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002096
2097 executable('systemd-time-wait-sync',
2098 'src/time-wait-sync/time-wait-sync.c',
2099 include_directories : includes,
2100 link_with : [libshared],
2101 install_rpath : rootlibexecdir,
2102 install : true,
2103 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002104endif
2105
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002106if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002107 executable('systemd-machined',
2108 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002109 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002110 link_with : [libmachine_core,
2111 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002112 install_rpath : rootlibexecdir,
2113 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002114 install_dir : rootlibexecdir)
2115
2116 exe = executable('machinectl',
2117 'src/machine/machinectl.c',
2118 include_directories : includes,
2119 link_with : [libshared],
2120 dependencies : [threads,
2121 libxz,
2122 liblz4],
2123 install_rpath : rootlibexecdir,
2124 install : true,
2125 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002126 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002127endif
2128
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002129if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002130 executable('systemd-importd',
2131 systemd_importd_sources,
2132 include_directories : includes,
2133 link_with : [libshared],
2134 dependencies : [threads],
2135 install_rpath : rootlibexecdir,
2136 install : true,
2137 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002138
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002139 systemd_pull = executable('systemd-pull',
2140 systemd_pull_sources,
2141 include_directories : includes,
2142 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002143 dependencies : [versiondep,
2144 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002145 libz,
2146 libbzip2,
2147 libxz,
2148 libgcrypt],
2149 install_rpath : rootlibexecdir,
2150 install : true,
2151 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002152
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002153 systemd_import = executable('systemd-import',
2154 systemd_import_sources,
2155 include_directories : includes,
2156 link_with : [libshared],
2157 dependencies : [libcurl,
2158 libz,
2159 libbzip2,
2160 libxz],
2161 install_rpath : rootlibexecdir,
2162 install : true,
2163 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002164
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002165 systemd_import_fs = executable('systemd-import-fs',
2166 systemd_import_fs_sources,
2167 include_directories : includes,
2168 link_with : [libshared],
2169 install_rpath : rootlibexecdir,
2170 install : true,
2171 install_dir : rootlibexecdir)
2172
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002173 systemd_export = executable('systemd-export',
2174 systemd_export_sources,
2175 include_directories : includes,
2176 link_with : [libshared],
2177 dependencies : [libcurl,
2178 libz,
2179 libbzip2,
2180 libxz],
2181 install_rpath : rootlibexecdir,
2182 install : true,
2183 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002184
2185 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002186endif
2187
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002188if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002189 exe = executable('systemd-journal-upload',
2190 systemd_journal_upload_sources,
2191 include_directories : includes,
2192 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002193 dependencies : [versiondep,
2194 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002195 libcurl,
2196 libgnutls,
2197 libxz,
2198 liblz4],
2199 install_rpath : rootlibexecdir,
2200 install : true,
2201 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002202 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002203endif
2204
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002205if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002206 s_j_remote = executable('systemd-journal-remote',
2207 systemd_journal_remote_sources,
2208 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002209 link_with : [libshared,
2210 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002211 dependencies : [threads,
2212 libmicrohttpd,
2213 libgnutls,
2214 libxz,
2215 liblz4],
2216 install_rpath : rootlibexecdir,
2217 install : true,
2218 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002219
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002220 s_j_gatewayd = executable('systemd-journal-gatewayd',
2221 systemd_journal_gatewayd_sources,
2222 include_directories : includes,
2223 link_with : [libshared],
2224 dependencies : [threads,
2225 libmicrohttpd,
2226 libgnutls,
2227 libxz,
2228 liblz4],
2229 install_rpath : rootlibexecdir,
2230 install : true,
2231 install_dir : rootlibexecdir)
2232 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002233endif
2234
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002235if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002236 executable('systemd-coredump',
2237 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002238 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002239 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002240 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002241 libacl,
2242 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002243 libxz,
2244 liblz4],
2245 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002246 install : true,
2247 install_dir : rootlibexecdir)
2248
2249 exe = executable('coredumpctl',
2250 coredumpctl_sources,
2251 include_directories : includes,
2252 link_with : [libshared],
2253 dependencies : [threads,
2254 libxz,
2255 liblz4],
2256 install_rpath : rootlibexecdir,
2257 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002258 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002259endif
2260
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002261if conf.get('ENABLE_PSTORE') == 1
2262 executable('systemd-pstore',
2263 systemd_pstore_sources,
2264 include_directories : includes,
2265 link_with : [libshared],
2266 dependencies : [threads,
2267 libacl,
2268 libdw,
2269 libxz,
2270 liblz4],
2271 install_rpath : rootlibexecdir,
2272 install : true,
2273 install_dir : rootlibexecdir)
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002274endif
2275
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002276if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002277 exe = executable('systemd-binfmt',
2278 'src/binfmt/binfmt.c',
2279 include_directories : includes,
2280 link_with : [libshared],
2281 install_rpath : rootlibexecdir,
2282 install : true,
2283 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002284 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002285
2286 meson.add_install_script('sh', '-c',
2287 mkdir_p.format(binfmtdir))
2288 meson.add_install_script('sh', '-c',
2289 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2290endif
2291
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002292if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002293 executable('systemd-vconsole-setup',
2294 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002295 include_directories : includes,
2296 link_with : [libshared],
2297 install_rpath : rootlibexecdir,
2298 install : true,
2299 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002300endif
2301
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002302if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002303 executable('systemd-random-seed',
2304 'src/random-seed/random-seed.c',
2305 include_directories : includes,
2306 link_with : [libshared],
2307 install_rpath : rootlibexecdir,
2308 install : true,
2309 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002310endif
2311
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002312if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002313 executable('systemd-firstboot',
2314 'src/firstboot/firstboot.c',
2315 include_directories : includes,
2316 link_with : [libshared],
2317 dependencies : [libcrypt],
2318 install_rpath : rootlibexecdir,
2319 install : true,
2320 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002321endif
2322
2323executable('systemd-remount-fs',
2324 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002325 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002326 link_with : [libcore_shared,
2327 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002328 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002329 install : true,
2330 install_dir : rootlibexecdir)
2331
2332executable('systemd-machine-id-setup',
2333 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002334 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002335 link_with : [libcore_shared,
2336 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002337 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002338 install : true,
2339 install_dir : rootbindir)
2340
2341executable('systemd-fsck',
2342 'src/fsck/fsck.c',
2343 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002344 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002345 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002346 install : true,
2347 install_dir : rootlibexecdir)
2348
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002349executable('systemd-growfs',
2350 'src/partition/growfs.c',
2351 include_directories : includes,
2352 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002353 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002354 install_rpath : rootlibexecdir,
2355 install : true,
2356 install_dir : rootlibexecdir)
2357
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002358executable('systemd-makefs',
2359 'src/partition/makefs.c',
2360 include_directories : includes,
2361 link_with : [libshared],
2362 install_rpath : rootlibexecdir,
2363 install : true,
2364 install_dir : rootlibexecdir)
2365
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002366executable('systemd-sleep',
2367 'src/sleep/sleep.c',
2368 include_directories : includes,
2369 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002370 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002371 install : true,
2372 install_dir : rootlibexecdir)
2373
Yu Watanabed25e1272019-01-03 02:32:57 +09002374install_data('src/sleep/sleep.conf',
2375 install_dir : pkgsysconfdir)
2376
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002377exe = executable('systemd-sysctl',
2378 'src/sysctl/sysctl.c',
2379 include_directories : includes,
2380 link_with : [libshared],
2381 install_rpath : rootlibexecdir,
2382 install : true,
2383 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002384public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002385
2386executable('systemd-ac-power',
2387 'src/ac-power/ac-power.c',
2388 include_directories : includes,
2389 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002390 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002391 install : true,
2392 install_dir : rootlibexecdir)
2393
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002394exe = executable('systemd-detect-virt',
2395 'src/detect-virt/detect-virt.c',
2396 include_directories : includes,
2397 link_with : [libshared],
2398 install_rpath : rootlibexecdir,
2399 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002400public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002401
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002402exe = executable('systemd-delta',
2403 'src/delta/delta.c',
2404 include_directories : includes,
2405 link_with : [libshared],
2406 install_rpath : rootlibexecdir,
2407 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002408public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002409
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002410exe = executable('systemd-escape',
2411 'src/escape/escape.c',
2412 include_directories : includes,
2413 link_with : [libshared],
2414 install_rpath : rootlibexecdir,
2415 install : true,
2416 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002417public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002418
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002419exe = executable('systemd-notify',
2420 'src/notify/notify.c',
2421 include_directories : includes,
2422 link_with : [libshared],
2423 install_rpath : rootlibexecdir,
2424 install : true,
2425 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002426public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002427
2428executable('systemd-volatile-root',
2429 'src/volatile-root/volatile-root.c',
2430 include_directories : includes,
2431 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002432 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002433 install : true,
2434 install_dir : rootlibexecdir)
2435
2436executable('systemd-cgroups-agent',
2437 'src/cgroups-agent/cgroups-agent.c',
2438 include_directories : includes,
2439 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002440 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002441 install : true,
2442 install_dir : rootlibexecdir)
2443
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002444exe = executable('systemd-id128',
2445 'src/id128/id128.c',
2446 include_directories : includes,
2447 link_with : [libshared],
2448 install_rpath : rootlibexecdir,
2449 install : true)
2450public_programs += exe
2451
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002452exe = executable('systemd-path',
2453 'src/path/path.c',
2454 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002455 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002456 install_rpath : rootlibexecdir,
2457 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002458public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002459
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002460exe = executable('systemd-ask-password',
2461 'src/ask-password/ask-password.c',
2462 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002463 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002464 install_rpath : rootlibexecdir,
2465 install : true,
2466 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002467public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002468
2469executable('systemd-reply-password',
2470 'src/reply-password/reply-password.c',
2471 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002472 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002473 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002474 install : true,
2475 install_dir : rootlibexecdir)
2476
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002477exe = executable('systemd-tty-ask-password-agent',
2478 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2479 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002480 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002481 install_rpath : rootlibexecdir,
2482 install : true,
2483 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002484public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002485
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002486exe = executable('systemd-cgls',
2487 'src/cgls/cgls.c',
2488 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002489 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002490 install_rpath : rootlibexecdir,
2491 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002492public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002493
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002494exe = executable('systemd-cgtop',
2495 'src/cgtop/cgtop.c',
2496 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002497 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002498 install_rpath : rootlibexecdir,
2499 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002500public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002501
2502executable('systemd-initctl',
2503 'src/initctl/initctl.c',
2504 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002505 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002506 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002507 install : true,
2508 install_dir : rootlibexecdir)
2509
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002510exe = executable('systemd-mount',
2511 'src/mount/mount-tool.c',
2512 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002513 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek7d991d42019-04-04 13:41:47 +02002514 dependencies: [libmount],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002515 install_rpath : rootlibexecdir,
2516 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002517public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002518
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002519meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002520 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002521
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002522exe = executable('systemd-run',
2523 'src/run/run.c',
2524 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002525 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002526 install_rpath : rootlibexecdir,
2527 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002528public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002529
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002530exe = executable('systemd-stdio-bridge',
2531 'src/stdio-bridge/stdio-bridge.c',
2532 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002533 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002534 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002535 install_rpath : rootlibexecdir,
2536 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002537public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002538
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002539exe = executable('busctl',
2540 'src/busctl/busctl.c',
2541 'src/busctl/busctl-introspect.c',
2542 'src/busctl/busctl-introspect.h',
2543 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002544 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002545 install_rpath : rootlibexecdir,
2546 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002547public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002548
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002549if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002550 exe = executable('systemd-sysusers',
2551 'src/sysusers/sysusers.c',
2552 include_directories : includes,
2553 link_with : [libshared],
2554 install_rpath : rootlibexecdir,
2555 install : true,
2556 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002557 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002558endif
2559
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002560if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002561 exe = executable('systemd-tmpfiles',
2562 'src/tmpfiles/tmpfiles.c',
2563 include_directories : includes,
2564 link_with : [libshared],
2565 dependencies : [libacl],
2566 install_rpath : rootlibexecdir,
2567 install : true,
2568 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002569 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002570
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002571 if want_tests != 'false'
2572 test('test-systemd-tmpfiles',
2573 test_systemd_tmpfiles_py,
2574 # https://github.com/mesonbuild/meson/issues/2681
2575 args : exe.full_path())
2576 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002577endif
2578
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002579if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002580 exe = executable('systemd-hwdb',
2581 'src/hwdb/hwdb.c',
2582 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2583 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002584 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002585 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002586 install : true,
2587 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002588 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002589endif
2590
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002591if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002592 executable('systemd-quotacheck',
2593 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002594 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002595 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002596 install_rpath : rootlibexecdir,
2597 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002598 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002599endif
2600
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002601exe = executable('systemd-socket-proxyd',
2602 'src/socket-proxy/socket-proxyd.c',
2603 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002604 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002605 dependencies : [threads],
2606 install_rpath : rootlibexecdir,
2607 install : true,
2608 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002609public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002610
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002611exe = executable('systemd-udevd',
2612 systemd_udevd_sources,
2613 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002614 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002615 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002616 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002617 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002618 dependencies : [versiondep,
2619 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002620 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002621 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002622 libacl,
2623 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002624 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002625 install : true,
2626 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002627public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002628
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002629exe = executable('udevadm',
2630 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002631 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002632 include_directories : includes,
2633 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002634 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002635 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002636 dependencies : [versiondep,
2637 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002638 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002639 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002640 libacl,
2641 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002642 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002643 install : true,
2644 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002645public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002646
2647executable('systemd-shutdown',
2648 systemd_shutdown_sources,
2649 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002650 link_with : [libcore_shared,
2651 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002652 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002653 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002654 install : true,
2655 install_dir : rootlibexecdir)
2656
2657executable('systemd-update-done',
2658 'src/update-done/update-done.c',
2659 include_directories : includes,
2660 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002661 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002662 install : true,
2663 install_dir : rootlibexecdir)
2664
2665executable('systemd-update-utmp',
2666 'src/update-utmp/update-utmp.c',
2667 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002668 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002669 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002670 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002671 install : true,
2672 install_dir : rootlibexecdir)
2673
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002674if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002675 executable('systemd-modules-load',
2676 'src/modules-load/modules-load.c',
2677 include_directories : includes,
2678 link_with : [libshared],
2679 dependencies : [libkmod],
2680 install_rpath : rootlibexecdir,
2681 install : true,
2682 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002683
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002684 meson.add_install_script('sh', '-c',
2685 mkdir_p.format(modulesloaddir))
2686 meson.add_install_script('sh', '-c',
2687 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002688endif
2689
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002690exe = executable('systemd-nspawn',
2691 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002692 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002693 link_with : [libcore_shared,
2694 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002695 libshared],
Franck Bui82384232019-03-22 11:09:08 +01002696 dependencies : [libblkid,
2697 libseccomp],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002698 install_rpath : rootlibexecdir,
2699 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002700public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002701
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002702if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002703 executable('systemd-networkd',
2704 systemd_networkd_sources,
2705 include_directories : includes,
2706 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002707 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002708 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002709 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002710 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002711 install_rpath : rootlibexecdir,
2712 install : true,
2713 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002714
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002715 executable('systemd-networkd-wait-online',
2716 systemd_networkd_wait_online_sources,
2717 include_directories : includes,
2718 link_with : [libnetworkd_core,
2719 libshared],
2720 install_rpath : rootlibexecdir,
2721 install : true,
2722 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002723
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002724 exe = executable('networkctl',
2725 networkctl_sources,
2726 include_directories : includes,
2727 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002728 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002729 install_rpath : rootlibexecdir,
2730 install : true,
2731 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002732 public_programs += exe
Yu Watanabe426c1d32019-07-13 03:35:04 +09002733
2734 executable('systemd-network-generator',
2735 network_generator_sources,
2736 include_directories : includes,
2737 link_with : [libshared],
2738 install_rpath : rootlibexecdir,
2739 install : true,
2740 install_dir : rootlibexecdir)
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002741endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002742
2743executable('systemd-sulogin-shell',
2744 ['src/sulogin-shell/sulogin-shell.c'],
2745 include_directories : includes,
2746 link_with : [libshared],
2747 install_rpath : rootlibexecdir,
2748 install : true,
2749 install_dir : rootlibexecdir)
2750
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002751############################################################
2752
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002753custom_target(
2754 'systemd-runtest.env',
2755 output : 'systemd-runtest.env',
2756 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05002757 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002758 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002759 '} >@OUTPUT@'],
2760 build_by_default : true)
2761
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002762foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002763 sources = tuple[0]
2764 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2765 dependencies = tuple[2]
2766 condition = tuple.length() >= 4 ? tuple[3] : ''
2767 type = tuple.length() >= 5 ? tuple[4] : ''
2768 defs = tuple.length() >= 6 ? tuple[5] : []
2769 incs = tuple.length() >= 7 ? tuple[6] : includes
2770 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002771
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002772 name = sources[0].split('/')[-1].split('.')[0]
2773 if type.startswith('timeout=')
2774 timeout = type.split('=')[1].to_int()
2775 type = ''
2776 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002777
2778 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002779 exe = executable(
2780 name,
2781 sources,
2782 include_directories : incs,
2783 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002784 dependencies : [versiondep,
2785 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002786 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002787 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002788 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002789 install : install_tests,
2790 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002791
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002792 if type == 'manual'
2793 message('@0@ is a manual test'.format(name))
2794 elif type == 'unsafe' and want_tests != 'unsafe'
2795 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002796 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002797 test(name, exe,
2798 env : test_env,
2799 timeout : timeout)
2800 endif
2801 else
2802 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2803 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002804endforeach
2805
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002806exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002807 'test-libsystemd-sym',
2808 test_libsystemd_sym_c,
2809 include_directories : includes,
2810 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002811 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002812 install : install_tests,
2813 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002814if want_tests != 'false'
2815 test('test-libsystemd-sym', exe)
2816endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002817
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002818exe = executable(
2819 'test-libsystemd-static-sym',
2820 test_libsystemd_sym_c,
2821 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002822 link_with : [install_libsystemd_static],
2823 dependencies : [threads], # threads is already included in dependencies on the library,
2824 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002825 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002826 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002827 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002828if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002829 test('test-libsystemd-static-sym', exe)
2830endif
2831
2832exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002833 'test-libudev-sym',
2834 test_libudev_sym_c,
2835 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002836 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002837 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002838 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002839 install : install_tests,
2840 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002841if want_tests != 'false'
2842 test('test-libudev-sym', exe)
2843endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002844
2845exe = executable(
2846 'test-libudev-static-sym',
2847 test_libudev_sym_c,
2848 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002849 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002850 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002851 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002852 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002853 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002854if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002855 test('test-libudev-static-sym', exe)
2856endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002857
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002858############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002859
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002860fuzzer_exes = []
2861
Michael Olbrich59967402018-11-11 11:27:35 +01002862if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002863foreach tuple : fuzzers
2864 sources = tuple[0]
2865 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2866 dependencies = tuple[2]
2867 defs = tuple.length() >= 4 ? tuple[3] : []
2868 incs = tuple.length() >= 5 ? tuple[4] : includes
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002869 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002870
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002871 if want_ossfuzz or want_fuzzbuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002872 dependencies += fuzzing_engine
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002873 elif want_libfuzzer
2874 if fuzzing_engine.found()
2875 dependencies += fuzzing_engine
2876 else
2877 link_args += ['-fsanitize=fuzzer']
2878 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002879 else
2880 sources += 'src/fuzz/fuzz-main.c'
2881 endif
2882
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00002883 if want_fuzzbuzz
2884 sources += 'src/fuzz/fuzzer-entry-point.c'
2885 endif
2886
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002887 name = sources[0].split('/')[-1].split('.')[0]
2888
2889 fuzzer_exes += executable(
2890 name,
2891 sources,
2892 include_directories : [incs, include_directories('src/fuzz')],
2893 link_with : link_with,
2894 dependencies : dependencies,
2895 c_args : defs,
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002896 link_args: link_args,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002897 install : false)
2898endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002899endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002900
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01002901run_target('fuzzers',
2902 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002903 command : ['true'])
2904
2905############################################################
2906
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002907make_directive_index_py = find_program('tools/make-directive-index.py')
2908make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002909xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002910hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002911
2912subdir('units')
2913subdir('sysctl.d')
2914subdir('sysusers.d')
2915subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002916subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002917subdir('hwdb')
2918subdir('network')
2919subdir('man')
2920subdir('shell-completion/bash')
2921subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002922subdir('docs/sysvinit')
2923subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002924
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002925install_subdir('factory/etc',
2926 install_dir : factorydir)
2927
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002928install_data('xorg/50-systemd-user.sh',
2929 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002930install_data('modprobe.d/systemd.conf',
2931 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002932install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002933 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002934 'NEWS',
2935 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302936 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002937 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002938 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302939 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002940 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002941 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002942 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002943 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2944 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002945
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002946meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2947meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2948
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002949############################################################
2950
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002951meson_check_help = find_program('tools/meson-check-help.sh')
2952
2953foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002954 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002955 if want_tests != 'false'
2956 test('check-help-' + name,
2957 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002958 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002959 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002960endforeach
2961
2962############################################################
2963
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02002964check_directives_sh = find_program('tools/check-directives.sh')
2965
2966if want_tests != 'false'
2967 test('check-directives',
2968 check_directives_sh,
2969 args : project_source_root)
2970endif
2971
2972############################################################
2973
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002974# Enable tests for all supported sanitizers
2975foreach tuple : sanitizers
2976 sanitizer = tuple[0]
2977 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002978
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002979 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002980 prev = ''
2981 foreach p : fuzz_regression_tests
2982 b = p.split('/')[-2]
2983 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002984
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002985 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002986
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002987 if name != prev
2988 if want_tests == 'false'
2989 message('Not compiling @0@ because tests is set to false'.format(name))
2990 elif slow_tests
2991 exe = custom_target(
2992 name,
2993 output : name,
2994 depends : build,
2995 command : [env, 'ln', '-fs',
2996 join_paths(build.full_path(), b),
2997 '@OUTPUT@'],
2998 build_by_default : true)
2999 else
3000 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3001 endif
3002 endif
3003 prev = name
3004
3005 if want_tests != 'false' and slow_tests
3006 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3007 env,
3008 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003009 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003010 endif
3011 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003012 endif
3013endforeach
3014
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003015
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003016############################################################
3017
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003018if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003019 all_files = run_command(
3020 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003021 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003022 'ls-files',
3023 ':/*.[ch]'])
3024 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003025
userwithuide85a6902017-08-09 13:41:44 +00003026 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003027 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003028 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003029 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003030 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003031 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003032 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003033endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003034
3035if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003036 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003037 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003038 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003039 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003040endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003041
3042if git.found()
3043 git_head = run_command(
3044 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003045 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003046 'rev-parse', 'HEAD']).stdout().strip()
3047 git_head_short = run_command(
3048 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003049 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003050 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3051
3052 run_target(
3053 'git-snapshot',
3054 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003055 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003056 git_head_short),
3057 '--prefix', 'systemd-@0@/'.format(git_head),
3058 'HEAD'])
3059endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003060
3061############################################################
3062
Lennart Poettering51b13862017-12-20 12:51:14 +01003063meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3064run_target(
3065 'check-api-docs',
3066 depends : [man, libsystemd, libudev],
3067 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3068
3069############################################################
3070
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003071status = [
3072 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3073
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003074 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003075 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003076 'prefix directory: @0@'.format(prefixdir),
3077 'rootprefix directory: @0@'.format(rootprefixdir),
3078 'sysconf directory: @0@'.format(sysconfdir),
3079 'include directory: @0@'.format(includedir),
3080 'lib directory: @0@'.format(libdir),
3081 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003082 'SysV init scripts: @0@'.format(sysvinit_path),
3083 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003084 'PAM modules directory: @0@'.format(pamlibdir),
3085 'PAM configuration directory: @0@'.format(pamconfdir),
3086 'RPM macros directory: @0@'.format(rpmmacrosdir),
3087 'modprobe.d directory: @0@'.format(modprobedir),
3088 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3089 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3090 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3091 'bash completions directory: @0@'.format(bashcompletiondir),
3092 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003093 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003094 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3095 get_option('debug-tty')),
3096 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003097 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003098 'maximum system UID: @0@'.format(system_uid_max),
3099 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003100 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3101 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3102 'minimum container UID base: @0@'.format(container_uid_base_min),
3103 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003104 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003105 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003106 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003107 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003108 'nobody user name: @0@'.format(nobody_user),
3109 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003110 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003111 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003112
3113 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003114 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003115 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003116 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003117 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
3118 'default locale: @0@'.format(default_locale)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003119
3120alt_dns_servers = '\n '.join(dns_servers.split(' '))
3121alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3122status += [
3123 'default DNS servers: @0@'.format(alt_dns_servers),
3124 'default NTP servers: @0@'.format(alt_ntp_servers)]
3125
3126alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3127 '@@0@'.format(time_epoch)).stdout().strip()
3128status += [
3129 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3130
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003131status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003132 'static libsystemd: @0@'.format(static_libsystemd),
3133 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003134
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003135# TODO:
3136# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3137# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3138# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3139
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003140if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003141 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003142
3143 if have_gnu_efi
3144 status += [
3145 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003146 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003147 'EFI lib directory: @0@'.format(efi_libdir),
3148 'EFI lds directory: @0@'.format(efi_ldsdir),
3149 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003150 endif
3151endif
3152
3153found = []
3154missing = []
3155
3156foreach tuple : [
3157 ['libcryptsetup'],
3158 ['PAM'],
3159 ['AUDIT'],
3160 ['IMA'],
3161 ['AppArmor'],
3162 ['SELinux'],
3163 ['SECCOMP'],
3164 ['SMACK'],
3165 ['zlib'],
3166 ['xz'],
3167 ['lz4'],
3168 ['bzip2'],
3169 ['ACL'],
3170 ['gcrypt'],
3171 ['qrencode'],
3172 ['microhttpd'],
3173 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003174 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003175 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003176 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003177 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003178 ['libidn'],
3179 ['libiptc'],
3180 ['elfutils'],
3181 ['binfmt'],
3182 ['vconsole'],
3183 ['quotacheck'],
3184 ['tmpfiles'],
3185 ['environment.d'],
3186 ['sysusers'],
3187 ['firstboot'],
3188 ['randomseed'],
3189 ['backlight'],
3190 ['rfkill'],
3191 ['logind'],
3192 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003193 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003194 ['importd'],
3195 ['hostnamed'],
3196 ['timedated'],
3197 ['timesyncd'],
3198 ['localed'],
3199 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003200 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003201 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3202 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003203 ['coredump'],
Eric DeVolder9b4abc62019-05-16 08:59:01 -05003204 ['pstore'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003205 ['polkit'],
3206 ['legacy pkla', install_polkit_pkla],
3207 ['efi'],
3208 ['gnu-efi', have_gnu_efi],
3209 ['kmod'],
3210 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003211 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003212 ['blkid'],
3213 ['dbus'],
3214 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003215 ['nss-myhostname'],
3216 ['nss-mymachines'],
3217 ['nss-resolve'],
3218 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003219 ['hwdb'],
3220 ['tpm'],
3221 ['man pages', want_man],
3222 ['html pages', want_html],
3223 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003224 ['SysV compat'],
3225 ['utmp'],
3226 ['ldconfig'],
3227 ['hibernate'],
3228 ['adm group', get_option('adm-group')],
3229 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003230 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003231 ['debug hashmap'],
3232 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003233 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003234 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003235 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003236 ['link-udev-shared', get_option('link-udev-shared')],
3237 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003238]
3239
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003240 if tuple.length() >= 2
3241 cond = tuple[1]
3242 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003243 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3244 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003245 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003246 endif
3247 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003248 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003249 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003250 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003251 endif
3252endforeach
3253
3254status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003255 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003256 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003257 '',
3258 'disabled features: @0@'.format(', '.join(missing)),
3259 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003260message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003261
3262if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003263 warning('\n' +
3264 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3265 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3266 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003267endif