blob: 403705a6b15e5b4677cb0311df1d1f1c5aca3935 [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',
Norbert Lange68e70ac2019-09-19 17:49:20 +0200385 '-fstack-protector',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900386]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400387
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900388if cc.get_id() == 'clang'
389 possible_cc_flags += [
390 '-Wno-typedef-redefinition',
391 '-Wno-gnu-variable-sized-type-not-at-end',
392 ]
393endif
394
395if get_option('buildtype') != 'debug'
396 possible_cc_flags += [
397 '-ffunction-sections',
398 '-fdata-sections',
399 ]
400
401 possible_link_flags += '-Wl,--gc-sections'
402endif
403
Zbigniew Jędrzejewski-Szmeka73f6212019-03-28 09:44:02 +0100404if get_option('b_ndebug') == 'true'
405 # With asserts disabled with get a bunch of warnings about variables which
406 # are used only in the asserts. This is not useful at all, so let's just silence
407 # those warnings.
408 possible_cc_flags += [
409 '-Wno-unused-variable',
410 '-Wno-unused-but-set-variable',
411 ]
412endif
413
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900414add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900415add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900416
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800417if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400418 #include <time.h>
419 #include <inttypes.h>
420 typedef uint64_t usec_t;
421 usec_t now(clockid_t clock);
422 int main(void) {
423 struct timespec now;
424 return 0;
425 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100426''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400427 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400428endif
429
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200430cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400431
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200432has_wstringop_truncation = cc.has_argument('-Wstringop-truncation')
433
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400434#####################################################################
435# compilation result tests
436
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400437conf.set('_GNU_SOURCE', true)
438conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200439conf.set10('HAVE_WSTRINGOP_TRUNCATION', has_wstringop_truncation)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400440
441conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
442conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
443conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
444conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
445conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
446conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
447conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
448
449decl_headers = '''
450#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100451#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400452'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400453
454foreach decl : ['char16_t',
455 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100456 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400457 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400458
459 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200460 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
461
462 if decl == 'struct statx'
463 if have
464 want_linux_stat_h = false
465 else
466 have = cc.sizeof(decl,
467 prefix : decl_headers + '#include <linux/stat.h>',
468 args : '-D_GNU_SOURCE') > 0
469 want_linux_stat_h = have
470 endif
471 endif
472
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200473 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400474endforeach
475
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200476conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700477
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400478foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200479 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400480endforeach
481
482foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100483 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100484 ['gettid', '''#include <sys/types.h>
485 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100486 ['pivot_root', '''#include <stdlib.h>
487 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100488 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400489 #include <sys/stat.h>
490 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100491 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100492 ['renameat2', '''#include <stdio.h>
493 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400494 ['kcmp', '''#include <linux/kcmp.h>'''],
495 ['keyctl', '''#include <sys/types.h>
496 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100497 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400498 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200499 ['bpf', '''#include <sys/syscall.h>
500 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100501 ['statx', '''#include <sys/types.h>
502 #include <sys/stat.h>
503 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100504 ['explicit_bzero' , '''#include <string.h>'''],
505 ['reallocarray', '''#include <malloc.h>'''],
Michal Sekletarb070c7c2019-03-12 18:58:26 +0100506 ['set_mempolicy', '''#include <stdlib.h>
507 #include <unistd.h>'''],
508 ['get_mempolicy', '''#include <stdlib.h>
509 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400510]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400511
Lennart Poettering85db59b2017-12-25 12:01:14 +0100512 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200513 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400514endforeach
515
Lennart Poettering85db59b2017-12-25 12:01:14 +0100516if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200517 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200518 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400519else
520 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200521 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200522 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400523endif
524
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400525#####################################################################
526
Davide Cavalca1485aac2019-02-27 11:19:07 -0500527vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
528 project_source_root,
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100529 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100530 meson.project_version()]
531
Louis Taylord1084aa2019-01-21 21:45:36 +0000532version_h = vcs_tag(
533 input : 'src/version/version.h.in',
534 output : 'version.h',
535 command: vcs_tagger)
536
537versiondep = declare_dependency(sources: version_h)
538
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400539sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400540awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400541m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400542stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400543git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100544env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100545perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400546
Davide Cavalca1485aac2019-02-27 11:19:07 -0500547meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400548mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400549test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
550splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400551
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400552# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
553# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500554progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400555 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400556 ['kmod', '/usr/bin/kmod' ],
557 ['kexec', '/usr/sbin/kexec' ],
558 ['sulogin', '/usr/sbin/sulogin' ],
559 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
560 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
561 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
562 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
Michael Biebl6db90462019-07-18 01:24:00 +0200563 ['nologin', '/usr/sbin/nologin', ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400564 ]
565foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400566 path = get_option(prog[0] + '-path')
567 if path != ''
568 message('Using @1@ for @0@'.format(prog[0], path))
569 else
570 exe = find_program(prog[0],
571 '/usr/sbin/' + prog[0],
572 '/sbin/' + prog[0],
573 required: false)
574 path = exe.found() ? exe.path() : prog[1]
575 endif
576 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
577 conf.set_quoted(name, path)
578 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400579endforeach
580
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500581conf.set_quoted('TELINIT', get_option('telinit-path'))
582
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400583if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100584 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400585endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400586
587############################################################
588
589gperf = find_program('gperf')
590
591gperf_test_format = '''
592#include <string.h>
593const char * in_word_set(const char *, @0@);
594@1@
595'''
596gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
597gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
598gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
599if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400600 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400601else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400602 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
603 if cc.compiles(gperf_test)
604 gperf_len_type = 'unsigned'
605 else
606 error('unable to determine gperf len type')
607 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400608endif
609message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400610conf.set('GPERF_LEN_TYPE', gperf_len_type,
611 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400612
613############################################################
614
615if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400616 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400617endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100618foreach header : ['crypt.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400619 'linux/memfd.h',
620 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200621 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400622 'valgrind/memcheck.h',
623 'valgrind/valgrind.h',
624 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400625
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200626 conf.set10('HAVE_' + header.underscorify().to_upper(),
627 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400628endforeach
629
630############################################################
631
632conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400633conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
634gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400635
636default_hierarchy = get_option('default-hierarchy')
637conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
638 description : 'default cgroup hierarchy as string')
639if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400640 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400641elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400642 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400643else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400644 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400645endif
646
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100647default_net_naming_scheme = get_option('default-net-naming-scheme')
648conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
649
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400650time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900651if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400652 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900653 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400654endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400655conf.set('TIME_EPOCH', time_epoch)
656
657system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900658if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400659 system_uid_max = run_command(
660 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800661 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
662 '/etc/login.defs').stdout().strip()
663 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900664 system_uid_max = 999
665 else
666 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800667 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400668endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400669conf.set('SYSTEM_UID_MAX', system_uid_max)
670substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400671
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400672system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900673if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400674 system_gid_max = run_command(
675 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800676 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
677 '/etc/login.defs').stdout().strip()
678 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900679 system_gid_max = 999
680 else
681 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800682 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400683endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400684conf.set('SYSTEM_GID_MAX', system_gid_max)
685substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400686
Yu Watanabeac093402018-05-10 16:04:16 +0900687dynamic_uid_min = get_option('dynamic-uid-min')
688dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100689conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
690conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
691substs.set('dynamicuidmin', dynamic_uid_min)
692substs.set('dynamicuidmax', dynamic_uid_max)
693
Yu Watanabeac093402018-05-10 16:04:16 +0900694container_uid_base_min = get_option('container-uid-base-min')
695container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100696conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
697conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
698substs.set('containeruidbasemin', container_uid_base_min)
699substs.set('containeruidbasemax', container_uid_base_max)
700
Lennart Poetteringafde4572017-12-05 11:00:24 +0100701nobody_user = get_option('nobody-user')
702nobody_group = get_option('nobody-group')
703
Chen Qi2484bff2018-07-23 14:53:09 +0800704if not meson.is_cross_build()
705 getent_result = run_command('getent', 'passwd', '65534')
706 if getent_result.returncode() == 0
707 name = getent_result.stdout().split(':')[0]
708 if name != nobody_user
709 warning('\n' +
710 '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) +
711 'Your build will result in an user table setup that is incompatible with the local system.')
712 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100713 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800714 id_result = run_command('id', '-u', nobody_user)
715 if id_result.returncode() == 0
716 id = id_result.stdout().to_int()
717 if id != 65534
718 warning('\n' +
719 '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) +
720 'Your build will result in an user table setup that is incompatible with the local system.')
721 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100722 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100723
Chen Qi2484bff2018-07-23 14:53:09 +0800724 getent_result = run_command('getent', 'group', '65534')
725 if getent_result.returncode() == 0
726 name = getent_result.stdout().split(':')[0]
727 if name != nobody_group
728 warning('\n' +
729 '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) +
730 'Your build will result in an group table setup that is incompatible with the local system.')
731 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100732 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800733 id_result = run_command('id', '-g', nobody_group)
734 if id_result.returncode() == 0
735 id = id_result.stdout().to_int()
736 if id != 65534
737 warning('\n' +
738 '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) +
739 'Your build will result in an group table setup that is incompatible with the local system.')
740 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100741 endif
742endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900743if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900744 warning('\n' +
745 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
746 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900747endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100748
749conf.set_quoted('NOBODY_USER_NAME', nobody_user)
750conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900751substs.set('NOBODY_USER_NAME', nobody_user)
752substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100753
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400754tty_gid = get_option('tty-gid')
755conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400756substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400757
Ikey Doherty84786b82017-12-03 12:28:23 +0000758# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900759users_gid = get_option('users-gid')
760substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000761
Yu Watanabe348b4432018-05-07 18:17:35 +0900762conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
763conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400764
Michael Bieblace5e312018-07-13 23:36:13 +0200765dev_kvm_mode = get_option('dev-kvm-mode')
766substs.set('DEV_KVM_MODE', dev_kvm_mode)
767conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100768group_render_mode = get_option('group-render-mode')
769substs.set('GROUP_RENDER_MODE', group_render_mode)
770conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400771
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400772kill_user_processes = get_option('default-kill-user-processes')
773conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100774conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400775substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400776
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400777dns_servers = get_option('dns-servers')
778conf.set_quoted('DNS_SERVERS', dns_servers)
779substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400780
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400781ntp_servers = get_option('ntp-servers')
782conf.set_quoted('NTP_SERVERS', ntp_servers)
783substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400784
Dave Reisner8ca9e922018-12-28 07:38:36 -0500785default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900786if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800787 if not meson.is_cross_build()
788 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
789 default_locale = run_command(choose_default_locale_sh).stdout().strip()
790 else
791 default_locale = 'C.UTF-8'
792 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900793endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500794conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
795
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400796conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
797
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200798service_watchdog = get_option('service-watchdog')
Anita Zhang7bc9ea52019-10-25 15:46:21 -0700799watchdog_value = service_watchdog == '' ? '' : 'WatchdogSec=' + service_watchdog
800substs.set('SERVICE_WATCHDOG', watchdog_value)
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200801
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400802substs.set('SUSHELL', get_option('debug-shell'))
803substs.set('DEBUGTTY', get_option('debug-tty'))
Jan Synacek93912e82019-04-25 12:19:16 +0200804conf.set_quoted('DEBUGTTY', get_option('debug-tty'))
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400805
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200806enable_debug_hashmap = false
807enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900808enable_debug_siphash = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200809foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900810 if name == 'hashmap'
811 enable_debug_hashmap = true
812 elif name == 'mmap-cache'
813 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900814 elif name == 'siphash'
815 enable_debug_siphash = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900816 else
817 message('unknown debug option "@0@", ignoring'.format(name))
818 endif
819endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200820conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
821conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900822conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400823
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200824conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200825conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200826
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100827default_user_path = get_option('user-path')
828if default_user_path != ''
829 conf.set_quoted('DEFAULT_USER_PATH', default_user_path)
830endif
831
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832#####################################################################
833
834threads = dependency('threads')
835librt = cc.find_library('rt')
836libm = cc.find_library('m')
837libdl = cc.find_library('dl')
838libcrypt = cc.find_library('crypt')
839
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400840libcap = dependency('libcap', required : false)
841if not libcap.found()
842 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
843 libcap = cc.find_library('cap')
844endif
845
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400846libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100847 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400848
849want_seccomp = get_option('seccomp')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000850if want_seccomp != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400851 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400852 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400853 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200854 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400855else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200856 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400857 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400858endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200859conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400860
861want_selinux = get_option('selinux')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000862if want_selinux != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400863 libselinux = dependency('libselinux',
864 version : '>= 2.1.9',
865 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200866 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400867else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200868 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400869 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400870endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200871conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400872
873want_apparmor = get_option('apparmor')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000874if want_apparmor != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400875 libapparmor = dependency('libapparmor',
876 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200877 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400878else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200879 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400880 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400881endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200882conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400883
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400884smack_run_label = get_option('smack-run-label')
885if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400886 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400887endif
888
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400889want_polkit = get_option('polkit')
890install_polkit = false
891install_polkit_pkla = false
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000892if want_polkit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400893 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400894
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400895 libpolkit = dependency('polkit-gobject-1',
896 required : false)
897 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
898 message('Old polkit detected, will install pkla files')
899 install_polkit_pkla = true
900 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400901endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200902conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400903
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400904want_acl = get_option('acl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000905if want_acl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400906 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200907 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400908else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200909 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400910 libacl = []
911endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200912conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400913
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400914want_audit = get_option('audit')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000915if want_audit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400916 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200917 have = libaudit.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 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400921endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400923
924want_blkid = get_option('blkid')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000925if want_blkid != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400926 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200927 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400928else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200929 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400930 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400931endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200932conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400933
934want_kmod = get_option('kmod')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000935if want_kmod != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400936 libkmod = dependency('libkmod',
937 version : '>= 15',
938 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200939 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400940else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200941 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400942 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400943endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200944conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400945
946want_pam = get_option('pam')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000947if want_pam != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400948 libpam = cc.find_library('pam', required : want_pam == 'true')
949 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200950 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400951else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200952 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400953 libpam = []
954 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400955endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200956conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400957
958want_microhttpd = get_option('microhttpd')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000959if want_microhttpd != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400960 libmicrohttpd = dependency('libmicrohttpd',
961 version : '>= 0.9.33',
962 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200963 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400964else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200965 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400966 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400967endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200968conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400969
970want_libcryptsetup = get_option('libcryptsetup')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000971if want_libcryptsetup != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400972 libcryptsetup = dependency('libcryptsetup',
Jay Strictd90874b2019-09-26 15:54:29 +0200973 version : '>= 2.0.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400974 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200975 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400976else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200977 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400978 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400979endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200980conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400981
982want_libcurl = get_option('libcurl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000983if want_libcurl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400984 libcurl = dependency('libcurl',
985 version : '>= 7.32.0',
986 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200987 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400988else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200989 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400990 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400991endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200992conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400993
994want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400995want_libidn2 = get_option('libidn2')
996if want_libidn == 'true' and want_libidn2 == 'true'
997 error('libidn and libidn2 cannot be requested simultaneously')
998endif
999
Yu Watanabe1b931392019-06-29 03:13:30 +09001000if want_libidn2 != 'false' and want_libidn != 'true' and not skip_deps
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001001 libidn = dependency('libidn2',
1002 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001003 have = libidn.found()
1004else
1005 have = false
Yu Watanabe1b931392019-06-29 03:13:30 +09001006 libidn = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001007endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001008conf.set10('HAVE_LIBIDN2', have)
Yu Watanabe1b931392019-06-29 03:13:30 +09001009if not have and want_libidn != 'false' and not skip_deps
1010 # libidn is used for both libidn and libidn2 objects
1011 libidn = dependency('libidn',
1012 required : want_libidn == 'true')
1013 have = libidn.found()
1014else
1015 have = false
1016endif
1017conf.set10('HAVE_LIBIDN', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001018
1019want_libiptc = get_option('libiptc')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001020if want_libiptc != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001021 libiptc = dependency('libiptc',
1022 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001023 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001024else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001025 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001026 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001027endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001028conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001029
1030want_qrencode = get_option('qrencode')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001031if want_qrencode != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001032 libqrencode = dependency('libqrencode',
1033 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001034 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001035else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001036 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001037 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001038endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001039conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001040
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001041want_gcrypt = get_option('gcrypt')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001042if want_gcrypt != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001043 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1044 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001045 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001046else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001047 have = false
1048endif
1049if not have
1050 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001051 libgcrypt = []
1052 libgpg_error = []
1053endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001054conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001055
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001056want_gnutls = get_option('gnutls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001057if want_gnutls != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001058 libgnutls = dependency('gnutls',
1059 version : '>= 3.1.4',
1060 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001061 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001062else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001063 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001064 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001065endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001066conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001067
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001068want_openssl = get_option('openssl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001069if want_openssl != 'false' and not skip_deps
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001070 libopenssl = dependency('openssl',
1071 version : '>= 1.1.0',
1072 required : want_openssl == 'true')
1073 have = libopenssl.found()
1074else
1075 have = false
1076 libopenssl = []
1077endif
1078conf.set10('HAVE_OPENSSL', have)
1079
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001080want_elfutils = get_option('elfutils')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001081if want_elfutils != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001082 libdw = dependency('libdw',
1083 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001084 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001085else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001086 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001087 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001088endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001089conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001090
1091want_zlib = get_option('zlib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001092if want_zlib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001093 libz = dependency('zlib',
1094 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001095 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001096else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001097 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001098 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001099endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001100conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001101
1102want_bzip2 = get_option('bzip2')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001103if want_bzip2 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001104 libbzip2 = cc.find_library('bz2',
1105 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001106 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001107else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001108 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001109 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001110endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001111conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001112
1113want_xz = get_option('xz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001114if want_xz != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001115 libxz = dependency('liblzma',
1116 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001117 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001118else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001119 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001120 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001121endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001122conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001123
1124want_lz4 = get_option('lz4')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001125if want_lz4 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001126 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001127 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001128 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001129 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001130else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001131 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001132 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001133endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001134conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001135
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001136want_xkbcommon = get_option('xkbcommon')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001137if want_xkbcommon != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001138 libxkbcommon = dependency('xkbcommon',
1139 version : '>= 0.3.0',
1140 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001141 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001142else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001143 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001144 libxkbcommon = []
1145endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001146conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001147
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001148want_pcre2 = get_option('pcre2')
1149if want_pcre2 != 'false'
1150 libpcre2 = dependency('libpcre2-8',
1151 required : want_pcre2 == 'true')
1152 have = libpcre2.found()
1153else
1154 have = false
1155 libpcre2 = []
1156endif
1157conf.set10('HAVE_PCRE2', have)
1158
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001159want_glib = get_option('glib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001160if want_glib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001161 libglib = dependency('glib-2.0',
1162 version : '>= 2.22.0',
1163 required : want_glib == 'true')
1164 libgobject = dependency('gobject-2.0',
1165 version : '>= 2.22.0',
1166 required : want_glib == 'true')
1167 libgio = dependency('gio-2.0',
1168 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001169 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001170else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001171 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001172 libglib = []
1173 libgobject = []
1174 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001175endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001176conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001177
1178want_dbus = get_option('dbus')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001179if want_dbus != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001180 libdbus = dependency('dbus-1',
1181 version : '>= 1.3.2',
1182 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001183 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001184else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001185 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001186 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001187endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001188conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001189
Yu Watanabe42303dc2017-06-18 05:22:32 +09001190default_dnssec = get_option('default-dnssec')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001191if skip_deps
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001192 default_dnssec = 'no'
1193endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001194if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001195 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1196 default_dnssec = 'no'
1197endif
1198conf.set('DEFAULT_DNSSEC_MODE',
1199 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1200substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1201
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001202dns_over_tls = get_option('dns-over-tls')
1203if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001204 if dns_over_tls == 'openssl'
1205 have_gnutls = false
1206 else
Iwan Timmer38e053c2019-10-29 20:26:05 +01001207 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.6.0'))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001208 if dns_over_tls == 'gnutls' and not have_gnutls
1209 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1210 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001211 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001212 if dns_over_tls == 'gnutls' or have_gnutls
1213 have_openssl = false
1214 else
1215 have_openssl = conf.get('HAVE_OPENSSL') == 1
1216 if dns_over_tls != 'auto' and not have_openssl
1217 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
Yu Watanabeb349bc52019-06-17 10:22:54 +09001218 error('DNS-over-TLS support was requested@0@, but dependencies are not available'.format(str))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001219 endif
1220 endif
1221 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001222else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001223 have = false
1224 have_gnutls = false
1225 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001226endif
1227conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001228conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1229conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001230
Iwan Timmerc9299be2018-06-13 20:26:24 +02001231default_dns_over_tls = get_option('default-dns-over-tls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001232if skip_deps
Iwan Timmerc9299be2018-06-13 20:26:24 +02001233 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001234endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001235if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
Iwan Timmer4310bfc2019-02-18 20:41:46 +01001236 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 +02001237 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001238endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001239conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1240 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1241substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001242
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001243want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001244if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001245 have = (conf.get('HAVE_LIBCURL') == 1 and
1246 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001247 conf.get('HAVE_XZ') == 1 and
1248 conf.get('HAVE_GCRYPT') == 1)
1249 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001250 error('importd support was requested, but dependencies are not available')
1251 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001252else
1253 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001254endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001255conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001256
1257want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001258if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001259 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1260 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001261 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1262 # it's possible to build one without the other. Complain only if
Ben Boeckel5238e952019-04-26 20:22:40 -04001263 # support was explicitly requested. The auxiliary files like sysusers
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001264 # config should be installed when any of the programs are built.
1265 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1266 error('remote support was requested, but dependencies are not available')
1267 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001268 have = have_deps[0] or have_deps[1]
1269else
1270 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001271endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001272conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001273
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001274foreach term : ['utmp',
1275 'hibernate',
1276 'environment-d',
1277 'binfmt',
1278 'coredump',
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001279 'pstore',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001280 'resolve',
1281 'logind',
1282 'hostnamed',
1283 'localed',
1284 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001285 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001286 'networkd',
1287 'timedated',
1288 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001289 'firstboot',
1290 'randomseed',
1291 'backlight',
1292 'vconsole',
1293 'quotacheck',
1294 'sysusers',
1295 'tmpfiles',
1296 'hwdb',
1297 'rfkill',
1298 'ldconfig',
1299 'efi',
1300 'tpm',
1301 'ima',
1302 'smack',
1303 'gshadow',
1304 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001305 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001306 'nss-systemd']
1307 have = get_option(term)
1308 name = 'ENABLE_' + term.underscorify().to_upper()
1309 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001310endforeach
1311
Yu Watanabe08540a92018-07-18 09:25:57 +09001312foreach tuple : [['nss-mymachines', 'machined'],
1313 ['nss-resolve', 'resolve']]
1314 want = get_option(tuple[0])
1315 if want != 'false'
1316 have = get_option(tuple[1])
1317 if want == 'true' and not have
1318 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1319 endif
1320 else
1321 have = false
1322 endif
1323 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1324 conf.set10(name, have)
1325endforeach
1326
1327enable_nss = false
1328foreach term : ['ENABLE_NSS_MYHOSTNAME',
1329 'ENABLE_NSS_MYMACHINES',
1330 'ENABLE_NSS_RESOLVE',
1331 'ENABLE_NSS_SYSTEMD']
1332 if conf.get(term) == 1
1333 enable_nss = true
1334 endif
1335endforeach
1336conf.set10('ENABLE_NSS', enable_nss)
1337
Yu Watanabe348b4432018-05-07 18:17:35 +09001338conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001339
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001340tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001341fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001342
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001343conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001344
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001345#####################################################################
1346
1347if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001348 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001349
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001350 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001351 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001352 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001353 elif efi_arch == 'x86_64'
1354 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001355 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001356 elif efi_arch == 'arm'
1357 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001358 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001359 elif efi_arch == 'aarch64'
1360 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001361 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001362 else
1363 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001364 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001365 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001366
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001367 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001368 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001369
Yu Watanabeac093402018-05-10 16:04:16 +09001370 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001371else
1372 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001373endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001374conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001375
1376#####################################################################
1377
1378config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001379 output : 'config.h',
1380 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001381
Yu Watanabe348b4432018-05-07 18:17:35 +09001382meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1383
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001384includes = include_directories('src/basic',
Zbigniew Jędrzejewski-Szmek91b08bb2019-07-02 13:01:23 +02001385 'src/boot',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001386 'src/shared',
1387 'src/systemd',
1388 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001389 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001390 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001391 'src/resolve',
1392 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001393 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001394 'src/login',
1395 'src/udev',
1396 'src/libudev',
1397 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001398 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001399 'src/libsystemd/sd-bus',
1400 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001401 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001402 'src/libsystemd/sd-hwdb',
1403 'src/libsystemd/sd-id128',
1404 'src/libsystemd/sd-netlink',
1405 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001406 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001407 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001408 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001409
1410add_project_arguments('-include', 'config.h', language : 'c')
1411
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001412generate_gperfs = find_program('tools/generate-gperfs.py')
1413
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001414subdir('po')
1415subdir('catalog')
1416subdir('src/systemd')
1417subdir('src/basic')
1418subdir('src/libsystemd')
1419subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001420subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001421subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001422
1423libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001424 'journal-core',
1425 libjournal_core_sources,
1426 journald_gperf_c,
1427 include_directories : includes,
1428 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001429
Davide Cavalca1485aac2019-02-27 11:19:07 -05001430libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001431libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001432 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001433 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001434 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001435 include_directories : includes,
1436 link_args : ['-shared',
1437 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001438 link_with : [libbasic,
1439 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001440 link_whole : [libsystemd_static,
1441 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001442 dependencies : [threads,
1443 librt,
1444 libxz,
1445 liblz4],
1446 link_depends : libsystemd_sym,
1447 install : true,
1448 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001449
Davide Cavalca70848ec2018-04-09 02:43:35 -07001450static_libsystemd = get_option('static-libsystemd')
1451static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1452
1453install_libsystemd_static = static_library(
1454 'systemd',
1455 libsystemd_sources,
1456 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001457 basic_sources,
1458 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001459 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001460 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001461 build_by_default : static_libsystemd != 'false',
1462 install : static_libsystemd != 'false',
1463 install_dir : rootlibdir,
1464 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1465 dependencies : [threads,
1466 librt,
1467 libxz,
1468 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001469 libcap,
1470 libblkid,
1471 libmount,
1472 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001473 libgcrypt],
1474 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1475
Mario Limonciellob61d7772019-09-09 22:49:35 +01001476#Generate autosuspend rules
1477make_autosuspend_rules_py = find_program('tools/make-autosuspend-rules.py')
1478
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001479############################################################
1480
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001481# binaries that have --help and are intended for use by humans,
1482# usually, but not always, installed in /bin.
1483public_programs = []
1484
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001485subdir('src/libudev')
1486subdir('src/shared')
1487subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001488subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001489subdir('src/udev')
1490subdir('src/network')
1491
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001492subdir('src/analyze')
1493subdir('src/journal-remote')
1494subdir('src/coredump')
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001495subdir('src/pstore')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001496subdir('src/hostname')
1497subdir('src/import')
1498subdir('src/kernel-install')
1499subdir('src/locale')
1500subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001501subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001502subdir('src/nspawn')
1503subdir('src/resolve')
1504subdir('src/timedate')
1505subdir('src/timesync')
1506subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001507subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001508
1509subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001510subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmekef2ad302019-10-08 16:43:18 +02001511subdir('rules.d')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001512subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001513
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001514############################################################
1515
1516# only static linking apart from libdl, to make sure that the
1517# module is linked to all libraries that it uses.
1518test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001519 'test-dlopen',
1520 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001521 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001522 include_directories : includes,
1523 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001524 dependencies : [libdl],
1525 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001526
Yu Watanabe08540a92018-07-18 09:25:57 +09001527foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001528 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001529 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1530 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001531
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001532 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001533 if condition
1534 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001535
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001536 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001537 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001538
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001539 nss = shared_library(
1540 'nss_' + module,
1541 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001542 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001543 version : '2',
1544 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001545 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1546 link_args : ['-Wl,-z,nodelete',
1547 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001548 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001549 link_with : [libsystemd_static,
Lennart Poettering733cbd02019-07-23 14:22:06 +02001550 libshared_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001551 libbasic],
1552 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001553 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001554 link_depends : sym,
1555 install : true,
1556 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001557
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001558 # We cannot use shared_module because it does not support version suffix.
1559 # Unfortunately shared_library insists on creating the symlink…
1560 meson.add_install_script('sh', '-c',
1561 'rm $DESTDIR@0@/libnss_@1@.so'
1562 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001563
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001564 if want_tests != 'false'
1565 test('dlopen-nss_' + module,
1566 test_dlopen,
1567 # path to dlopen must include a slash
1568 args : nss.full_path())
1569 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001570 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001571endforeach
1572
1573############################################################
1574
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001575executable('systemd',
1576 systemd_sources,
1577 include_directories : includes,
1578 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001579 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001580 dependencies : [versiondep,
1581 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001582 librt,
1583 libseccomp,
1584 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001585 libmount,
1586 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001587 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001588 install : true,
1589 install_dir : rootlibexecdir)
1590
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001591meson.add_install_script(meson_make_symlink,
1592 join_paths(rootlibexecdir, 'systemd'),
1593 join_paths(rootsbindir, 'init'))
1594
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001595exe = executable('systemd-analyze',
1596 systemd_analyze_sources,
1597 include_directories : includes,
1598 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001599 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001600 dependencies : [versiondep,
1601 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001602 librt,
1603 libseccomp,
1604 libselinux,
1605 libmount,
1606 libblkid],
1607 install_rpath : rootlibexecdir,
1608 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001609public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001610
1611executable('systemd-journald',
1612 systemd_journald_sources,
1613 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001614 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001615 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001616 dependencies : [threads,
1617 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001618 liblz4,
1619 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001620 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001621 install : true,
1622 install_dir : rootlibexecdir)
1623
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001624exe = executable('systemd-cat',
1625 systemd_cat_sources,
1626 include_directories : includes,
1627 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001628 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001629 dependencies : [threads],
1630 install_rpath : rootlibexecdir,
1631 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001632public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001633
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001634exe = executable('journalctl',
1635 journalctl_sources,
1636 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001637 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001638 dependencies : [threads,
1639 libqrencode,
1640 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001641 liblz4,
1642 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001643 install_rpath : rootlibexecdir,
1644 install : true,
1645 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001646public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001647
1648executable('systemd-getty-generator',
1649 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001650 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001651 link_with : [libshared],
1652 install_rpath : rootlibexecdir,
1653 install : true,
1654 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001655
1656executable('systemd-debug-generator',
1657 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001658 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001659 link_with : [libshared],
1660 install_rpath : rootlibexecdir,
1661 install : true,
1662 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001663
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001664executable('systemd-run-generator',
1665 'src/run-generator/run-generator.c',
1666 include_directories : includes,
1667 link_with : [libshared],
1668 install_rpath : rootlibexecdir,
1669 install : true,
1670 install_dir : systemgeneratordir)
1671
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001672executable('systemd-fstab-generator',
1673 'src/fstab-generator/fstab-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001674 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01001675 link_with : [libcore_shared,
1676 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001677 install_rpath : rootlibexecdir,
1678 install : true,
1679 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001680
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001681if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001682 executable('30-systemd-environment-d-generator',
1683 'src/environment-d-generator/environment-d-generator.c',
1684 include_directories : includes,
1685 link_with : [libshared],
1686 install_rpath : rootlibexecdir,
1687 install : true,
1688 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001689
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001690 meson.add_install_script(meson_make_symlink,
1691 join_paths(sysconfdir, 'environment'),
1692 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001693endif
1694
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001695if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001696 executable('systemd-hibernate-resume-generator',
1697 'src/hibernate-resume/hibernate-resume-generator.c',
1698 include_directories : includes,
1699 link_with : [libshared],
1700 install_rpath : rootlibexecdir,
1701 install : true,
1702 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001703
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001704 executable('systemd-hibernate-resume',
1705 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001706 include_directories : includes,
1707 link_with : [libshared],
1708 install_rpath : rootlibexecdir,
1709 install : true,
1710 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001711endif
1712
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001713if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001714 executable('systemd-gpt-auto-generator',
1715 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001716 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001717 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001718 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001719 dependencies : libblkid,
1720 install_rpath : rootlibexecdir,
1721 install : true,
1722 install_dir : systemgeneratordir)
1723
1724 exe = executable('systemd-dissect',
1725 'src/dissect/dissect.c',
1726 include_directories : includes,
1727 link_with : [libshared],
1728 install_rpath : rootlibexecdir,
1729 install : true,
1730 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001731 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001732endif
1733
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001734if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001735 executable('systemd-resolved',
1736 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001737 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001738 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001739 libbasic_gcrypt,
1740 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001741 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001742 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001743 install : true,
1744 install_dir : rootlibexecdir)
1745
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001746 exe = executable('resolvectl',
1747 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001748 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001749 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001750 libbasic_gcrypt,
1751 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001752 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001753 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001754 libm,
1755 libidn],
1756 install_rpath : rootlibexecdir,
1757 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001758 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001759
1760 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001761 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001762 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001763
1764 meson.add_install_script(meson_make_symlink,
1765 join_paths(bindir, 'resolvectl'),
1766 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001767endif
1768
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001769if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001770 executable('systemd-logind',
1771 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001772 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001773 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001774 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001775 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001776 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001777 install_rpath : rootlibexecdir,
1778 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001779 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001780
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001781 exe = executable('loginctl',
1782 loginctl_sources,
1783 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001784 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001785 dependencies : [threads,
1786 liblz4,
1787 libxz],
1788 install_rpath : rootlibexecdir,
1789 install : true,
1790 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001791 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001792
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001793 exe = executable('systemd-inhibit',
1794 'src/login/inhibit.c',
1795 include_directories : includes,
1796 link_with : [libshared],
1797 install_rpath : rootlibexecdir,
1798 install : true,
1799 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001800 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001801
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001802 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001803 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001804 pam_systemd = shared_library(
1805 'pam_systemd',
1806 pam_systemd_c,
1807 name_prefix : '',
1808 include_directories : includes,
1809 link_args : ['-shared',
1810 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001811 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001812 libshared_static],
1813 dependencies : [threads,
1814 libpam,
1815 libpam_misc],
1816 link_depends : pam_systemd_sym,
1817 install : true,
1818 install_dir : pamlibdir)
1819
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001820 if want_tests != 'false'
1821 test('dlopen-pam_systemd',
1822 test_dlopen,
1823 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001824 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001825 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001826 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001827
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001828 executable('systemd-user-runtime-dir',
1829 user_runtime_dir_sources,
1830 include_directories : includes,
1831 link_with : [libshared],
1832 install_rpath : rootlibexecdir,
1833 install : true,
1834 install_dir : rootlibexecdir)
1835endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001836
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001837if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001838 executable('systemd-user-sessions',
1839 'src/user-sessions/user-sessions.c',
1840 include_directories : includes,
1841 link_with : [libshared],
1842 install_rpath : rootlibexecdir,
1843 install : true,
1844 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001845endif
1846
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001847if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001848 exe = executable('bootctl',
1849 'src/boot/bootctl.c',
1850 include_directories : includes,
1851 link_with : [libshared],
1852 dependencies : [libblkid],
1853 install_rpath : rootlibexecdir,
1854 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001855 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001856
1857 executable('systemd-bless-boot',
1858 'src/boot/bless-boot.c',
1859 include_directories : includes,
1860 link_with : [libshared],
1861 dependencies : [libblkid],
1862 install_rpath : rootlibexecdir,
1863 install : true,
1864 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001865
1866 executable('systemd-bless-boot-generator',
1867 'src/boot/bless-boot-generator.c',
1868 include_directories : includes,
1869 link_with : [libshared],
1870 install_rpath : rootlibexecdir,
1871 install : true,
1872 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001873endif
1874
Lennart Poetteringf876f532018-06-25 16:07:33 +02001875executable('systemd-boot-check-no-failures',
1876 'src/boot/boot-check-no-failures.c',
1877 include_directories : includes,
1878 link_with : [libshared],
1879 dependencies : [libblkid],
1880 install_rpath : rootlibexecdir,
1881 install : true,
1882 install_dir : rootlibexecdir)
1883
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001884exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1885 include_directories : includes,
1886 link_with : [libshared],
1887 dependencies : [threads],
1888 install_rpath : rootlibexecdir,
1889 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001890public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001891
Felipe Satelerf3794362018-05-22 15:08:57 -04001892
1893if get_option('link-systemctl-shared')
1894 systemctl_link_with = [libshared]
1895else
1896 systemctl_link_with = [libsystemd_static,
1897 libshared_static,
1898 libjournal_client,
1899 libbasic_gcrypt]
1900endif
1901
Lennart Poettering63a3b3c2019-03-22 20:05:08 +01001902exe = executable('systemctl',
1903 'src/systemctl/systemctl.c',
1904 'src/systemctl/sysv-compat.h',
1905 'src/systemctl/sysv-compat.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001906 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001907 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001908 dependencies : [threads,
1909 libcap,
1910 libselinux,
1911 libxz,
1912 liblz4],
1913 install_rpath : rootlibexecdir,
1914 install : true,
1915 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001916public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001917
Lennart Poettering61d05782018-04-16 21:41:40 +02001918if conf.get('ENABLE_PORTABLED') == 1
1919 executable('systemd-portabled',
1920 systemd_portabled_sources,
1921 include_directories : includes,
1922 link_with : [libshared],
1923 dependencies : [threads],
1924 install_rpath : rootlibexecdir,
1925 install : true,
1926 install_dir : rootlibexecdir)
1927
1928 exe = executable('portablectl', 'src/portable/portablectl.c',
1929 include_directories : includes,
1930 link_with : [libshared],
1931 dependencies : [threads],
1932 install_rpath : rootlibexecdir,
1933 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001934 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001935 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001936endif
1937
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001938foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1939 meson.add_install_script(meson_make_symlink,
1940 join_paths(rootbindir, 'systemctl'),
1941 join_paths(rootsbindir, alias))
1942endforeach
1943
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001944if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001945 executable('systemd-backlight',
1946 'src/backlight/backlight.c',
1947 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001948 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001949 install_rpath : rootlibexecdir,
1950 install : true,
1951 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001952endif
1953
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001954if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001955 executable('systemd-rfkill',
1956 'src/rfkill/rfkill.c',
1957 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001958 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001959 install_rpath : rootlibexecdir,
1960 install : true,
1961 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001962endif
1963
1964executable('systemd-system-update-generator',
1965 'src/system-update-generator/system-update-generator.c',
1966 include_directories : includes,
1967 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001968 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001969 install : true,
1970 install_dir : systemgeneratordir)
1971
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001972if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001973 executable('systemd-cryptsetup',
1974 'src/cryptsetup/cryptsetup.c',
1975 include_directories : includes,
1976 link_with : [libshared],
1977 dependencies : [libcryptsetup],
1978 install_rpath : rootlibexecdir,
1979 install : true,
1980 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001981
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001982 executable('systemd-cryptsetup-generator',
1983 'src/cryptsetup/cryptsetup-generator.c',
1984 include_directories : includes,
1985 link_with : [libshared],
1986 dependencies : [libcryptsetup],
1987 install_rpath : rootlibexecdir,
1988 install : true,
1989 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001990
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001991 executable('systemd-veritysetup',
1992 'src/veritysetup/veritysetup.c',
1993 include_directories : includes,
1994 link_with : [libshared],
1995 dependencies : [libcryptsetup],
1996 install_rpath : rootlibexecdir,
1997 install : true,
1998 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001999
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002000 executable('systemd-veritysetup-generator',
2001 'src/veritysetup/veritysetup-generator.c',
2002 include_directories : includes,
2003 link_with : [libshared],
2004 dependencies : [libcryptsetup],
2005 install_rpath : rootlibexecdir,
2006 install : true,
2007 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002008endif
2009
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002010if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002011 executable('systemd-sysv-generator',
2012 'src/sysv-generator/sysv-generator.c',
2013 include_directories : includes,
2014 link_with : [libshared],
2015 install_rpath : rootlibexecdir,
2016 install : true,
2017 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002018
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002019 executable('systemd-rc-local-generator',
2020 'src/rc-local-generator/rc-local-generator.c',
2021 include_directories : includes,
2022 link_with : [libshared],
2023 install_rpath : rootlibexecdir,
2024 install : true,
2025 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002026endif
2027
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002028if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002029 executable('systemd-hostnamed',
2030 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002031 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002032 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002033 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002034 install : true,
2035 install_dir : rootlibexecdir)
2036
2037 exe = executable('hostnamectl',
2038 'src/hostname/hostnamectl.c',
2039 include_directories : includes,
2040 link_with : [libshared],
2041 install_rpath : rootlibexecdir,
2042 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002043 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002044endif
2045
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002046if conf.get('ENABLE_LOCALED') == 1
2047 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002048 # logind will load libxkbcommon.so dynamically on its own
2049 deps = [libdl]
2050 else
2051 deps = []
2052 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002053
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002054 executable('systemd-localed',
2055 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002056 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002057 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002058 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002059 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002060 install : true,
2061 install_dir : rootlibexecdir)
2062
2063 exe = executable('localectl',
2064 localectl_sources,
2065 include_directories : includes,
2066 link_with : [libshared],
2067 install_rpath : rootlibexecdir,
2068 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002069 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002070endif
2071
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002072if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002073 executable('systemd-timedated',
2074 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002075 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002076 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002077 install_rpath : rootlibexecdir,
2078 install : true,
2079 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002080endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002081
Yu Watanabe6129ec82018-05-03 18:07:43 +09002082if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002083 exe = executable('timedatectl',
2084 'src/timedate/timedatectl.c',
2085 include_directories : includes,
2086 install_rpath : rootlibexecdir,
2087 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002088 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002089 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002090 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002091endif
2092
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002093if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002094 executable('systemd-timesyncd',
2095 systemd_timesyncd_sources,
2096 include_directories : includes,
2097 link_with : [libshared],
2098 dependencies : [threads,
2099 libm],
2100 install_rpath : rootlibexecdir,
2101 install : true,
2102 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002103
2104 executable('systemd-time-wait-sync',
2105 'src/time-wait-sync/time-wait-sync.c',
2106 include_directories : includes,
2107 link_with : [libshared],
2108 install_rpath : rootlibexecdir,
2109 install : true,
2110 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002111endif
2112
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002113if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002114 executable('systemd-machined',
2115 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002116 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002117 link_with : [libmachine_core,
2118 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002119 install_rpath : rootlibexecdir,
2120 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002121 install_dir : rootlibexecdir)
2122
2123 exe = executable('machinectl',
2124 'src/machine/machinectl.c',
2125 include_directories : includes,
2126 link_with : [libshared],
2127 dependencies : [threads,
2128 libxz,
2129 liblz4],
2130 install_rpath : rootlibexecdir,
2131 install : true,
2132 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002133 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002134endif
2135
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002136if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002137 executable('systemd-importd',
2138 systemd_importd_sources,
2139 include_directories : includes,
2140 link_with : [libshared],
2141 dependencies : [threads],
2142 install_rpath : rootlibexecdir,
2143 install : true,
2144 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002145
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002146 systemd_pull = executable('systemd-pull',
2147 systemd_pull_sources,
2148 include_directories : includes,
2149 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002150 dependencies : [versiondep,
2151 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002152 libz,
2153 libbzip2,
2154 libxz,
2155 libgcrypt],
2156 install_rpath : rootlibexecdir,
2157 install : true,
2158 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002159
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002160 systemd_import = executable('systemd-import',
2161 systemd_import_sources,
2162 include_directories : includes,
2163 link_with : [libshared],
2164 dependencies : [libcurl,
2165 libz,
2166 libbzip2,
2167 libxz],
2168 install_rpath : rootlibexecdir,
2169 install : true,
2170 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002171
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002172 systemd_import_fs = executable('systemd-import-fs',
2173 systemd_import_fs_sources,
2174 include_directories : includes,
2175 link_with : [libshared],
2176 install_rpath : rootlibexecdir,
2177 install : true,
2178 install_dir : rootlibexecdir)
2179
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002180 systemd_export = executable('systemd-export',
2181 systemd_export_sources,
2182 include_directories : includes,
2183 link_with : [libshared],
2184 dependencies : [libcurl,
2185 libz,
2186 libbzip2,
2187 libxz],
2188 install_rpath : rootlibexecdir,
2189 install : true,
2190 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002191
2192 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002193endif
2194
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002195if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002196 exe = executable('systemd-journal-upload',
2197 systemd_journal_upload_sources,
2198 include_directories : includes,
2199 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002200 dependencies : [versiondep,
2201 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002202 libcurl,
2203 libgnutls,
2204 libxz,
2205 liblz4],
2206 install_rpath : rootlibexecdir,
2207 install : true,
2208 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002209 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002210endif
2211
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002212if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002213 s_j_remote = executable('systemd-journal-remote',
2214 systemd_journal_remote_sources,
2215 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002216 link_with : [libshared,
2217 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002218 dependencies : [threads,
2219 libmicrohttpd,
2220 libgnutls,
2221 libxz,
2222 liblz4],
2223 install_rpath : rootlibexecdir,
2224 install : true,
2225 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002226
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002227 s_j_gatewayd = executable('systemd-journal-gatewayd',
2228 systemd_journal_gatewayd_sources,
2229 include_directories : includes,
2230 link_with : [libshared],
2231 dependencies : [threads,
2232 libmicrohttpd,
2233 libgnutls,
2234 libxz,
2235 liblz4],
2236 install_rpath : rootlibexecdir,
2237 install : true,
2238 install_dir : rootlibexecdir)
2239 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002240endif
2241
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002242if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002243 executable('systemd-coredump',
2244 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002245 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002246 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002247 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002248 libacl,
2249 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002250 libxz,
2251 liblz4],
2252 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002253 install : true,
2254 install_dir : rootlibexecdir)
2255
2256 exe = executable('coredumpctl',
2257 coredumpctl_sources,
2258 include_directories : includes,
2259 link_with : [libshared],
2260 dependencies : [threads,
2261 libxz,
2262 liblz4],
2263 install_rpath : rootlibexecdir,
2264 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002265 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002266endif
2267
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002268if conf.get('ENABLE_PSTORE') == 1
2269 executable('systemd-pstore',
2270 systemd_pstore_sources,
2271 include_directories : includes,
2272 link_with : [libshared],
2273 dependencies : [threads,
2274 libacl,
2275 libdw,
2276 libxz,
2277 liblz4],
2278 install_rpath : rootlibexecdir,
2279 install : true,
2280 install_dir : rootlibexecdir)
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002281endif
2282
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002283if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002284 exe = executable('systemd-binfmt',
2285 'src/binfmt/binfmt.c',
2286 include_directories : includes,
2287 link_with : [libshared],
2288 install_rpath : rootlibexecdir,
2289 install : true,
2290 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002291 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002292
2293 meson.add_install_script('sh', '-c',
2294 mkdir_p.format(binfmtdir))
2295 meson.add_install_script('sh', '-c',
2296 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2297endif
2298
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002299if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002300 executable('systemd-vconsole-setup',
2301 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002302 include_directories : includes,
2303 link_with : [libshared],
2304 install_rpath : rootlibexecdir,
2305 install : true,
2306 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002307endif
2308
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002309if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002310 executable('systemd-random-seed',
2311 'src/random-seed/random-seed.c',
2312 include_directories : includes,
2313 link_with : [libshared],
2314 install_rpath : rootlibexecdir,
2315 install : true,
2316 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002317endif
2318
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002319if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002320 executable('systemd-firstboot',
2321 'src/firstboot/firstboot.c',
2322 include_directories : includes,
2323 link_with : [libshared],
2324 dependencies : [libcrypt],
2325 install_rpath : rootlibexecdir,
2326 install : true,
2327 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002328endif
2329
2330executable('systemd-remount-fs',
2331 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002332 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002333 link_with : [libcore_shared,
2334 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002335 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002336 install : true,
2337 install_dir : rootlibexecdir)
2338
2339executable('systemd-machine-id-setup',
2340 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002341 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002342 link_with : [libcore_shared,
2343 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002344 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002345 install : true,
2346 install_dir : rootbindir)
2347
2348executable('systemd-fsck',
2349 'src/fsck/fsck.c',
2350 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002351 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002352 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002353 install : true,
2354 install_dir : rootlibexecdir)
2355
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002356executable('systemd-growfs',
2357 'src/partition/growfs.c',
2358 include_directories : includes,
2359 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002360 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002361 install_rpath : rootlibexecdir,
2362 install : true,
2363 install_dir : rootlibexecdir)
2364
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002365executable('systemd-makefs',
2366 'src/partition/makefs.c',
2367 include_directories : includes,
2368 link_with : [libshared],
2369 install_rpath : rootlibexecdir,
2370 install : true,
2371 install_dir : rootlibexecdir)
2372
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002373executable('systemd-sleep',
2374 'src/sleep/sleep.c',
2375 include_directories : includes,
2376 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002377 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002378 install : true,
2379 install_dir : rootlibexecdir)
2380
Yu Watanabed25e1272019-01-03 02:32:57 +09002381install_data('src/sleep/sleep.conf',
2382 install_dir : pkgsysconfdir)
2383
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002384exe = executable('systemd-sysctl',
2385 'src/sysctl/sysctl.c',
2386 include_directories : includes,
2387 link_with : [libshared],
2388 install_rpath : rootlibexecdir,
2389 install : true,
2390 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002391public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002392
2393executable('systemd-ac-power',
2394 'src/ac-power/ac-power.c',
2395 include_directories : includes,
2396 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002397 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002398 install : true,
2399 install_dir : rootlibexecdir)
2400
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002401exe = executable('systemd-detect-virt',
2402 'src/detect-virt/detect-virt.c',
2403 include_directories : includes,
2404 link_with : [libshared],
2405 install_rpath : rootlibexecdir,
2406 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002407public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002408
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002409exe = executable('systemd-delta',
2410 'src/delta/delta.c',
2411 include_directories : includes,
2412 link_with : [libshared],
2413 install_rpath : rootlibexecdir,
2414 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002415public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002416
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002417exe = executable('systemd-escape',
2418 'src/escape/escape.c',
2419 include_directories : includes,
2420 link_with : [libshared],
2421 install_rpath : rootlibexecdir,
2422 install : true,
2423 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002424public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002425
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002426exe = executable('systemd-notify',
2427 'src/notify/notify.c',
2428 include_directories : includes,
2429 link_with : [libshared],
2430 install_rpath : rootlibexecdir,
2431 install : true,
2432 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002433public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002434
2435executable('systemd-volatile-root',
2436 'src/volatile-root/volatile-root.c',
2437 include_directories : includes,
2438 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002439 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002440 install : true,
2441 install_dir : rootlibexecdir)
2442
2443executable('systemd-cgroups-agent',
2444 'src/cgroups-agent/cgroups-agent.c',
2445 include_directories : includes,
2446 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002447 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002448 install : true,
2449 install_dir : rootlibexecdir)
2450
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002451exe = executable('systemd-id128',
2452 'src/id128/id128.c',
2453 include_directories : includes,
2454 link_with : [libshared],
2455 install_rpath : rootlibexecdir,
2456 install : true)
2457public_programs += exe
2458
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002459exe = executable('systemd-path',
2460 'src/path/path.c',
2461 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002462 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002463 install_rpath : rootlibexecdir,
2464 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002465public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002466
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002467exe = executable('systemd-ask-password',
2468 'src/ask-password/ask-password.c',
2469 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002470 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002471 install_rpath : rootlibexecdir,
2472 install : true,
2473 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002474public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002475
2476executable('systemd-reply-password',
2477 'src/reply-password/reply-password.c',
2478 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002479 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002480 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002481 install : true,
2482 install_dir : rootlibexecdir)
2483
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002484exe = executable('systemd-tty-ask-password-agent',
2485 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2486 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002487 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002488 install_rpath : rootlibexecdir,
2489 install : true,
2490 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002491public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002492
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002493exe = executable('systemd-cgls',
2494 'src/cgls/cgls.c',
2495 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002496 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002497 install_rpath : rootlibexecdir,
2498 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002499public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002500
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002501exe = executable('systemd-cgtop',
2502 'src/cgtop/cgtop.c',
2503 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002504 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002505 install_rpath : rootlibexecdir,
2506 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002507public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002508
2509executable('systemd-initctl',
2510 'src/initctl/initctl.c',
2511 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002512 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002513 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002514 install : true,
2515 install_dir : rootlibexecdir)
2516
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002517exe = executable('systemd-mount',
2518 'src/mount/mount-tool.c',
2519 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002520 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek7d991d42019-04-04 13:41:47 +02002521 dependencies: [libmount],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002522 install_rpath : rootlibexecdir,
2523 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002524public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002525
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002526meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002527 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002528
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002529exe = executable('systemd-run',
2530 'src/run/run.c',
2531 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002532 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002533 install_rpath : rootlibexecdir,
2534 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002535public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002536
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002537exe = executable('systemd-stdio-bridge',
2538 'src/stdio-bridge/stdio-bridge.c',
2539 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002540 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002541 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002542 install_rpath : rootlibexecdir,
2543 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002544public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002545
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002546exe = executable('busctl',
2547 'src/busctl/busctl.c',
2548 'src/busctl/busctl-introspect.c',
2549 'src/busctl/busctl-introspect.h',
2550 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002551 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002552 install_rpath : rootlibexecdir,
2553 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002554public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002555
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002556if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002557 exe = executable('systemd-sysusers',
2558 'src/sysusers/sysusers.c',
2559 include_directories : includes,
2560 link_with : [libshared],
2561 install_rpath : rootlibexecdir,
2562 install : true,
2563 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002564 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002565endif
2566
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002567if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002568 exe = executable('systemd-tmpfiles',
2569 'src/tmpfiles/tmpfiles.c',
2570 include_directories : includes,
2571 link_with : [libshared],
2572 dependencies : [libacl],
2573 install_rpath : rootlibexecdir,
2574 install : true,
2575 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002576 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002577
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002578 if want_tests != 'false'
2579 test('test-systemd-tmpfiles',
2580 test_systemd_tmpfiles_py,
2581 # https://github.com/mesonbuild/meson/issues/2681
2582 args : exe.full_path())
2583 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002584endif
2585
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002586if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002587 exe = executable('systemd-hwdb',
2588 'src/hwdb/hwdb.c',
2589 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2590 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002591 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002592 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002593 install : true,
2594 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002595 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002596endif
2597
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002598if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002599 executable('systemd-quotacheck',
2600 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002601 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002602 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002603 install_rpath : rootlibexecdir,
2604 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002605 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002606endif
2607
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002608exe = executable('systemd-socket-proxyd',
2609 'src/socket-proxy/socket-proxyd.c',
2610 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002611 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002612 dependencies : [threads],
2613 install_rpath : rootlibexecdir,
2614 install : true,
2615 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002616public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002617
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002618exe = executable('systemd-udevd',
2619 systemd_udevd_sources,
2620 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002621 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002622 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002623 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002624 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002625 dependencies : [versiondep,
2626 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002627 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002628 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002629 libacl,
2630 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002631 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002632 install : true,
2633 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002634public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002635
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002636exe = executable('udevadm',
2637 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002638 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002639 include_directories : includes,
2640 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002641 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002642 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002643 dependencies : [versiondep,
2644 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002645 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002646 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002647 libacl,
2648 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002649 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002650 install : true,
2651 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002652public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002653
2654executable('systemd-shutdown',
2655 systemd_shutdown_sources,
2656 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002657 link_with : [libcore_shared,
2658 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002659 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002660 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002661 install : true,
2662 install_dir : rootlibexecdir)
2663
2664executable('systemd-update-done',
2665 'src/update-done/update-done.c',
2666 include_directories : includes,
2667 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002668 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002669 install : true,
2670 install_dir : rootlibexecdir)
2671
2672executable('systemd-update-utmp',
2673 'src/update-utmp/update-utmp.c',
2674 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002675 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002676 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002677 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002678 install : true,
2679 install_dir : rootlibexecdir)
2680
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002681if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002682 executable('systemd-modules-load',
2683 'src/modules-load/modules-load.c',
2684 include_directories : includes,
2685 link_with : [libshared],
2686 dependencies : [libkmod],
2687 install_rpath : rootlibexecdir,
2688 install : true,
2689 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002690
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002691 meson.add_install_script('sh', '-c',
2692 mkdir_p.format(modulesloaddir))
2693 meson.add_install_script('sh', '-c',
2694 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002695endif
2696
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002697exe = executable('systemd-nspawn',
2698 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002699 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002700 link_with : [libcore_shared,
2701 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002702 libshared],
Franck Bui82384232019-03-22 11:09:08 +01002703 dependencies : [libblkid,
2704 libseccomp],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002705 install_rpath : rootlibexecdir,
2706 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002707public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002708
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002709if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002710 executable('systemd-networkd',
2711 systemd_networkd_sources,
Yu Watanabe737f1402019-10-30 17:02:15 +09002712 include_directories : network_include_dir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002713 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002714 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002715 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002716 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002717 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002718 install_rpath : rootlibexecdir,
2719 install : true,
2720 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002721
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002722 executable('systemd-networkd-wait-online',
2723 systemd_networkd_wait_online_sources,
2724 include_directories : includes,
2725 link_with : [libnetworkd_core,
2726 libshared],
2727 install_rpath : rootlibexecdir,
2728 install : true,
2729 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002730
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002731 exe = executable('networkctl',
2732 networkctl_sources,
2733 include_directories : includes,
2734 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002735 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002736 install_rpath : rootlibexecdir,
2737 install : true,
2738 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002739 public_programs += exe
Yu Watanabe426c1d32019-07-13 03:35:04 +09002740
2741 executable('systemd-network-generator',
2742 network_generator_sources,
2743 include_directories : includes,
2744 link_with : [libshared],
2745 install_rpath : rootlibexecdir,
2746 install : true,
2747 install_dir : rootlibexecdir)
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002748endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002749
2750executable('systemd-sulogin-shell',
2751 ['src/sulogin-shell/sulogin-shell.c'],
2752 include_directories : includes,
2753 link_with : [libshared],
2754 install_rpath : rootlibexecdir,
2755 install : true,
2756 install_dir : rootlibexecdir)
2757
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002758############################################################
2759
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002760custom_target(
2761 'systemd-runtest.env',
2762 output : 'systemd-runtest.env',
2763 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05002764 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002765 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002766 '} >@OUTPUT@'],
2767 build_by_default : true)
2768
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002769foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002770 sources = tuple[0]
2771 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2772 dependencies = tuple[2]
2773 condition = tuple.length() >= 4 ? tuple[3] : ''
2774 type = tuple.length() >= 5 ? tuple[4] : ''
2775 defs = tuple.length() >= 6 ? tuple[5] : []
2776 incs = tuple.length() >= 7 ? tuple[6] : includes
2777 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002778
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002779 name = sources[0].split('/')[-1].split('.')[0]
2780 if type.startswith('timeout=')
2781 timeout = type.split('=')[1].to_int()
2782 type = ''
2783 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002784
2785 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002786 exe = executable(
2787 name,
2788 sources,
2789 include_directories : incs,
2790 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002791 dependencies : [versiondep,
2792 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002793 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002794 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002795 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002796 install : install_tests,
2797 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002798
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002799 if type == 'manual'
2800 message('@0@ is a manual test'.format(name))
2801 elif type == 'unsafe' and want_tests != 'unsafe'
2802 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002803 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002804 test(name, exe,
2805 env : test_env,
2806 timeout : timeout)
2807 endif
2808 else
2809 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2810 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002811endforeach
2812
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002813exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002814 'test-libsystemd-sym',
2815 test_libsystemd_sym_c,
2816 include_directories : includes,
2817 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002818 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002819 install : install_tests,
2820 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002821if want_tests != 'false'
2822 test('test-libsystemd-sym', exe)
2823endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002824
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002825exe = executable(
2826 'test-libsystemd-static-sym',
2827 test_libsystemd_sym_c,
2828 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002829 link_with : [install_libsystemd_static],
2830 dependencies : [threads], # threads is already included in dependencies on the library,
2831 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002832 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002833 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002834 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002835if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002836 test('test-libsystemd-static-sym', exe)
2837endif
2838
2839exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002840 'test-libudev-sym',
2841 test_libudev_sym_c,
2842 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002843 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002844 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002845 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002846 install : install_tests,
2847 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002848if want_tests != 'false'
2849 test('test-libudev-sym', exe)
2850endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002851
2852exe = executable(
2853 'test-libudev-static-sym',
2854 test_libudev_sym_c,
2855 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002856 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002857 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002858 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002859 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002860 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002861if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002862 test('test-libudev-static-sym', exe)
2863endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002864
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002865############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002866
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002867fuzzer_exes = []
2868
Michael Olbrich59967402018-11-11 11:27:35 +01002869if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002870foreach tuple : fuzzers
2871 sources = tuple[0]
2872 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2873 dependencies = tuple[2]
2874 defs = tuple.length() >= 4 ? tuple[3] : []
2875 incs = tuple.length() >= 5 ? tuple[4] : includes
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002876 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002877
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002878 if want_ossfuzz or want_fuzzbuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002879 dependencies += fuzzing_engine
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002880 elif want_libfuzzer
2881 if fuzzing_engine.found()
2882 dependencies += fuzzing_engine
2883 else
2884 link_args += ['-fsanitize=fuzzer']
2885 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002886 else
2887 sources += 'src/fuzz/fuzz-main.c'
2888 endif
2889
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00002890 if want_fuzzbuzz
2891 sources += 'src/fuzz/fuzzer-entry-point.c'
2892 endif
2893
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002894 name = sources[0].split('/')[-1].split('.')[0]
2895
2896 fuzzer_exes += executable(
2897 name,
2898 sources,
2899 include_directories : [incs, include_directories('src/fuzz')],
2900 link_with : link_with,
2901 dependencies : dependencies,
2902 c_args : defs,
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002903 link_args: link_args,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002904 install : false)
2905endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002906endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002907
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01002908run_target('fuzzers',
2909 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002910 command : ['true'])
2911
2912############################################################
2913
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002914make_directive_index_py = find_program('tools/make-directive-index.py')
2915make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002916xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002917hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002918
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002919subdir('sysctl.d')
2920subdir('sysusers.d')
2921subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmek4f10b802019-10-08 16:52:10 +02002922subdir('hwdb.d')
2923subdir('units')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002924subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002925subdir('network')
2926subdir('man')
2927subdir('shell-completion/bash')
2928subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002929subdir('docs/sysvinit')
2930subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002931
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002932install_subdir('factory/etc',
2933 install_dir : factorydir)
2934
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002935install_data('xorg/50-systemd-user.sh',
2936 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002937install_data('modprobe.d/systemd.conf',
2938 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002939install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002940 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002941 'NEWS',
2942 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302943 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002944 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002945 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302946 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002947 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002948 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002949 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002950 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2951 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002952
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002953meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2954meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2955
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002956############################################################
2957
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002958meson_check_help = find_program('tools/meson-check-help.sh')
2959
2960foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002961 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002962 if want_tests != 'false'
2963 test('check-help-' + name,
2964 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002965 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002966 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002967endforeach
2968
2969############################################################
2970
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02002971check_directives_sh = find_program('tools/check-directives.sh')
2972
2973if want_tests != 'false'
2974 test('check-directives',
2975 check_directives_sh,
2976 args : project_source_root)
2977endif
2978
2979############################################################
2980
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002981# Enable tests for all supported sanitizers
2982foreach tuple : sanitizers
2983 sanitizer = tuple[0]
2984 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002985
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002986 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002987 prev = ''
2988 foreach p : fuzz_regression_tests
2989 b = p.split('/')[-2]
2990 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002991
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002992 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002993
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002994 if name != prev
2995 if want_tests == 'false'
2996 message('Not compiling @0@ because tests is set to false'.format(name))
2997 elif slow_tests
2998 exe = custom_target(
2999 name,
3000 output : name,
3001 depends : build,
3002 command : [env, 'ln', '-fs',
3003 join_paths(build.full_path(), b),
3004 '@OUTPUT@'],
3005 build_by_default : true)
3006 else
3007 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3008 endif
3009 endif
3010 prev = name
3011
3012 if want_tests != 'false' and slow_tests
3013 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3014 env,
3015 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003016 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003017 endif
3018 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003019 endif
3020endforeach
3021
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003022
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003023############################################################
3024
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003025if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003026 all_files = run_command(
3027 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003028 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003029 'ls-files',
3030 ':/*.[ch]'])
3031 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003032
userwithuide85a6902017-08-09 13:41:44 +00003033 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003034 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003035 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003036 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003037 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003038 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003039 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003040endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003041
3042if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003043 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003044 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003045 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003046 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003047endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003048
3049if git.found()
3050 git_head = run_command(
3051 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003052 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003053 'rev-parse', 'HEAD']).stdout().strip()
3054 git_head_short = run_command(
3055 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003056 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003057 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3058
3059 run_target(
3060 'git-snapshot',
3061 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003062 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003063 git_head_short),
3064 '--prefix', 'systemd-@0@/'.format(git_head),
3065 'HEAD'])
3066endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003067
3068############################################################
3069
Lennart Poettering51b13862017-12-20 12:51:14 +01003070meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3071run_target(
3072 'check-api-docs',
3073 depends : [man, libsystemd, libudev],
3074 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3075
3076############################################################
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003077watchdog_opt = service_watchdog == '' ? 'disabled' : service_watchdog
Lennart Poettering51b13862017-12-20 12:51:14 +01003078
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003079status = [
3080 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3081
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003082 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003083 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003084 'prefix directory: @0@'.format(prefixdir),
3085 'rootprefix directory: @0@'.format(rootprefixdir),
3086 'sysconf directory: @0@'.format(sysconfdir),
3087 'include directory: @0@'.format(includedir),
3088 'lib directory: @0@'.format(libdir),
3089 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003090 'SysV init scripts: @0@'.format(sysvinit_path),
3091 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003092 'PAM modules directory: @0@'.format(pamlibdir),
3093 'PAM configuration directory: @0@'.format(pamconfdir),
3094 'RPM macros directory: @0@'.format(rpmmacrosdir),
3095 'modprobe.d directory: @0@'.format(modprobedir),
3096 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3097 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3098 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3099 'bash completions directory: @0@'.format(bashcompletiondir),
3100 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003101 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003102 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3103 get_option('debug-tty')),
3104 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003105 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003106 'maximum system UID: @0@'.format(system_uid_max),
3107 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003108 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3109 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3110 'minimum container UID base: @0@'.format(container_uid_base_min),
3111 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003112 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003113 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003114 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003115 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003116 'nobody user name: @0@'.format(nobody_user),
3117 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003118 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003119 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003120
3121 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003122 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003123 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003124 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003125 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +02003126 'default locale: @0@'.format(default_locale),
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +01003127 'default user $PATH: @0@'.format(
3128 default_user_path != '' ? default_user_path : '(same as system services)'),
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003129 'systemd service watchdog: @0@'.format(watchdog_opt)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003130
3131alt_dns_servers = '\n '.join(dns_servers.split(' '))
3132alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3133status += [
3134 'default DNS servers: @0@'.format(alt_dns_servers),
3135 'default NTP servers: @0@'.format(alt_ntp_servers)]
3136
3137alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3138 '@@0@'.format(time_epoch)).stdout().strip()
3139status += [
3140 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3141
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003142status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003143 'static libsystemd: @0@'.format(static_libsystemd),
3144 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003145
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003146# TODO:
3147# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3148# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3149# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3150
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003151if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003152 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003153
3154 if have_gnu_efi
3155 status += [
3156 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003157 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003158 'EFI lib directory: @0@'.format(efi_libdir),
3159 'EFI lds directory: @0@'.format(efi_ldsdir),
3160 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003161 endif
3162endif
3163
3164found = []
3165missing = []
3166
3167foreach tuple : [
3168 ['libcryptsetup'],
3169 ['PAM'],
3170 ['AUDIT'],
3171 ['IMA'],
3172 ['AppArmor'],
3173 ['SELinux'],
3174 ['SECCOMP'],
3175 ['SMACK'],
3176 ['zlib'],
3177 ['xz'],
3178 ['lz4'],
3179 ['bzip2'],
3180 ['ACL'],
3181 ['gcrypt'],
3182 ['qrencode'],
3183 ['microhttpd'],
3184 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003185 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003186 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003187 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003188 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003189 ['libidn'],
3190 ['libiptc'],
3191 ['elfutils'],
3192 ['binfmt'],
3193 ['vconsole'],
3194 ['quotacheck'],
3195 ['tmpfiles'],
3196 ['environment.d'],
3197 ['sysusers'],
3198 ['firstboot'],
3199 ['randomseed'],
3200 ['backlight'],
3201 ['rfkill'],
3202 ['logind'],
3203 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003204 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003205 ['importd'],
3206 ['hostnamed'],
3207 ['timedated'],
3208 ['timesyncd'],
3209 ['localed'],
3210 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003211 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003212 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3213 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003214 ['coredump'],
Eric DeVolder9b4abc62019-05-16 08:59:01 -05003215 ['pstore'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003216 ['polkit'],
3217 ['legacy pkla', install_polkit_pkla],
3218 ['efi'],
3219 ['gnu-efi', have_gnu_efi],
3220 ['kmod'],
3221 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003222 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003223 ['blkid'],
3224 ['dbus'],
3225 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003226 ['nss-myhostname'],
3227 ['nss-mymachines'],
3228 ['nss-resolve'],
3229 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003230 ['hwdb'],
3231 ['tpm'],
3232 ['man pages', want_man],
3233 ['html pages', want_html],
3234 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003235 ['SysV compat'],
3236 ['utmp'],
3237 ['ldconfig'],
3238 ['hibernate'],
3239 ['adm group', get_option('adm-group')],
3240 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003241 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003242 ['debug hashmap'],
3243 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003244 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003245 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003246 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003247 ['link-udev-shared', get_option('link-udev-shared')],
3248 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003249]
3250
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003251 if tuple.length() >= 2
3252 cond = tuple[1]
3253 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003254 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3255 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003256 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003257 endif
3258 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003259 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003260 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003261 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003262 endif
3263endforeach
3264
3265status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003266 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003267 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003268 '',
3269 'disabled features: @0@'.format(', '.join(missing)),
3270 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003271message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003272
3273if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003274 warning('\n' +
3275 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3276 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3277 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003278endif