blob: 69d06a1bf3c92db4da184ee4a3fb73564784f05a [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-Szmek3131bfe2017-04-10 19:06:45 -0400798substs.set('SUSHELL', get_option('debug-shell'))
799substs.set('DEBUGTTY', get_option('debug-tty'))
Jan Synacek93912e82019-04-25 12:19:16 +0200800conf.set_quoted('DEBUGTTY', get_option('debug-tty'))
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400801
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200802enable_debug_hashmap = false
803enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900804enable_debug_siphash = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200805foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900806 if name == 'hashmap'
807 enable_debug_hashmap = true
808 elif name == 'mmap-cache'
809 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900810 elif name == 'siphash'
811 enable_debug_siphash = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900812 else
813 message('unknown debug option "@0@", ignoring'.format(name))
814 endif
815endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200816conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
817conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900818conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400819
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200820conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200821conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200822
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400823#####################################################################
824
825threads = dependency('threads')
826librt = cc.find_library('rt')
827libm = cc.find_library('m')
828libdl = cc.find_library('dl')
829libcrypt = cc.find_library('crypt')
830
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400831libcap = dependency('libcap', required : false)
832if not libcap.found()
833 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
834 libcap = cc.find_library('cap')
835endif
836
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400837libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100838 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400839
840want_seccomp = get_option('seccomp')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000841if want_seccomp != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400842 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400843 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400844 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200845 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400846else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200847 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400848 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400849endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200850conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400851
852want_selinux = get_option('selinux')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000853if want_selinux != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400854 libselinux = dependency('libselinux',
855 version : '>= 2.1.9',
856 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200857 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400858else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200859 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400860 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400861endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200862conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400863
864want_apparmor = get_option('apparmor')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000865if want_apparmor != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400866 libapparmor = dependency('libapparmor',
867 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200868 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400869else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200870 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400871 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400872endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200873conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400874
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400875smack_run_label = get_option('smack-run-label')
876if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400877 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400878endif
879
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400880want_polkit = get_option('polkit')
881install_polkit = false
882install_polkit_pkla = false
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000883if want_polkit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400884 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400885
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400886 libpolkit = dependency('polkit-gobject-1',
887 required : false)
888 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
889 message('Old polkit detected, will install pkla files')
890 install_polkit_pkla = true
891 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400892endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200893conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400894
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400895want_acl = get_option('acl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000896if want_acl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400897 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200898 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400899else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200900 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400901 libacl = []
902endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200903conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400904
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905want_audit = get_option('audit')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000906if want_audit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400907 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200908 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400909else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200910 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400911 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400912endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200913conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400914
915want_blkid = get_option('blkid')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000916if want_blkid != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400917 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200918 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400919else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200920 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400921 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400922endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200923conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400924
925want_kmod = get_option('kmod')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000926if want_kmod != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400927 libkmod = dependency('libkmod',
928 version : '>= 15',
929 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200930 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400931else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200932 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400933 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400934endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200935conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400936
937want_pam = get_option('pam')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000938if want_pam != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400939 libpam = cc.find_library('pam', required : want_pam == 'true')
940 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200941 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400942else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200943 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400944 libpam = []
945 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400946endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200947conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400948
949want_microhttpd = get_option('microhttpd')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000950if want_microhttpd != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400951 libmicrohttpd = dependency('libmicrohttpd',
952 version : '>= 0.9.33',
953 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200954 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400955else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200956 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400957 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400958endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200959conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400960
961want_libcryptsetup = get_option('libcryptsetup')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000962if want_libcryptsetup != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400963 libcryptsetup = dependency('libcryptsetup',
Jay Strictd90874b2019-09-26 15:54:29 +0200964 version : '>= 2.0.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400965 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200966 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400967else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200968 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400969 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400970endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200971conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400972
973want_libcurl = get_option('libcurl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000974if want_libcurl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400975 libcurl = dependency('libcurl',
976 version : '>= 7.32.0',
977 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200978 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400979else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200980 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400981 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400982endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200983conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400984
985want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400986want_libidn2 = get_option('libidn2')
987if want_libidn == 'true' and want_libidn2 == 'true'
988 error('libidn and libidn2 cannot be requested simultaneously')
989endif
990
Yu Watanabe1b931392019-06-29 03:13:30 +0900991if want_libidn2 != 'false' and want_libidn != 'true' and not skip_deps
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400992 libidn = dependency('libidn2',
993 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200994 have = libidn.found()
995else
996 have = false
Yu Watanabe1b931392019-06-29 03:13:30 +0900997 libidn = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400998endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200999conf.set10('HAVE_LIBIDN2', have)
Yu Watanabe1b931392019-06-29 03:13:30 +09001000if not have and want_libidn != 'false' and not skip_deps
1001 # libidn is used for both libidn and libidn2 objects
1002 libidn = dependency('libidn',
1003 required : want_libidn == 'true')
1004 have = libidn.found()
1005else
1006 have = false
1007endif
1008conf.set10('HAVE_LIBIDN', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001009
1010want_libiptc = get_option('libiptc')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001011if want_libiptc != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001012 libiptc = dependency('libiptc',
1013 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001014 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001015else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001016 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001017 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001018endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001019conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001020
1021want_qrencode = get_option('qrencode')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001022if want_qrencode != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001023 libqrencode = dependency('libqrencode',
1024 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001025 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001026else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001027 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001028 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001029endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001030conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001031
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001032want_gcrypt = get_option('gcrypt')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001033if want_gcrypt != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001034 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1035 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001036 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001037else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001038 have = false
1039endif
1040if not have
1041 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001042 libgcrypt = []
1043 libgpg_error = []
1044endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001045conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001046
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001047want_gnutls = get_option('gnutls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001048if want_gnutls != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001049 libgnutls = dependency('gnutls',
1050 version : '>= 3.1.4',
1051 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001052 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001053else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001054 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001055 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001056endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001057conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001058
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001059want_openssl = get_option('openssl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001060if want_openssl != 'false' and not skip_deps
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001061 libopenssl = dependency('openssl',
1062 version : '>= 1.1.0',
1063 required : want_openssl == 'true')
1064 have = libopenssl.found()
1065else
1066 have = false
1067 libopenssl = []
1068endif
1069conf.set10('HAVE_OPENSSL', have)
1070
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001071want_elfutils = get_option('elfutils')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001072if want_elfutils != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001073 libdw = dependency('libdw',
1074 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001075 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001076else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001077 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001078 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001079endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001081
1082want_zlib = get_option('zlib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001083if want_zlib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001084 libz = dependency('zlib',
1085 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001086 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001087else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001088 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001089 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001090endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001091conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001092
1093want_bzip2 = get_option('bzip2')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001094if want_bzip2 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001095 libbzip2 = cc.find_library('bz2',
1096 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001097 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001098else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001099 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001100 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001101endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001102conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001103
1104want_xz = get_option('xz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001105if want_xz != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001106 libxz = dependency('liblzma',
1107 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001108 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001109else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001110 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001111 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001112endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001113conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001114
1115want_lz4 = get_option('lz4')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001116if want_lz4 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001117 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001118 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001119 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001120 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001121else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001122 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001123 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001124endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001125conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001126
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001127want_xkbcommon = get_option('xkbcommon')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001128if want_xkbcommon != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001129 libxkbcommon = dependency('xkbcommon',
1130 version : '>= 0.3.0',
1131 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001132 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001133else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001134 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001135 libxkbcommon = []
1136endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001137conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001138
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001139want_pcre2 = get_option('pcre2')
1140if want_pcre2 != 'false'
1141 libpcre2 = dependency('libpcre2-8',
1142 required : want_pcre2 == 'true')
1143 have = libpcre2.found()
1144else
1145 have = false
1146 libpcre2 = []
1147endif
1148conf.set10('HAVE_PCRE2', have)
1149
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001150want_glib = get_option('glib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001151if want_glib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001152 libglib = dependency('glib-2.0',
1153 version : '>= 2.22.0',
1154 required : want_glib == 'true')
1155 libgobject = dependency('gobject-2.0',
1156 version : '>= 2.22.0',
1157 required : want_glib == 'true')
1158 libgio = dependency('gio-2.0',
1159 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001160 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001161else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001162 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001163 libglib = []
1164 libgobject = []
1165 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001166endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001167conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001168
1169want_dbus = get_option('dbus')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001170if want_dbus != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001171 libdbus = dependency('dbus-1',
1172 version : '>= 1.3.2',
1173 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001174 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001175else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001176 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001177 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001178endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001179conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001180
Yu Watanabe42303dc2017-06-18 05:22:32 +09001181default_dnssec = get_option('default-dnssec')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001182if skip_deps
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001183 default_dnssec = 'no'
1184endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001185if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001186 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1187 default_dnssec = 'no'
1188endif
1189conf.set('DEFAULT_DNSSEC_MODE',
1190 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1191substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1192
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001193dns_over_tls = get_option('dns-over-tls')
1194if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001195 if dns_over_tls == 'openssl'
1196 have_gnutls = false
1197 else
1198 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1199 if dns_over_tls == 'gnutls' and not have_gnutls
1200 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1201 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001202 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001203 if dns_over_tls == 'gnutls' or have_gnutls
1204 have_openssl = false
1205 else
1206 have_openssl = conf.get('HAVE_OPENSSL') == 1
1207 if dns_over_tls != 'auto' and not have_openssl
1208 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
Yu Watanabeb349bc52019-06-17 10:22:54 +09001209 error('DNS-over-TLS support was requested@0@, but dependencies are not available'.format(str))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001210 endif
1211 endif
1212 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001213else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001214 have = false
1215 have_gnutls = false
1216 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001217endif
1218conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001219conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1220conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001221
Iwan Timmerc9299be2018-06-13 20:26:24 +02001222default_dns_over_tls = get_option('default-dns-over-tls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001223if skip_deps
Iwan Timmerc9299be2018-06-13 20:26:24 +02001224 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001225endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001226if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
Iwan Timmer4310bfc2019-02-18 20:41:46 +01001227 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 +02001228 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001229endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001230conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1231 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1232substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001233
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001234want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001235if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001236 have = (conf.get('HAVE_LIBCURL') == 1 and
1237 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001238 conf.get('HAVE_XZ') == 1 and
1239 conf.get('HAVE_GCRYPT') == 1)
1240 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001241 error('importd support was requested, but dependencies are not available')
1242 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001243else
1244 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001245endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001246conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001247
1248want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001249if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001250 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1251 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001252 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1253 # it's possible to build one without the other. Complain only if
Ben Boeckel5238e952019-04-26 20:22:40 -04001254 # support was explicitly requested. The auxiliary files like sysusers
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001255 # config should be installed when any of the programs are built.
1256 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1257 error('remote support was requested, but dependencies are not available')
1258 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001259 have = have_deps[0] or have_deps[1]
1260else
1261 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001262endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001263conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001264
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001265foreach term : ['utmp',
1266 'hibernate',
1267 'environment-d',
1268 'binfmt',
1269 'coredump',
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001270 'pstore',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001271 'resolve',
1272 'logind',
1273 'hostnamed',
1274 'localed',
1275 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001276 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001277 'networkd',
1278 'timedated',
1279 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001280 'firstboot',
1281 'randomseed',
1282 'backlight',
1283 'vconsole',
1284 'quotacheck',
1285 'sysusers',
1286 'tmpfiles',
1287 'hwdb',
1288 'rfkill',
1289 'ldconfig',
1290 'efi',
1291 'tpm',
1292 'ima',
1293 'smack',
1294 'gshadow',
1295 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001296 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001297 'nss-systemd']
1298 have = get_option(term)
1299 name = 'ENABLE_' + term.underscorify().to_upper()
1300 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001301endforeach
1302
Yu Watanabe08540a92018-07-18 09:25:57 +09001303foreach tuple : [['nss-mymachines', 'machined'],
1304 ['nss-resolve', 'resolve']]
1305 want = get_option(tuple[0])
1306 if want != 'false'
1307 have = get_option(tuple[1])
1308 if want == 'true' and not have
1309 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1310 endif
1311 else
1312 have = false
1313 endif
1314 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1315 conf.set10(name, have)
1316endforeach
1317
1318enable_nss = false
1319foreach term : ['ENABLE_NSS_MYHOSTNAME',
1320 'ENABLE_NSS_MYMACHINES',
1321 'ENABLE_NSS_RESOLVE',
1322 'ENABLE_NSS_SYSTEMD']
1323 if conf.get(term) == 1
1324 enable_nss = true
1325 endif
1326endforeach
1327conf.set10('ENABLE_NSS', enable_nss)
1328
Yu Watanabe348b4432018-05-07 18:17:35 +09001329conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001330
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001331tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001332fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001333
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001334conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001335
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001336#####################################################################
1337
1338if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001339 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001340
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001341 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001342 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001343 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001344 elif efi_arch == 'x86_64'
1345 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001346 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001347 elif efi_arch == 'arm'
1348 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001349 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001350 elif efi_arch == 'aarch64'
1351 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001352 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001353 else
1354 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001355 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001356 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001357
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001358 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001359 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001360
Yu Watanabeac093402018-05-10 16:04:16 +09001361 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001362else
1363 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001364endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001365conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001366
1367#####################################################################
1368
1369config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001370 output : 'config.h',
1371 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001372
Yu Watanabe348b4432018-05-07 18:17:35 +09001373meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1374
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001375includes = include_directories('src/basic',
Zbigniew Jędrzejewski-Szmek91b08bb2019-07-02 13:01:23 +02001376 'src/boot',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001377 'src/shared',
1378 'src/systemd',
1379 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001380 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001381 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001382 'src/resolve',
1383 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001384 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001385 'src/login',
1386 'src/udev',
1387 'src/libudev',
1388 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001389 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001390 'src/libsystemd/sd-bus',
1391 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001392 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001393 'src/libsystemd/sd-hwdb',
1394 'src/libsystemd/sd-id128',
1395 'src/libsystemd/sd-netlink',
1396 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001397 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001398 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001399 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001400
1401add_project_arguments('-include', 'config.h', language : 'c')
1402
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001403generate_gperfs = find_program('tools/generate-gperfs.py')
1404
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001405subdir('po')
1406subdir('catalog')
1407subdir('src/systemd')
1408subdir('src/basic')
1409subdir('src/libsystemd')
1410subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001411subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001412subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001413
1414libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001415 'journal-core',
1416 libjournal_core_sources,
1417 journald_gperf_c,
1418 include_directories : includes,
1419 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001420
Davide Cavalca1485aac2019-02-27 11:19:07 -05001421libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001422libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001423 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001424 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001425 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001426 include_directories : includes,
1427 link_args : ['-shared',
1428 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001429 link_with : [libbasic,
1430 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001431 link_whole : [libsystemd_static,
1432 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001433 dependencies : [threads,
1434 librt,
1435 libxz,
1436 liblz4],
1437 link_depends : libsystemd_sym,
1438 install : true,
1439 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001440
Davide Cavalca70848ec2018-04-09 02:43:35 -07001441static_libsystemd = get_option('static-libsystemd')
1442static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1443
1444install_libsystemd_static = static_library(
1445 'systemd',
1446 libsystemd_sources,
1447 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001448 basic_sources,
1449 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001450 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001451 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001452 build_by_default : static_libsystemd != 'false',
1453 install : static_libsystemd != 'false',
1454 install_dir : rootlibdir,
1455 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1456 dependencies : [threads,
1457 librt,
1458 libxz,
1459 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001460 libcap,
1461 libblkid,
1462 libmount,
1463 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001464 libgcrypt],
1465 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1466
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001467############################################################
1468
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001469# binaries that have --help and are intended for use by humans,
1470# usually, but not always, installed in /bin.
1471public_programs = []
1472
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001473subdir('src/libudev')
1474subdir('src/shared')
1475subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001476subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001477subdir('src/udev')
1478subdir('src/network')
1479
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001480subdir('src/analyze')
1481subdir('src/journal-remote')
1482subdir('src/coredump')
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001483subdir('src/pstore')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001484subdir('src/hostname')
1485subdir('src/import')
1486subdir('src/kernel-install')
1487subdir('src/locale')
1488subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001489subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001490subdir('src/nspawn')
1491subdir('src/resolve')
1492subdir('src/timedate')
1493subdir('src/timesync')
1494subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001495subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001496
1497subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001498subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001499subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001500subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001501
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001502############################################################
1503
1504# only static linking apart from libdl, to make sure that the
1505# module is linked to all libraries that it uses.
1506test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001507 'test-dlopen',
1508 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001509 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001510 include_directories : includes,
1511 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001512 dependencies : [libdl],
1513 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001514
Yu Watanabe08540a92018-07-18 09:25:57 +09001515foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001516 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001517 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1518 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001519
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001520 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001521 if condition
1522 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001523
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001524 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001525 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001526
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001527 nss = shared_library(
1528 'nss_' + module,
1529 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001530 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001531 version : '2',
1532 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001533 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1534 link_args : ['-Wl,-z,nodelete',
1535 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001536 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001537 link_with : [libsystemd_static,
Lennart Poettering733cbd02019-07-23 14:22:06 +02001538 libshared_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001539 libbasic],
1540 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001541 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001542 link_depends : sym,
1543 install : true,
1544 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001545
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001546 # We cannot use shared_module because it does not support version suffix.
1547 # Unfortunately shared_library insists on creating the symlink…
1548 meson.add_install_script('sh', '-c',
1549 'rm $DESTDIR@0@/libnss_@1@.so'
1550 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001551
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001552 if want_tests != 'false'
1553 test('dlopen-nss_' + module,
1554 test_dlopen,
1555 # path to dlopen must include a slash
1556 args : nss.full_path())
1557 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001558 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001559endforeach
1560
1561############################################################
1562
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001563executable('systemd',
1564 systemd_sources,
1565 include_directories : includes,
1566 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001567 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001568 dependencies : [versiondep,
1569 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001570 librt,
1571 libseccomp,
1572 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001573 libmount,
1574 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001575 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001576 install : true,
1577 install_dir : rootlibexecdir)
1578
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001579meson.add_install_script(meson_make_symlink,
1580 join_paths(rootlibexecdir, 'systemd'),
1581 join_paths(rootsbindir, 'init'))
1582
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001583exe = executable('systemd-analyze',
1584 systemd_analyze_sources,
1585 include_directories : includes,
1586 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001587 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001588 dependencies : [versiondep,
1589 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001590 librt,
1591 libseccomp,
1592 libselinux,
1593 libmount,
1594 libblkid],
1595 install_rpath : rootlibexecdir,
1596 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001597public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001598
1599executable('systemd-journald',
1600 systemd_journald_sources,
1601 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001602 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001603 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001604 dependencies : [threads,
1605 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001606 liblz4,
1607 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001608 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001609 install : true,
1610 install_dir : rootlibexecdir)
1611
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001612exe = executable('systemd-cat',
1613 systemd_cat_sources,
1614 include_directories : includes,
1615 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001616 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001617 dependencies : [threads],
1618 install_rpath : rootlibexecdir,
1619 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001620public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001621
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001622exe = executable('journalctl',
1623 journalctl_sources,
1624 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001625 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001626 dependencies : [threads,
1627 libqrencode,
1628 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001629 liblz4,
1630 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001631 install_rpath : rootlibexecdir,
1632 install : true,
1633 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001634public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001635
1636executable('systemd-getty-generator',
1637 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001638 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001639 link_with : [libshared],
1640 install_rpath : rootlibexecdir,
1641 install : true,
1642 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001643
1644executable('systemd-debug-generator',
1645 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001646 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001647 link_with : [libshared],
1648 install_rpath : rootlibexecdir,
1649 install : true,
1650 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001651
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001652executable('systemd-run-generator',
1653 'src/run-generator/run-generator.c',
1654 include_directories : includes,
1655 link_with : [libshared],
1656 install_rpath : rootlibexecdir,
1657 install : true,
1658 install_dir : systemgeneratordir)
1659
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001660executable('systemd-fstab-generator',
1661 'src/fstab-generator/fstab-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001662 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01001663 link_with : [libcore_shared,
1664 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001665 install_rpath : rootlibexecdir,
1666 install : true,
1667 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001668
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001669if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001670 executable('30-systemd-environment-d-generator',
1671 'src/environment-d-generator/environment-d-generator.c',
1672 include_directories : includes,
1673 link_with : [libshared],
1674 install_rpath : rootlibexecdir,
1675 install : true,
1676 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001677
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001678 meson.add_install_script(meson_make_symlink,
1679 join_paths(sysconfdir, 'environment'),
1680 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001681endif
1682
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001683if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001684 executable('systemd-hibernate-resume-generator',
1685 'src/hibernate-resume/hibernate-resume-generator.c',
1686 include_directories : includes,
1687 link_with : [libshared],
1688 install_rpath : rootlibexecdir,
1689 install : true,
1690 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001691
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001692 executable('systemd-hibernate-resume',
1693 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001694 include_directories : includes,
1695 link_with : [libshared],
1696 install_rpath : rootlibexecdir,
1697 install : true,
1698 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001699endif
1700
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001701if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001702 executable('systemd-gpt-auto-generator',
1703 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001704 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001705 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001706 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001707 dependencies : libblkid,
1708 install_rpath : rootlibexecdir,
1709 install : true,
1710 install_dir : systemgeneratordir)
1711
1712 exe = executable('systemd-dissect',
1713 'src/dissect/dissect.c',
1714 include_directories : includes,
1715 link_with : [libshared],
1716 install_rpath : rootlibexecdir,
1717 install : true,
1718 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001719 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001720endif
1721
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001722if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001723 executable('systemd-resolved',
1724 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001725 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001726 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001727 libbasic_gcrypt,
1728 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001729 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001730 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001731 install : true,
1732 install_dir : rootlibexecdir)
1733
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001734 exe = executable('resolvectl',
1735 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001736 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001737 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001738 libbasic_gcrypt,
1739 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001740 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001741 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001742 libm,
1743 libidn],
1744 install_rpath : rootlibexecdir,
1745 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001746 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001747
1748 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001749 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001750 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001751
1752 meson.add_install_script(meson_make_symlink,
1753 join_paths(bindir, 'resolvectl'),
1754 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001755endif
1756
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001757if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001758 executable('systemd-logind',
1759 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001760 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001761 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001762 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001763 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001764 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001765 install_rpath : rootlibexecdir,
1766 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001767 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001768
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001769 exe = executable('loginctl',
1770 loginctl_sources,
1771 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001772 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001773 dependencies : [threads,
1774 liblz4,
1775 libxz],
1776 install_rpath : rootlibexecdir,
1777 install : true,
1778 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001779 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001780
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001781 exe = executable('systemd-inhibit',
1782 'src/login/inhibit.c',
1783 include_directories : includes,
1784 link_with : [libshared],
1785 install_rpath : rootlibexecdir,
1786 install : true,
1787 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001788 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001789
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001790 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001791 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001792 pam_systemd = shared_library(
1793 'pam_systemd',
1794 pam_systemd_c,
1795 name_prefix : '',
1796 include_directories : includes,
1797 link_args : ['-shared',
1798 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001799 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001800 libshared_static],
1801 dependencies : [threads,
1802 libpam,
1803 libpam_misc],
1804 link_depends : pam_systemd_sym,
1805 install : true,
1806 install_dir : pamlibdir)
1807
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001808 if want_tests != 'false'
1809 test('dlopen-pam_systemd',
1810 test_dlopen,
1811 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001812 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001813 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001814 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001815
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001816 executable('systemd-user-runtime-dir',
1817 user_runtime_dir_sources,
1818 include_directories : includes,
1819 link_with : [libshared],
1820 install_rpath : rootlibexecdir,
1821 install : true,
1822 install_dir : rootlibexecdir)
1823endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001824
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001825if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001826 executable('systemd-user-sessions',
1827 'src/user-sessions/user-sessions.c',
1828 include_directories : includes,
1829 link_with : [libshared],
1830 install_rpath : rootlibexecdir,
1831 install : true,
1832 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001833endif
1834
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001835if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001836 exe = executable('bootctl',
1837 'src/boot/bootctl.c',
1838 include_directories : includes,
1839 link_with : [libshared],
1840 dependencies : [libblkid],
1841 install_rpath : rootlibexecdir,
1842 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001843 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001844
1845 executable('systemd-bless-boot',
1846 'src/boot/bless-boot.c',
1847 include_directories : includes,
1848 link_with : [libshared],
1849 dependencies : [libblkid],
1850 install_rpath : rootlibexecdir,
1851 install : true,
1852 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001853
1854 executable('systemd-bless-boot-generator',
1855 'src/boot/bless-boot-generator.c',
1856 include_directories : includes,
1857 link_with : [libshared],
1858 install_rpath : rootlibexecdir,
1859 install : true,
1860 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001861endif
1862
Lennart Poetteringf876f532018-06-25 16:07:33 +02001863executable('systemd-boot-check-no-failures',
1864 'src/boot/boot-check-no-failures.c',
1865 include_directories : includes,
1866 link_with : [libshared],
1867 dependencies : [libblkid],
1868 install_rpath : rootlibexecdir,
1869 install : true,
1870 install_dir : rootlibexecdir)
1871
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001872exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1873 include_directories : includes,
1874 link_with : [libshared],
1875 dependencies : [threads],
1876 install_rpath : rootlibexecdir,
1877 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001878public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001879
Felipe Satelerf3794362018-05-22 15:08:57 -04001880
1881if get_option('link-systemctl-shared')
1882 systemctl_link_with = [libshared]
1883else
1884 systemctl_link_with = [libsystemd_static,
1885 libshared_static,
1886 libjournal_client,
1887 libbasic_gcrypt]
1888endif
1889
Lennart Poettering63a3b3c2019-03-22 20:05:08 +01001890exe = executable('systemctl',
1891 'src/systemctl/systemctl.c',
1892 'src/systemctl/sysv-compat.h',
1893 'src/systemctl/sysv-compat.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001894 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001895 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001896 dependencies : [threads,
1897 libcap,
1898 libselinux,
1899 libxz,
1900 liblz4],
1901 install_rpath : rootlibexecdir,
1902 install : true,
1903 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001904public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001905
Lennart Poettering61d05782018-04-16 21:41:40 +02001906if conf.get('ENABLE_PORTABLED') == 1
1907 executable('systemd-portabled',
1908 systemd_portabled_sources,
1909 include_directories : includes,
1910 link_with : [libshared],
1911 dependencies : [threads],
1912 install_rpath : rootlibexecdir,
1913 install : true,
1914 install_dir : rootlibexecdir)
1915
1916 exe = executable('portablectl', 'src/portable/portablectl.c',
1917 include_directories : includes,
1918 link_with : [libshared],
1919 dependencies : [threads],
1920 install_rpath : rootlibexecdir,
1921 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001922 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001923 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001924endif
1925
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001926foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1927 meson.add_install_script(meson_make_symlink,
1928 join_paths(rootbindir, 'systemctl'),
1929 join_paths(rootsbindir, alias))
1930endforeach
1931
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001932if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001933 executable('systemd-backlight',
1934 'src/backlight/backlight.c',
1935 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001936 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001937 install_rpath : rootlibexecdir,
1938 install : true,
1939 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001940endif
1941
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001942if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001943 executable('systemd-rfkill',
1944 'src/rfkill/rfkill.c',
1945 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001946 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001947 install_rpath : rootlibexecdir,
1948 install : true,
1949 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001950endif
1951
1952executable('systemd-system-update-generator',
1953 'src/system-update-generator/system-update-generator.c',
1954 include_directories : includes,
1955 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001956 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001957 install : true,
1958 install_dir : systemgeneratordir)
1959
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001960if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001961 executable('systemd-cryptsetup',
1962 'src/cryptsetup/cryptsetup.c',
1963 include_directories : includes,
1964 link_with : [libshared],
1965 dependencies : [libcryptsetup],
1966 install_rpath : rootlibexecdir,
1967 install : true,
1968 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001969
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001970 executable('systemd-cryptsetup-generator',
1971 'src/cryptsetup/cryptsetup-generator.c',
1972 include_directories : includes,
1973 link_with : [libshared],
1974 dependencies : [libcryptsetup],
1975 install_rpath : rootlibexecdir,
1976 install : true,
1977 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001978
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001979 executable('systemd-veritysetup',
1980 'src/veritysetup/veritysetup.c',
1981 include_directories : includes,
1982 link_with : [libshared],
1983 dependencies : [libcryptsetup],
1984 install_rpath : rootlibexecdir,
1985 install : true,
1986 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001987
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001988 executable('systemd-veritysetup-generator',
1989 'src/veritysetup/veritysetup-generator.c',
1990 include_directories : includes,
1991 link_with : [libshared],
1992 dependencies : [libcryptsetup],
1993 install_rpath : rootlibexecdir,
1994 install : true,
1995 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001996endif
1997
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001998if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001999 executable('systemd-sysv-generator',
2000 'src/sysv-generator/sysv-generator.c',
2001 include_directories : includes,
2002 link_with : [libshared],
2003 install_rpath : rootlibexecdir,
2004 install : true,
2005 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002006
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002007 executable('systemd-rc-local-generator',
2008 'src/rc-local-generator/rc-local-generator.c',
2009 include_directories : includes,
2010 link_with : [libshared],
2011 install_rpath : rootlibexecdir,
2012 install : true,
2013 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002014endif
2015
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002016if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002017 executable('systemd-hostnamed',
2018 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002019 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002020 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002021 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002022 install : true,
2023 install_dir : rootlibexecdir)
2024
2025 exe = executable('hostnamectl',
2026 'src/hostname/hostnamectl.c',
2027 include_directories : includes,
2028 link_with : [libshared],
2029 install_rpath : rootlibexecdir,
2030 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002031 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002032endif
2033
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002034if conf.get('ENABLE_LOCALED') == 1
2035 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002036 # logind will load libxkbcommon.so dynamically on its own
2037 deps = [libdl]
2038 else
2039 deps = []
2040 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002041
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002042 executable('systemd-localed',
2043 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002044 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002045 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002046 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002047 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002048 install : true,
2049 install_dir : rootlibexecdir)
2050
2051 exe = executable('localectl',
2052 localectl_sources,
2053 include_directories : includes,
2054 link_with : [libshared],
2055 install_rpath : rootlibexecdir,
2056 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002057 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002058endif
2059
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002060if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002061 executable('systemd-timedated',
2062 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002063 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002064 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002065 install_rpath : rootlibexecdir,
2066 install : true,
2067 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002068endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002069
Yu Watanabe6129ec82018-05-03 18:07:43 +09002070if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002071 exe = executable('timedatectl',
2072 'src/timedate/timedatectl.c',
2073 include_directories : includes,
2074 install_rpath : rootlibexecdir,
2075 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002076 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002077 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002078 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002079endif
2080
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002081if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002082 executable('systemd-timesyncd',
2083 systemd_timesyncd_sources,
2084 include_directories : includes,
2085 link_with : [libshared],
2086 dependencies : [threads,
2087 libm],
2088 install_rpath : rootlibexecdir,
2089 install : true,
2090 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002091
2092 executable('systemd-time-wait-sync',
2093 'src/time-wait-sync/time-wait-sync.c',
2094 include_directories : includes,
2095 link_with : [libshared],
2096 install_rpath : rootlibexecdir,
2097 install : true,
2098 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002099endif
2100
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002101if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002102 executable('systemd-machined',
2103 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002104 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002105 link_with : [libmachine_core,
2106 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002107 install_rpath : rootlibexecdir,
2108 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002109 install_dir : rootlibexecdir)
2110
2111 exe = executable('machinectl',
2112 'src/machine/machinectl.c',
2113 include_directories : includes,
2114 link_with : [libshared],
2115 dependencies : [threads,
2116 libxz,
2117 liblz4],
2118 install_rpath : rootlibexecdir,
2119 install : true,
2120 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002121 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002122endif
2123
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002124if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002125 executable('systemd-importd',
2126 systemd_importd_sources,
2127 include_directories : includes,
2128 link_with : [libshared],
2129 dependencies : [threads],
2130 install_rpath : rootlibexecdir,
2131 install : true,
2132 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002133
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002134 systemd_pull = executable('systemd-pull',
2135 systemd_pull_sources,
2136 include_directories : includes,
2137 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002138 dependencies : [versiondep,
2139 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002140 libz,
2141 libbzip2,
2142 libxz,
2143 libgcrypt],
2144 install_rpath : rootlibexecdir,
2145 install : true,
2146 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002147
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002148 systemd_import = executable('systemd-import',
2149 systemd_import_sources,
2150 include_directories : includes,
2151 link_with : [libshared],
2152 dependencies : [libcurl,
2153 libz,
2154 libbzip2,
2155 libxz],
2156 install_rpath : rootlibexecdir,
2157 install : true,
2158 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002159
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002160 systemd_import_fs = executable('systemd-import-fs',
2161 systemd_import_fs_sources,
2162 include_directories : includes,
2163 link_with : [libshared],
2164 install_rpath : rootlibexecdir,
2165 install : true,
2166 install_dir : rootlibexecdir)
2167
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002168 systemd_export = executable('systemd-export',
2169 systemd_export_sources,
2170 include_directories : includes,
2171 link_with : [libshared],
2172 dependencies : [libcurl,
2173 libz,
2174 libbzip2,
2175 libxz],
2176 install_rpath : rootlibexecdir,
2177 install : true,
2178 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002179
2180 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002181endif
2182
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002183if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002184 exe = executable('systemd-journal-upload',
2185 systemd_journal_upload_sources,
2186 include_directories : includes,
2187 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002188 dependencies : [versiondep,
2189 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002190 libcurl,
2191 libgnutls,
2192 libxz,
2193 liblz4],
2194 install_rpath : rootlibexecdir,
2195 install : true,
2196 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002197 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002198endif
2199
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002200if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002201 s_j_remote = executable('systemd-journal-remote',
2202 systemd_journal_remote_sources,
2203 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002204 link_with : [libshared,
2205 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002206 dependencies : [threads,
2207 libmicrohttpd,
2208 libgnutls,
2209 libxz,
2210 liblz4],
2211 install_rpath : rootlibexecdir,
2212 install : true,
2213 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002214
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002215 s_j_gatewayd = executable('systemd-journal-gatewayd',
2216 systemd_journal_gatewayd_sources,
2217 include_directories : includes,
2218 link_with : [libshared],
2219 dependencies : [threads,
2220 libmicrohttpd,
2221 libgnutls,
2222 libxz,
2223 liblz4],
2224 install_rpath : rootlibexecdir,
2225 install : true,
2226 install_dir : rootlibexecdir)
2227 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002228endif
2229
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002230if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002231 executable('systemd-coredump',
2232 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002233 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002234 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002235 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002236 libacl,
2237 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002238 libxz,
2239 liblz4],
2240 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002241 install : true,
2242 install_dir : rootlibexecdir)
2243
2244 exe = executable('coredumpctl',
2245 coredumpctl_sources,
2246 include_directories : includes,
2247 link_with : [libshared],
2248 dependencies : [threads,
2249 libxz,
2250 liblz4],
2251 install_rpath : rootlibexecdir,
2252 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002253 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002254endif
2255
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002256if conf.get('ENABLE_PSTORE') == 1
2257 executable('systemd-pstore',
2258 systemd_pstore_sources,
2259 include_directories : includes,
2260 link_with : [libshared],
2261 dependencies : [threads,
2262 libacl,
2263 libdw,
2264 libxz,
2265 liblz4],
2266 install_rpath : rootlibexecdir,
2267 install : true,
2268 install_dir : rootlibexecdir)
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002269endif
2270
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002271if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002272 exe = executable('systemd-binfmt',
2273 'src/binfmt/binfmt.c',
2274 include_directories : includes,
2275 link_with : [libshared],
2276 install_rpath : rootlibexecdir,
2277 install : true,
2278 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002279 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002280
2281 meson.add_install_script('sh', '-c',
2282 mkdir_p.format(binfmtdir))
2283 meson.add_install_script('sh', '-c',
2284 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2285endif
2286
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002287if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002288 executable('systemd-vconsole-setup',
2289 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002290 include_directories : includes,
2291 link_with : [libshared],
2292 install_rpath : rootlibexecdir,
2293 install : true,
2294 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002295endif
2296
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002297if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002298 executable('systemd-random-seed',
2299 'src/random-seed/random-seed.c',
2300 include_directories : includes,
2301 link_with : [libshared],
2302 install_rpath : rootlibexecdir,
2303 install : true,
2304 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002305endif
2306
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002307if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002308 executable('systemd-firstboot',
2309 'src/firstboot/firstboot.c',
2310 include_directories : includes,
2311 link_with : [libshared],
2312 dependencies : [libcrypt],
2313 install_rpath : rootlibexecdir,
2314 install : true,
2315 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002316endif
2317
2318executable('systemd-remount-fs',
2319 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002320 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002321 link_with : [libcore_shared,
2322 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002323 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002324 install : true,
2325 install_dir : rootlibexecdir)
2326
2327executable('systemd-machine-id-setup',
2328 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002329 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002330 link_with : [libcore_shared,
2331 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002332 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002333 install : true,
2334 install_dir : rootbindir)
2335
2336executable('systemd-fsck',
2337 'src/fsck/fsck.c',
2338 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002339 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002340 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002341 install : true,
2342 install_dir : rootlibexecdir)
2343
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002344executable('systemd-growfs',
2345 'src/partition/growfs.c',
2346 include_directories : includes,
2347 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002348 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002349 install_rpath : rootlibexecdir,
2350 install : true,
2351 install_dir : rootlibexecdir)
2352
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002353executable('systemd-makefs',
2354 'src/partition/makefs.c',
2355 include_directories : includes,
2356 link_with : [libshared],
2357 install_rpath : rootlibexecdir,
2358 install : true,
2359 install_dir : rootlibexecdir)
2360
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002361executable('systemd-sleep',
2362 'src/sleep/sleep.c',
2363 include_directories : includes,
2364 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002365 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002366 install : true,
2367 install_dir : rootlibexecdir)
2368
Yu Watanabed25e1272019-01-03 02:32:57 +09002369install_data('src/sleep/sleep.conf',
2370 install_dir : pkgsysconfdir)
2371
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002372exe = executable('systemd-sysctl',
2373 'src/sysctl/sysctl.c',
2374 include_directories : includes,
2375 link_with : [libshared],
2376 install_rpath : rootlibexecdir,
2377 install : true,
2378 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002379public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002380
2381executable('systemd-ac-power',
2382 'src/ac-power/ac-power.c',
2383 include_directories : includes,
2384 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002385 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002386 install : true,
2387 install_dir : rootlibexecdir)
2388
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002389exe = executable('systemd-detect-virt',
2390 'src/detect-virt/detect-virt.c',
2391 include_directories : includes,
2392 link_with : [libshared],
2393 install_rpath : rootlibexecdir,
2394 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002395public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002396
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002397exe = executable('systemd-delta',
2398 'src/delta/delta.c',
2399 include_directories : includes,
2400 link_with : [libshared],
2401 install_rpath : rootlibexecdir,
2402 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002403public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002404
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002405exe = executable('systemd-escape',
2406 'src/escape/escape.c',
2407 include_directories : includes,
2408 link_with : [libshared],
2409 install_rpath : rootlibexecdir,
2410 install : true,
2411 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002412public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002413
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002414exe = executable('systemd-notify',
2415 'src/notify/notify.c',
2416 include_directories : includes,
2417 link_with : [libshared],
2418 install_rpath : rootlibexecdir,
2419 install : true,
2420 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002421public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002422
2423executable('systemd-volatile-root',
2424 'src/volatile-root/volatile-root.c',
2425 include_directories : includes,
2426 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002427 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002428 install : true,
2429 install_dir : rootlibexecdir)
2430
2431executable('systemd-cgroups-agent',
2432 'src/cgroups-agent/cgroups-agent.c',
2433 include_directories : includes,
2434 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002435 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002436 install : true,
2437 install_dir : rootlibexecdir)
2438
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002439exe = executable('systemd-id128',
2440 'src/id128/id128.c',
2441 include_directories : includes,
2442 link_with : [libshared],
2443 install_rpath : rootlibexecdir,
2444 install : true)
2445public_programs += exe
2446
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002447exe = executable('systemd-path',
2448 'src/path/path.c',
2449 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002450 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002451 install_rpath : rootlibexecdir,
2452 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002453public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002454
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002455exe = executable('systemd-ask-password',
2456 'src/ask-password/ask-password.c',
2457 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002458 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002459 install_rpath : rootlibexecdir,
2460 install : true,
2461 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002462public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002463
2464executable('systemd-reply-password',
2465 'src/reply-password/reply-password.c',
2466 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002467 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002468 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002469 install : true,
2470 install_dir : rootlibexecdir)
2471
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002472exe = executable('systemd-tty-ask-password-agent',
2473 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2474 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002475 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002476 install_rpath : rootlibexecdir,
2477 install : true,
2478 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002479public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002480
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002481exe = executable('systemd-cgls',
2482 'src/cgls/cgls.c',
2483 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002484 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002485 install_rpath : rootlibexecdir,
2486 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002487public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002488
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002489exe = executable('systemd-cgtop',
2490 'src/cgtop/cgtop.c',
2491 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002492 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002493 install_rpath : rootlibexecdir,
2494 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002495public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002496
2497executable('systemd-initctl',
2498 'src/initctl/initctl.c',
2499 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002500 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002501 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002502 install : true,
2503 install_dir : rootlibexecdir)
2504
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002505exe = executable('systemd-mount',
2506 'src/mount/mount-tool.c',
2507 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002508 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek7d991d42019-04-04 13:41:47 +02002509 dependencies: [libmount],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002510 install_rpath : rootlibexecdir,
2511 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002512public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002513
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002514meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002515 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002516
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002517exe = executable('systemd-run',
2518 'src/run/run.c',
2519 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002520 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002521 install_rpath : rootlibexecdir,
2522 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002523public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002524
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002525exe = executable('systemd-stdio-bridge',
2526 'src/stdio-bridge/stdio-bridge.c',
2527 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002528 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002529 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002530 install_rpath : rootlibexecdir,
2531 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002532public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002533
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002534exe = executable('busctl',
2535 'src/busctl/busctl.c',
2536 'src/busctl/busctl-introspect.c',
2537 'src/busctl/busctl-introspect.h',
2538 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002539 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002540 install_rpath : rootlibexecdir,
2541 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002542public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002543
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002544if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002545 exe = executable('systemd-sysusers',
2546 'src/sysusers/sysusers.c',
2547 include_directories : includes,
2548 link_with : [libshared],
2549 install_rpath : rootlibexecdir,
2550 install : true,
2551 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002552 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002553endif
2554
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002555if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002556 exe = executable('systemd-tmpfiles',
2557 'src/tmpfiles/tmpfiles.c',
2558 include_directories : includes,
2559 link_with : [libshared],
2560 dependencies : [libacl],
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-Szmekd9daae52017-11-22 14:13:32 +01002565
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002566 if want_tests != 'false'
2567 test('test-systemd-tmpfiles',
2568 test_systemd_tmpfiles_py,
2569 # https://github.com/mesonbuild/meson/issues/2681
2570 args : exe.full_path())
2571 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002572endif
2573
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002574if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002575 exe = executable('systemd-hwdb',
2576 'src/hwdb/hwdb.c',
2577 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2578 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002579 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002580 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002581 install : true,
2582 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002583 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002584endif
2585
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002586if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002587 executable('systemd-quotacheck',
2588 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002589 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002590 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002591 install_rpath : rootlibexecdir,
2592 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002593 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002594endif
2595
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002596exe = executable('systemd-socket-proxyd',
2597 'src/socket-proxy/socket-proxyd.c',
2598 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002599 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002600 dependencies : [threads],
2601 install_rpath : rootlibexecdir,
2602 install : true,
2603 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002604public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002605
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002606exe = executable('systemd-udevd',
2607 systemd_udevd_sources,
2608 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002609 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002610 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002611 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002612 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002613 dependencies : [versiondep,
2614 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002615 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002616 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002617 libacl,
2618 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002619 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002620 install : true,
2621 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002622public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002623
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002624exe = executable('udevadm',
2625 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002626 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002627 include_directories : includes,
2628 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002629 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002630 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002631 dependencies : [versiondep,
2632 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002633 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002634 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002635 libacl,
2636 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002637 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002638 install : true,
2639 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002640public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002641
2642executable('systemd-shutdown',
2643 systemd_shutdown_sources,
2644 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002645 link_with : [libcore_shared,
2646 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002647 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002648 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002649 install : true,
2650 install_dir : rootlibexecdir)
2651
2652executable('systemd-update-done',
2653 'src/update-done/update-done.c',
2654 include_directories : includes,
2655 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002656 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002657 install : true,
2658 install_dir : rootlibexecdir)
2659
2660executable('systemd-update-utmp',
2661 'src/update-utmp/update-utmp.c',
2662 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002663 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002664 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002665 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002666 install : true,
2667 install_dir : rootlibexecdir)
2668
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002669if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002670 executable('systemd-modules-load',
2671 'src/modules-load/modules-load.c',
2672 include_directories : includes,
2673 link_with : [libshared],
2674 dependencies : [libkmod],
2675 install_rpath : rootlibexecdir,
2676 install : true,
2677 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002678
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002679 meson.add_install_script('sh', '-c',
2680 mkdir_p.format(modulesloaddir))
2681 meson.add_install_script('sh', '-c',
2682 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002683endif
2684
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002685exe = executable('systemd-nspawn',
2686 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002687 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002688 link_with : [libcore_shared,
2689 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002690 libshared],
Franck Bui82384232019-03-22 11:09:08 +01002691 dependencies : [libblkid,
2692 libseccomp],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002693 install_rpath : rootlibexecdir,
2694 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002695public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002696
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002697if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002698 executable('systemd-networkd',
2699 systemd_networkd_sources,
2700 include_directories : includes,
2701 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002702 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002703 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002704 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002705 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002706 install_rpath : rootlibexecdir,
2707 install : true,
2708 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002709
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002710 executable('systemd-networkd-wait-online',
2711 systemd_networkd_wait_online_sources,
2712 include_directories : includes,
2713 link_with : [libnetworkd_core,
2714 libshared],
2715 install_rpath : rootlibexecdir,
2716 install : true,
2717 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002718
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002719 exe = executable('networkctl',
2720 networkctl_sources,
2721 include_directories : includes,
2722 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002723 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002724 install_rpath : rootlibexecdir,
2725 install : true,
2726 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002727 public_programs += exe
Yu Watanabe426c1d32019-07-13 03:35:04 +09002728
2729 executable('systemd-network-generator',
2730 network_generator_sources,
2731 include_directories : includes,
2732 link_with : [libshared],
2733 install_rpath : rootlibexecdir,
2734 install : true,
2735 install_dir : rootlibexecdir)
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002736endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002737
2738executable('systemd-sulogin-shell',
2739 ['src/sulogin-shell/sulogin-shell.c'],
2740 include_directories : includes,
2741 link_with : [libshared],
2742 install_rpath : rootlibexecdir,
2743 install : true,
2744 install_dir : rootlibexecdir)
2745
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002746############################################################
2747
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002748custom_target(
2749 'systemd-runtest.env',
2750 output : 'systemd-runtest.env',
2751 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05002752 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002753 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002754 '} >@OUTPUT@'],
2755 build_by_default : true)
2756
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002757foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002758 sources = tuple[0]
2759 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2760 dependencies = tuple[2]
2761 condition = tuple.length() >= 4 ? tuple[3] : ''
2762 type = tuple.length() >= 5 ? tuple[4] : ''
2763 defs = tuple.length() >= 6 ? tuple[5] : []
2764 incs = tuple.length() >= 7 ? tuple[6] : includes
2765 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002766
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002767 name = sources[0].split('/')[-1].split('.')[0]
2768 if type.startswith('timeout=')
2769 timeout = type.split('=')[1].to_int()
2770 type = ''
2771 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002772
2773 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002774 exe = executable(
2775 name,
2776 sources,
2777 include_directories : incs,
2778 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002779 dependencies : [versiondep,
2780 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002781 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002782 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002783 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002784 install : install_tests,
2785 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002786
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002787 if type == 'manual'
2788 message('@0@ is a manual test'.format(name))
2789 elif type == 'unsafe' and want_tests != 'unsafe'
2790 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002791 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002792 test(name, exe,
2793 env : test_env,
2794 timeout : timeout)
2795 endif
2796 else
2797 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2798 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002799endforeach
2800
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002801exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002802 'test-libsystemd-sym',
2803 test_libsystemd_sym_c,
2804 include_directories : includes,
2805 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002806 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002807 install : install_tests,
2808 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002809if want_tests != 'false'
2810 test('test-libsystemd-sym', exe)
2811endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002812
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002813exe = executable(
2814 'test-libsystemd-static-sym',
2815 test_libsystemd_sym_c,
2816 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002817 link_with : [install_libsystemd_static],
2818 dependencies : [threads], # threads is already included in dependencies on the library,
2819 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002820 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002821 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002822 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002823if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002824 test('test-libsystemd-static-sym', exe)
2825endif
2826
2827exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002828 'test-libudev-sym',
2829 test_libudev_sym_c,
2830 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002831 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002832 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002833 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002834 install : install_tests,
2835 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002836if want_tests != 'false'
2837 test('test-libudev-sym', exe)
2838endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002839
2840exe = executable(
2841 'test-libudev-static-sym',
2842 test_libudev_sym_c,
2843 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002844 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002845 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002846 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002847 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002848 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002849if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002850 test('test-libudev-static-sym', exe)
2851endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002852
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002853############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002854
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002855fuzzer_exes = []
2856
Michael Olbrich59967402018-11-11 11:27:35 +01002857if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002858foreach tuple : fuzzers
2859 sources = tuple[0]
2860 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2861 dependencies = tuple[2]
2862 defs = tuple.length() >= 4 ? tuple[3] : []
2863 incs = tuple.length() >= 5 ? tuple[4] : includes
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002864 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002865
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002866 if want_ossfuzz or want_fuzzbuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002867 dependencies += fuzzing_engine
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002868 elif want_libfuzzer
2869 if fuzzing_engine.found()
2870 dependencies += fuzzing_engine
2871 else
2872 link_args += ['-fsanitize=fuzzer']
2873 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002874 else
2875 sources += 'src/fuzz/fuzz-main.c'
2876 endif
2877
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00002878 if want_fuzzbuzz
2879 sources += 'src/fuzz/fuzzer-entry-point.c'
2880 endif
2881
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002882 name = sources[0].split('/')[-1].split('.')[0]
2883
2884 fuzzer_exes += executable(
2885 name,
2886 sources,
2887 include_directories : [incs, include_directories('src/fuzz')],
2888 link_with : link_with,
2889 dependencies : dependencies,
2890 c_args : defs,
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002891 link_args: link_args,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002892 install : false)
2893endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002894endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002895
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01002896run_target('fuzzers',
2897 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002898 command : ['true'])
2899
2900############################################################
2901
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002902make_directive_index_py = find_program('tools/make-directive-index.py')
2903make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002904xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002905hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002906
2907subdir('units')
2908subdir('sysctl.d')
2909subdir('sysusers.d')
2910subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002911subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002912subdir('hwdb')
2913subdir('network')
2914subdir('man')
2915subdir('shell-completion/bash')
2916subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002917subdir('docs/sysvinit')
2918subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002919
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002920install_subdir('factory/etc',
2921 install_dir : factorydir)
2922
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002923install_data('xorg/50-systemd-user.sh',
2924 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002925install_data('modprobe.d/systemd.conf',
2926 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002927install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002928 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002929 'NEWS',
2930 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302931 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002932 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002933 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302934 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002935 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002936 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002937 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002938 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2939 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002940
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002941meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2942meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2943
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002944############################################################
2945
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002946meson_check_help = find_program('tools/meson-check-help.sh')
2947
2948foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002949 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002950 if want_tests != 'false'
2951 test('check-help-' + name,
2952 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002953 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002954 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002955endforeach
2956
2957############################################################
2958
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02002959check_directives_sh = find_program('tools/check-directives.sh')
2960
2961if want_tests != 'false'
2962 test('check-directives',
2963 check_directives_sh,
2964 args : project_source_root)
2965endif
2966
2967############################################################
2968
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002969# Enable tests for all supported sanitizers
2970foreach tuple : sanitizers
2971 sanitizer = tuple[0]
2972 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002973
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002974 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002975 prev = ''
2976 foreach p : fuzz_regression_tests
2977 b = p.split('/')[-2]
2978 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002979
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002980 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002981
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002982 if name != prev
2983 if want_tests == 'false'
2984 message('Not compiling @0@ because tests is set to false'.format(name))
2985 elif slow_tests
2986 exe = custom_target(
2987 name,
2988 output : name,
2989 depends : build,
2990 command : [env, 'ln', '-fs',
2991 join_paths(build.full_path(), b),
2992 '@OUTPUT@'],
2993 build_by_default : true)
2994 else
2995 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2996 endif
2997 endif
2998 prev = name
2999
3000 if want_tests != 'false' and slow_tests
3001 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3002 env,
3003 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003004 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003005 endif
3006 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003007 endif
3008endforeach
3009
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003010
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003011############################################################
3012
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003013if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003014 all_files = run_command(
3015 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003016 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003017 'ls-files',
3018 ':/*.[ch]'])
3019 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003020
userwithuide85a6902017-08-09 13:41:44 +00003021 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003022 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003023 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003024 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003025 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003026 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003027 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003028endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003029
3030if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003031 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003032 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003033 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003034 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003035endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003036
3037if git.found()
3038 git_head = run_command(
3039 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003040 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003041 'rev-parse', 'HEAD']).stdout().strip()
3042 git_head_short = run_command(
3043 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003044 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003045 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3046
3047 run_target(
3048 'git-snapshot',
3049 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003050 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003051 git_head_short),
3052 '--prefix', 'systemd-@0@/'.format(git_head),
3053 'HEAD'])
3054endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003055
3056############################################################
3057
Lennart Poettering51b13862017-12-20 12:51:14 +01003058meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3059run_target(
3060 'check-api-docs',
3061 depends : [man, libsystemd, libudev],
3062 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3063
3064############################################################
3065
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003066status = [
3067 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3068
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003069 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003070 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003071 'prefix directory: @0@'.format(prefixdir),
3072 'rootprefix directory: @0@'.format(rootprefixdir),
3073 'sysconf directory: @0@'.format(sysconfdir),
3074 'include directory: @0@'.format(includedir),
3075 'lib directory: @0@'.format(libdir),
3076 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003077 'SysV init scripts: @0@'.format(sysvinit_path),
3078 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003079 'PAM modules directory: @0@'.format(pamlibdir),
3080 'PAM configuration directory: @0@'.format(pamconfdir),
3081 'RPM macros directory: @0@'.format(rpmmacrosdir),
3082 'modprobe.d directory: @0@'.format(modprobedir),
3083 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3084 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3085 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3086 'bash completions directory: @0@'.format(bashcompletiondir),
3087 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003088 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003089 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3090 get_option('debug-tty')),
3091 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003092 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003093 'maximum system UID: @0@'.format(system_uid_max),
3094 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003095 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3096 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3097 'minimum container UID base: @0@'.format(container_uid_base_min),
3098 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003099 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003100 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003101 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003102 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003103 'nobody user name: @0@'.format(nobody_user),
3104 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003105 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003106 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003107
3108 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003109 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003110 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003111 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003112 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
3113 'default locale: @0@'.format(default_locale)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003114
3115alt_dns_servers = '\n '.join(dns_servers.split(' '))
3116alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3117status += [
3118 'default DNS servers: @0@'.format(alt_dns_servers),
3119 'default NTP servers: @0@'.format(alt_ntp_servers)]
3120
3121alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3122 '@@0@'.format(time_epoch)).stdout().strip()
3123status += [
3124 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3125
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003126status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003127 'static libsystemd: @0@'.format(static_libsystemd),
3128 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003129
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003130# TODO:
3131# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3132# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3133# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3134
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003135if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003136 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003137
3138 if have_gnu_efi
3139 status += [
3140 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003141 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003142 'EFI lib directory: @0@'.format(efi_libdir),
3143 'EFI lds directory: @0@'.format(efi_ldsdir),
3144 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003145 endif
3146endif
3147
3148found = []
3149missing = []
3150
3151foreach tuple : [
3152 ['libcryptsetup'],
3153 ['PAM'],
3154 ['AUDIT'],
3155 ['IMA'],
3156 ['AppArmor'],
3157 ['SELinux'],
3158 ['SECCOMP'],
3159 ['SMACK'],
3160 ['zlib'],
3161 ['xz'],
3162 ['lz4'],
3163 ['bzip2'],
3164 ['ACL'],
3165 ['gcrypt'],
3166 ['qrencode'],
3167 ['microhttpd'],
3168 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003169 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003170 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003171 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003172 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003173 ['libidn'],
3174 ['libiptc'],
3175 ['elfutils'],
3176 ['binfmt'],
3177 ['vconsole'],
3178 ['quotacheck'],
3179 ['tmpfiles'],
3180 ['environment.d'],
3181 ['sysusers'],
3182 ['firstboot'],
3183 ['randomseed'],
3184 ['backlight'],
3185 ['rfkill'],
3186 ['logind'],
3187 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003188 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003189 ['importd'],
3190 ['hostnamed'],
3191 ['timedated'],
3192 ['timesyncd'],
3193 ['localed'],
3194 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003195 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003196 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3197 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003198 ['coredump'],
Eric DeVolder9b4abc62019-05-16 08:59:01 -05003199 ['pstore'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003200 ['polkit'],
3201 ['legacy pkla', install_polkit_pkla],
3202 ['efi'],
3203 ['gnu-efi', have_gnu_efi],
3204 ['kmod'],
3205 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003206 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003207 ['blkid'],
3208 ['dbus'],
3209 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003210 ['nss-myhostname'],
3211 ['nss-mymachines'],
3212 ['nss-resolve'],
3213 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003214 ['hwdb'],
3215 ['tpm'],
3216 ['man pages', want_man],
3217 ['html pages', want_html],
3218 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003219 ['SysV compat'],
3220 ['utmp'],
3221 ['ldconfig'],
3222 ['hibernate'],
3223 ['adm group', get_option('adm-group')],
3224 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003225 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003226 ['debug hashmap'],
3227 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003228 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003229 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003230 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003231 ['link-udev-shared', get_option('link-udev-shared')],
3232 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003233]
3234
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003235 if tuple.length() >= 2
3236 cond = tuple[1]
3237 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003238 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3239 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003240 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003241 endif
3242 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003243 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003244 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003245 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003246 endif
3247endforeach
3248
3249status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003250 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003251 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003252 '',
3253 'disabled features: @0@'.format(', '.join(missing)),
3254 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003255message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003256
3257if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003258 warning('\n' +
3259 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3260 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3261 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003262endif