blob: 35f8992345aa75939c2b4e3839e0d29adc21b378 [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01002
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003project('systemd', 'c',
Zbigniew Jędrzejewski-Szmek7eb8a472019-04-03 10:00:14 +02004 version : '242',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04005 license : 'LGPLv2+',
6 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04007 'c_std=gnu99',
8 'prefix=/usr',
9 'sysconfdir=/etc',
10 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040011 ],
Yu Watanabe7a6397d2018-05-15 20:18:24 +090012 meson_version : '>= 0.46',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040013 )
14
Lennart Poetteringbfe6bb22019-03-27 14:23:57 +010015libsystemd_version = '0.26.0'
16libudev_version = '1.6.14'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020017
Yu Watanabe348b4432018-05-07 18:17:35 +090018# We need the same data in two different formats, ugh!
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040019# Also, for hysterical reasons, we use different variable
20# names, sometimes. Not all variables are included in every
21# set. Ugh, ugh, ugh!
22conf = configuration_data()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010023conf.set('PROJECT_VERSION', meson.project_version())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040024
25substs = configuration_data()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010026substs.set('PROJECT_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
27substs.set('PROJECT_VERSION', meson.project_version())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040028
Davide Cavalca1485aac2019-02-27 11:19:07 -050029# This is to be used instead of meson.source_root(), as the latter will return
30# the wrong result when systemd is being built as a meson subproject
31project_source_root = meson.current_source_dir()
32
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020033want_ossfuzz = get_option('oss-fuzz')
34want_libfuzzer = get_option('llvm-fuzz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +000035want_fuzzbuzz = get_option('fuzzbuzz')
36if want_ossfuzz + want_libfuzzer + want_fuzzbuzz > 1
37 error('only one of oss-fuzz, llvm-fuzz or fuzzbuzz can be specified')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020038endif
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +000039
40skip_deps = want_ossfuzz or want_libfuzzer
41fuzzer_build = want_ossfuzz or want_libfuzzer or want_fuzzbuzz
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020042
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040043#####################################################################
44
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040045# Try to install the git pre-commit hook
Davide Cavalca1485aac2019-02-27 11:19:07 -050046git_hook = run_command(join_paths(project_source_root, 'tools/add-git-hook.sh'))
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040047if git_hook.returncode() == 0
48 message(git_hook.stdout().strip())
49endif
50
51#####################################################################
52
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010053if get_option('split-usr') == 'auto'
54 split_usr = run_command('test', '-L', '/bin').returncode() != 0
55else
56 split_usr = get_option('split-usr') == 'true'
57endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010058conf.set10('HAVE_SPLIT_USR', split_usr,
59 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010060
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010061if get_option('split-bin') == 'auto'
62 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
63else
64 split_bin = get_option('split-bin') == 'true'
65endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010066conf.set10('HAVE_SPLIT_BIN', split_bin,
67 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010068
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010069rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010070# Unusual rootprefixdir values are used by some distros
71# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010072rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010073if rootprefixdir == ''
74 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010075endif
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010076rootprefixdir_noslash = rootprefixdir == '/' ? '' : rootprefixdir
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040077
78sysvinit_path = get_option('sysvinit-path')
79sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090080conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020081 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040082
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020083conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
84conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
Lennart Poettering09dad042018-11-15 09:50:42 +010085conf.set('HIGH_RLIMIT_NOFILE', 512*1024)
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020086
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010087# join_paths ignores the preceding arguments if an absolute component is
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040088# encountered, so this should canonicalize various paths when they are
89# absolute or relative.
90prefixdir = get_option('prefix')
91if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040092 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040093endif
94bindir = join_paths(prefixdir, get_option('bindir'))
95libdir = join_paths(prefixdir, get_option('libdir'))
96sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
97includedir = join_paths(prefixdir, get_option('includedir'))
98datadir = join_paths(prefixdir, get_option('datadir'))
99localstatedir = join_paths('/', get_option('localstatedir'))
100
101rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +0100102rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400103rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
104
105rootlibdir = get_option('rootlibdir')
106if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400107 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400108endif
109
110# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +0200111pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
112pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400113polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
114polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
115polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
116varlogdir = join_paths(localstatedir, 'log')
117xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900118rpmmacrosdir = get_option('rpmmacrosdir')
119if rpmmacrosdir != 'no'
120 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
121endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200122modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400123
124# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400125pkgdatadir = join_paths(datadir, 'systemd')
126environmentdir = join_paths(prefixdir, 'lib/environment.d')
127pkgsysconfdir = join_paths(sysconfdir, 'systemd')
128userunitdir = join_paths(prefixdir, 'lib/systemd/user')
129userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
130tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
131sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
132sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
133binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
134modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
135networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
136pkgincludedir = join_paths(includedir, 'systemd')
137systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
138usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
139systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
140userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
141systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
142systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
143systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
144systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
145udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400146udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
147udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
148catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
149kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
150factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400151bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
152testsdir = join_paths(prefixdir, 'lib/systemd/tests')
153systemdstatedir = join_paths(localstatedir, 'lib/systemd')
154catalogstatedir = join_paths(systemdstatedir, 'catalog')
155randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200156profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400157
tblume75aaade2018-02-01 22:46:15 +0100158docdir = get_option('docdir')
159if docdir == ''
160 docdir = join_paths(datadir, 'doc/systemd')
161endif
162
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400163dbuspolicydir = get_option('dbuspolicydir')
164if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400165 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400166endif
167
168dbussessionservicedir = get_option('dbussessionservicedir')
169if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400170 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400171endif
172
173dbussystemservicedir = get_option('dbussystemservicedir')
174if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400175 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400176endif
177
178pamlibdir = get_option('pamlibdir')
179if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400180 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400181endif
182
183pamconfdir = get_option('pamconfdir')
184if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400185 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400186endif
187
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100188memory_accounting_default = get_option('memory-accounting-default')
189
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400190conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400191conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400192conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
193conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
194conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400195conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
196conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100197
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100198conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100199
Michael Bieble17e5ba2017-04-13 10:30:56 -0400200conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400201conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
202conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400203conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
204conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
205conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
206conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100207conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100208conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400209conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
210conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
211conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
212conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
213conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100214conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400215conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400216conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
217conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400218conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
219conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
220conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
221conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
222conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
223conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400224conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
225conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700226conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700227conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400228conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400229conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400230conf.set_quoted('LIBDIR', libdir)
231conf.set_quoted('ROOTLIBDIR', rootlibdir)
232conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
233conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400234conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
235conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
Lennart Poettering1d7579c2018-10-10 21:20:08 +0200236conf.set_quoted('SYSTEMD_IMPORT_FS_PATH', join_paths(rootlibexecdir, 'systemd-import-fs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400237conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
238conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
239conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
240conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200241conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100242conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400243
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400244substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100245substs.set('rootprefix', rootprefixdir)
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +0100246substs.set('rootprefix_noslash', rootprefixdir_noslash)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400247substs.set('exec_prefix', prefixdir)
248substs.set('libdir', libdir)
249substs.set('rootlibdir', rootlibdir)
250substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100251substs.set('sysconfdir', sysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400252substs.set('bindir', bindir)
253substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400254substs.set('rootlibexecdir', rootlibexecdir)
255substs.set('systemunitdir', systemunitdir)
256substs.set('userunitdir', userunitdir)
257substs.set('systempresetdir', systempresetdir)
258substs.set('userpresetdir', userpresetdir)
259substs.set('udevhwdbdir', udevhwdbdir)
260substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400261substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200262substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400263substs.set('catalogdir', catalogdir)
264substs.set('tmpfilesdir', tmpfilesdir)
265substs.set('sysusersdir', sysusersdir)
266substs.set('sysctldir', sysctldir)
267substs.set('binfmtdir', binfmtdir)
268substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200269substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400270substs.set('systemgeneratordir', systemgeneratordir)
271substs.set('usergeneratordir', usergeneratordir)
272substs.set('systemenvgeneratordir', systemenvgeneratordir)
273substs.set('userenvgeneratordir', userenvgeneratordir)
274substs.set('systemshutdowndir', systemshutdowndir)
275substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400276substs.set('VARLOGDIR', varlogdir)
277substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400278substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
279substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400280substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
281substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
282substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
283substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100284substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200285substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmeke9bbff12019-05-09 13:23:50 +0200286substs.set('BUILD_ROOT', meson.current_build_dir())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400287
288#####################################################################
289
290cc = meson.get_compiler('c')
291pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400292check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100293meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400294
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200295want_tests = get_option('tests')
296slow_tests = want_tests != 'false' and get_option('slow-tests')
297install_tests = get_option('install-tests')
298
James Hilliard46e63a22018-12-27 09:16:20 +0800299if add_languages('cpp', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200300 # Used only for tests
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200301 cxx_cmd = ' '.join(meson.get_compiler('cpp').cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200302else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200303 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400304endif
305
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500306if want_libfuzzer
307 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200308elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500309 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000310elif want_fuzzbuzz
311 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 -0500312endif
313
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900314possible_cc_flags = [
315 '-Wextra',
316 '-Werror=undef',
317 '-Wlogical-op',
318 '-Wmissing-include-dirs',
319 '-Wold-style-definition',
320 '-Wpointer-arith',
321 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900322 '-Wfloat-equal',
323 '-Wsuggest-attribute=noreturn',
324 '-Werror=missing-prototypes',
325 '-Werror=implicit-function-declaration',
326 '-Werror=missing-declarations',
327 '-Werror=return-type',
328 '-Werror=incompatible-pointer-types',
329 '-Werror=format=2',
330 '-Wstrict-prototypes',
331 '-Wredundant-decls',
332 '-Wmissing-noreturn',
333 '-Wimplicit-fallthrough=5',
334 '-Wshadow',
335 '-Wendif-labels',
336 '-Wstrict-aliasing=2',
337 '-Wwrite-strings',
338 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200339 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200340 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900341 '-Wdate-time',
342 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700343
344 # negative arguments are correctly detected starting with meson 0.46.
345 '-Wno-unused-parameter',
346 '-Wno-missing-field-initializers',
347 '-Wno-unused-result',
348 '-Wno-format-signedness',
Zbigniew Jędrzejewski-Szmekeed33622019-03-07 10:56:15 +0100349 '-Wno-error=#warnings', # clang
350 '-Wno-string-plus-int', # clang
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700351
352 # work-around for gcc 7.1 turning this on on its own.
353 '-Wno-error=nonnull',
354
355 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
356 # optimizations enabled, producing essentially false positives.
357 '-Wno-maybe-uninitialized',
358
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900359 '-ffast-math',
360 '-fno-common',
361 '-fdiagnostics-show-option',
362 '-fno-strict-aliasing',
363 '-fvisibility=hidden',
364 '-fstack-protector',
365 '-fstack-protector-strong',
366 '--param=ssp-buffer-size=4',
367]
368
369# --as-needed and --no-undefined are provided by meson by default,
370# run mesonconf to see what is enabled
371possible_link_flags = [
372 '-Wl,-z,relro',
373 '-Wl,-z,now',
374]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400375
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900376if cc.get_id() == 'clang'
377 possible_cc_flags += [
378 '-Wno-typedef-redefinition',
379 '-Wno-gnu-variable-sized-type-not-at-end',
380 ]
381endif
382
383if get_option('buildtype') != 'debug'
384 possible_cc_flags += [
385 '-ffunction-sections',
386 '-fdata-sections',
387 ]
388
389 possible_link_flags += '-Wl,--gc-sections'
390endif
391
Zbigniew Jędrzejewski-Szmeka73f6212019-03-28 09:44:02 +0100392if get_option('b_ndebug') == 'true'
393 # With asserts disabled with get a bunch of warnings about variables which
394 # are used only in the asserts. This is not useful at all, so let's just silence
395 # those warnings.
396 possible_cc_flags += [
397 '-Wno-unused-variable',
398 '-Wno-unused-but-set-variable',
399 ]
400endif
401
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900402add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900403add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900404
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800405if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400406 #include <time.h>
407 #include <inttypes.h>
408 typedef uint64_t usec_t;
409 usec_t now(clockid_t clock);
410 int main(void) {
411 struct timespec now;
412 return 0;
413 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100414''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400415 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400416endif
417
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200418cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400419
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200420has_wstringop_truncation = cc.has_argument('-Wstringop-truncation')
421
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400422#####################################################################
423# compilation result tests
424
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400425conf.set('_GNU_SOURCE', true)
426conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200427conf.set10('HAVE_WSTRINGOP_TRUNCATION', has_wstringop_truncation)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400428
429conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
430conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
431conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
432conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
433conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
434conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
435conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
436
437decl_headers = '''
438#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100439#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400440'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400441
442foreach decl : ['char16_t',
443 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100444 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400445 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400446
447 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200448 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
449
450 if decl == 'struct statx'
451 if have
452 want_linux_stat_h = false
453 else
454 have = cc.sizeof(decl,
455 prefix : decl_headers + '#include <linux/stat.h>',
456 args : '-D_GNU_SOURCE') > 0
457 want_linux_stat_h = have
458 endif
459 endif
460
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200461 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400462endforeach
463
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200464conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700465
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400466foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200467 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400468endforeach
469
470foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100471 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100472 ['gettid', '''#include <sys/types.h>
473 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100474 ['pivot_root', '''#include <stdlib.h>
475 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100476 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400477 #include <sys/stat.h>
478 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100479 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100480 ['renameat2', '''#include <stdio.h>
481 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400482 ['kcmp', '''#include <linux/kcmp.h>'''],
483 ['keyctl', '''#include <sys/types.h>
484 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100485 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400486 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200487 ['bpf', '''#include <sys/syscall.h>
488 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100489 ['statx', '''#include <sys/types.h>
490 #include <sys/stat.h>
491 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100492 ['explicit_bzero' , '''#include <string.h>'''],
493 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400494]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400495
Lennart Poettering85db59b2017-12-25 12:01:14 +0100496 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200497 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400498endforeach
499
Lennart Poettering85db59b2017-12-25 12:01:14 +0100500if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200501 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200502 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400503else
504 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200505 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200506 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400507endif
508
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400509#####################################################################
510
Davide Cavalca1485aac2019-02-27 11:19:07 -0500511vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
512 project_source_root,
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100513 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100514 meson.project_version()]
515
Louis Taylord1084aa2019-01-21 21:45:36 +0000516version_h = vcs_tag(
517 input : 'src/version/version.h.in',
518 output : 'version.h',
519 command: vcs_tagger)
520
521versiondep = declare_dependency(sources: version_h)
522
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400523sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400524awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400525m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400526stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400527git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100528env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100529perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400530
Davide Cavalca1485aac2019-02-27 11:19:07 -0500531meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400532mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400533test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
534splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400535
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400536# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
537# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500538progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400539 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400540 ['kmod', '/usr/bin/kmod' ],
541 ['kexec', '/usr/sbin/kexec' ],
542 ['sulogin', '/usr/sbin/sulogin' ],
543 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
544 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
545 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
546 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
547 ]
548foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400549 path = get_option(prog[0] + '-path')
550 if path != ''
551 message('Using @1@ for @0@'.format(prog[0], path))
552 else
553 exe = find_program(prog[0],
554 '/usr/sbin/' + prog[0],
555 '/sbin/' + prog[0],
556 required: false)
557 path = exe.found() ? exe.path() : prog[1]
558 endif
559 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
560 conf.set_quoted(name, path)
561 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400562endforeach
563
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500564conf.set_quoted('TELINIT', get_option('telinit-path'))
565
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400566if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100567 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400568endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400569
570############################################################
571
572gperf = find_program('gperf')
573
574gperf_test_format = '''
575#include <string.h>
576const char * in_word_set(const char *, @0@);
577@1@
578'''
579gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
580gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
581gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
582if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400583 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400584else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400585 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
586 if cc.compiles(gperf_test)
587 gperf_len_type = 'unsigned'
588 else
589 error('unable to determine gperf len type')
590 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400591endif
592message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400593conf.set('GPERF_LEN_TYPE', gperf_len_type,
594 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400595
596############################################################
597
598if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400599 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400600endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100601foreach header : ['crypt.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400602 'linux/memfd.h',
603 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200604 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400605 'valgrind/memcheck.h',
606 'valgrind/valgrind.h',
607 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400608
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200609 conf.set10('HAVE_' + header.underscorify().to_upper(),
610 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400611endforeach
612
613############################################################
614
615conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400616conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
617gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400618
619default_hierarchy = get_option('default-hierarchy')
620conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
621 description : 'default cgroup hierarchy as string')
622if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400623 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400624elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400625 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400626else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400627 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400628endif
629
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100630default_net_naming_scheme = get_option('default-net-naming-scheme')
631conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
632
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400633time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900634if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400635 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900636 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400637endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400638conf.set('TIME_EPOCH', time_epoch)
639
640system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900641if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400642 system_uid_max = run_command(
643 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800644 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
645 '/etc/login.defs').stdout().strip()
646 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900647 system_uid_max = 999
648 else
649 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800650 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400651endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400652conf.set('SYSTEM_UID_MAX', system_uid_max)
653substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400654
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400655system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900656if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400657 system_gid_max = run_command(
658 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800659 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
660 '/etc/login.defs').stdout().strip()
661 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900662 system_gid_max = 999
663 else
664 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800665 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400666endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400667conf.set('SYSTEM_GID_MAX', system_gid_max)
668substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400669
Yu Watanabeac093402018-05-10 16:04:16 +0900670dynamic_uid_min = get_option('dynamic-uid-min')
671dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100672conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
673conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
674substs.set('dynamicuidmin', dynamic_uid_min)
675substs.set('dynamicuidmax', dynamic_uid_max)
676
Yu Watanabeac093402018-05-10 16:04:16 +0900677container_uid_base_min = get_option('container-uid-base-min')
678container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100679conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
680conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
681substs.set('containeruidbasemin', container_uid_base_min)
682substs.set('containeruidbasemax', container_uid_base_max)
683
Lennart Poetteringafde4572017-12-05 11:00:24 +0100684nobody_user = get_option('nobody-user')
685nobody_group = get_option('nobody-group')
686
Chen Qi2484bff2018-07-23 14:53:09 +0800687if not meson.is_cross_build()
688 getent_result = run_command('getent', 'passwd', '65534')
689 if getent_result.returncode() == 0
690 name = getent_result.stdout().split(':')[0]
691 if name != nobody_user
692 warning('\n' +
693 '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) +
694 'Your build will result in an user table setup that is incompatible with the local system.')
695 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100696 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800697 id_result = run_command('id', '-u', nobody_user)
698 if id_result.returncode() == 0
699 id = id_result.stdout().to_int()
700 if id != 65534
701 warning('\n' +
702 '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) +
703 'Your build will result in an user table setup that is incompatible with the local system.')
704 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100705 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100706
Chen Qi2484bff2018-07-23 14:53:09 +0800707 getent_result = run_command('getent', 'group', '65534')
708 if getent_result.returncode() == 0
709 name = getent_result.stdout().split(':')[0]
710 if name != nobody_group
711 warning('\n' +
712 '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) +
713 'Your build will result in an group table setup that is incompatible with the local system.')
714 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100715 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800716 id_result = run_command('id', '-g', nobody_group)
717 if id_result.returncode() == 0
718 id = id_result.stdout().to_int()
719 if id != 65534
720 warning('\n' +
721 '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) +
722 'Your build will result in an group table setup that is incompatible with the local system.')
723 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100724 endif
725endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900726if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900727 warning('\n' +
728 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
729 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900730endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100731
732conf.set_quoted('NOBODY_USER_NAME', nobody_user)
733conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900734substs.set('NOBODY_USER_NAME', nobody_user)
735substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100736
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400737tty_gid = get_option('tty-gid')
738conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400739substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400740
Ikey Doherty84786b82017-12-03 12:28:23 +0000741# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900742users_gid = get_option('users-gid')
743substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000744
Yu Watanabe348b4432018-05-07 18:17:35 +0900745conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
746conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400747
Michael Bieblace5e312018-07-13 23:36:13 +0200748dev_kvm_mode = get_option('dev-kvm-mode')
749substs.set('DEV_KVM_MODE', dev_kvm_mode)
750conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100751group_render_mode = get_option('group-render-mode')
752substs.set('GROUP_RENDER_MODE', group_render_mode)
753conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400754
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400755kill_user_processes = get_option('default-kill-user-processes')
756conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100757conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400758substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400759
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400760dns_servers = get_option('dns-servers')
761conf.set_quoted('DNS_SERVERS', dns_servers)
762substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400763
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400764ntp_servers = get_option('ntp-servers')
765conf.set_quoted('NTP_SERVERS', ntp_servers)
766substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400767
Dave Reisner8ca9e922018-12-28 07:38:36 -0500768default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900769if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800770 if not meson.is_cross_build()
771 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
772 default_locale = run_command(choose_default_locale_sh).stdout().strip()
773 else
774 default_locale = 'C.UTF-8'
775 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900776endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500777conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
778
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400779conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
780
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400781substs.set('SUSHELL', get_option('debug-shell'))
782substs.set('DEBUGTTY', get_option('debug-tty'))
783
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200784enable_debug_hashmap = false
785enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900786enable_debug_siphash = false
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900787enable_debug_udev = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200788foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900789 if name == 'hashmap'
790 enable_debug_hashmap = true
791 elif name == 'mmap-cache'
792 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900793 elif name == 'siphash'
794 enable_debug_siphash = true
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900795 elif name == 'udev'
796 enable_debug_udev = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900797 else
798 message('unknown debug option "@0@", ignoring'.format(name))
799 endif
800endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200801conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
802conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900803conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900804conf.set10('ENABLE_DEBUG_UDEV', enable_debug_udev)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400805
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200806conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200807conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200808
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400809#####################################################################
810
811threads = dependency('threads')
812librt = cc.find_library('rt')
813libm = cc.find_library('m')
814libdl = cc.find_library('dl')
815libcrypt = cc.find_library('crypt')
816
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400817libcap = dependency('libcap', required : false)
818if not libcap.found()
819 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
820 libcap = cc.find_library('cap')
821endif
822
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400823libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100824 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400825
826want_seccomp = get_option('seccomp')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000827if want_seccomp != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400828 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400829 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400830 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200831 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200833 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400834 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400835endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200836conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400837
838want_selinux = get_option('selinux')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000839if want_selinux != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400840 libselinux = dependency('libselinux',
841 version : '>= 2.1.9',
842 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200843 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400844else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200845 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400846 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400847endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200848conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400849
850want_apparmor = get_option('apparmor')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000851if want_apparmor != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400852 libapparmor = dependency('libapparmor',
853 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200854 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400855else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200856 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400857 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400858endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200859conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400860
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400861smack_run_label = get_option('smack-run-label')
862if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400863 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400864endif
865
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400866want_polkit = get_option('polkit')
867install_polkit = false
868install_polkit_pkla = false
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000869if want_polkit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400870 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400871
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400872 libpolkit = dependency('polkit-gobject-1',
873 required : false)
874 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
875 message('Old polkit detected, will install pkla files')
876 install_polkit_pkla = true
877 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400878endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200879conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400880
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400881want_acl = get_option('acl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000882if want_acl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400883 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200884 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400885else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200886 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400887 libacl = []
888endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200889conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400890
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400891want_audit = get_option('audit')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000892if want_audit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400893 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200894 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400895else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200896 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400897 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400898endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400900
901want_blkid = get_option('blkid')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000902if want_blkid != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400903 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200904 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200906 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400907 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400908endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200909conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400910
911want_kmod = get_option('kmod')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000912if want_kmod != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400913 libkmod = dependency('libkmod',
914 version : '>= 15',
915 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200916 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400917else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200918 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400919 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400920endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200921conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400922
923want_pam = get_option('pam')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000924if want_pam != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400925 libpam = cc.find_library('pam', required : want_pam == 'true')
926 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200927 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400928else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200929 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400930 libpam = []
931 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400932endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200933conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400934
935want_microhttpd = get_option('microhttpd')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000936if want_microhttpd != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400937 libmicrohttpd = dependency('libmicrohttpd',
938 version : '>= 0.9.33',
939 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200940 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400941else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200942 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400943 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400944endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200945conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400946
947want_libcryptsetup = get_option('libcryptsetup')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000948if want_libcryptsetup != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400949 libcryptsetup = dependency('libcryptsetup',
950 version : '>= 1.6.0',
951 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200952 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100953 have_sector = cc.has_member(
954 'struct crypt_params_plain',
955 'sector_size',
956 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400957else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200958 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100959 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400960 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400961endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200962conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100963conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400964
965want_libcurl = get_option('libcurl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000966if want_libcurl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400967 libcurl = dependency('libcurl',
968 version : '>= 7.32.0',
969 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200970 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400971else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200972 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400973 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400974endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200975conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400976
977want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400978want_libidn2 = get_option('libidn2')
979if want_libidn == 'true' and want_libidn2 == 'true'
980 error('libidn and libidn2 cannot be requested simultaneously')
981endif
982
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000983if want_libidn != 'false' and want_libidn2 != 'true' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400984 libidn = dependency('libidn',
985 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200986 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400987else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200988 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400989 libidn = []
990endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200991conf.set10('HAVE_LIBIDN', have)
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000992if not have and want_libidn2 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400993 # libidn is used for both libidn and libidn2 objects
994 libidn = dependency('libidn2',
995 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996 have = libidn.found()
997else
998 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400999endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001000conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001001
1002want_libiptc = get_option('libiptc')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001003if want_libiptc != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001004 libiptc = dependency('libiptc',
1005 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001006 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001007else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001008 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001009 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001010endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001011conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001012
1013want_qrencode = get_option('qrencode')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001014if want_qrencode != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001015 libqrencode = dependency('libqrencode',
1016 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001017 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001018else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001019 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001020 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001021endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001022conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001023
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001024want_gcrypt = get_option('gcrypt')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001025if want_gcrypt != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001026 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1027 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001028 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001029else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001030 have = false
1031endif
1032if not have
1033 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001034 libgcrypt = []
1035 libgpg_error = []
1036endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001037conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001038
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001039want_gnutls = get_option('gnutls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001040if want_gnutls != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001041 libgnutls = dependency('gnutls',
1042 version : '>= 3.1.4',
1043 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001044 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001045else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001046 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001047 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001048endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001049conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001050
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001051want_openssl = get_option('openssl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001052if want_openssl != 'false' and not skip_deps
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001053 libopenssl = dependency('openssl',
1054 version : '>= 1.1.0',
1055 required : want_openssl == 'true')
1056 have = libopenssl.found()
1057else
1058 have = false
1059 libopenssl = []
1060endif
1061conf.set10('HAVE_OPENSSL', have)
1062
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001063want_elfutils = get_option('elfutils')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001064if want_elfutils != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001065 libdw = dependency('libdw',
1066 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001067 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001068else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001069 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001070 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001071endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001072conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001073
1074want_zlib = get_option('zlib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001075if want_zlib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001076 libz = dependency('zlib',
1077 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001079else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001081 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001082endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001083conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001084
1085want_bzip2 = get_option('bzip2')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001086if want_bzip2 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001087 libbzip2 = cc.find_library('bz2',
1088 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001089 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001090else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001091 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001092 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001093endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001094conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001095
1096want_xz = get_option('xz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001097if want_xz != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001098 libxz = dependency('liblzma',
1099 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001100 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001101else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001102 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001103 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001104endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001105conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001106
1107want_lz4 = get_option('lz4')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001108if want_lz4 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001109 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001110 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001111 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001112 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001113else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001114 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001115 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001116endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001117conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001118
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001119want_xkbcommon = get_option('xkbcommon')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001120if want_xkbcommon != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001121 libxkbcommon = dependency('xkbcommon',
1122 version : '>= 0.3.0',
1123 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001124 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001125else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001126 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001127 libxkbcommon = []
1128endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001129conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001130
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001131want_pcre2 = get_option('pcre2')
1132if want_pcre2 != 'false'
1133 libpcre2 = dependency('libpcre2-8',
1134 required : want_pcre2 == 'true')
1135 have = libpcre2.found()
1136else
1137 have = false
1138 libpcre2 = []
1139endif
1140conf.set10('HAVE_PCRE2', have)
1141
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001142want_glib = get_option('glib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001143if want_glib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001144 libglib = dependency('glib-2.0',
1145 version : '>= 2.22.0',
1146 required : want_glib == 'true')
1147 libgobject = dependency('gobject-2.0',
1148 version : '>= 2.22.0',
1149 required : want_glib == 'true')
1150 libgio = dependency('gio-2.0',
1151 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001152 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001153else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001154 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001155 libglib = []
1156 libgobject = []
1157 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001158endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001159conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001160
1161want_dbus = get_option('dbus')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001162if want_dbus != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001163 libdbus = dependency('dbus-1',
1164 version : '>= 1.3.2',
1165 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001166 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001167else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001168 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001169 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001170endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001171conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001172
Yu Watanabe42303dc2017-06-18 05:22:32 +09001173default_dnssec = get_option('default-dnssec')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001174if skip_deps
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001175 default_dnssec = 'no'
1176endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001177if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001178 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1179 default_dnssec = 'no'
1180endif
1181conf.set('DEFAULT_DNSSEC_MODE',
1182 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1183substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1184
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001185dns_over_tls = get_option('dns-over-tls')
1186if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001187 if dns_over_tls == 'openssl'
1188 have_gnutls = false
1189 else
1190 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1191 if dns_over_tls == 'gnutls' and not have_gnutls
1192 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1193 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001194 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001195 if dns_over_tls == 'gnutls' or have_gnutls
1196 have_openssl = false
1197 else
1198 have_openssl = conf.get('HAVE_OPENSSL') == 1
1199 if dns_over_tls != 'auto' and not have_openssl
1200 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1201 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1202 endif
1203 endif
1204 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001205else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001206 have = false
1207 have_gnutls = false
1208 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001209endif
1210conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001211conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1212conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001213
Iwan Timmerc9299be2018-06-13 20:26:24 +02001214default_dns_over_tls = get_option('default-dns-over-tls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001215if skip_deps
Iwan Timmerc9299be2018-06-13 20:26:24 +02001216 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001217endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001218if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1219 message('default-dns-over-tls cannot be set to opportunistic when DNS-over-TLS support is disabled. Setting default-dns-over-tls to no.')
Iwan Timmerc9299be2018-06-13 20:26:24 +02001220 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001221endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001222conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1223 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1224substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001225
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001226want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001227if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001228 have = (conf.get('HAVE_LIBCURL') == 1 and
1229 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001230 conf.get('HAVE_XZ') == 1 and
1231 conf.get('HAVE_GCRYPT') == 1)
1232 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001233 error('importd support was requested, but dependencies are not available')
1234 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001235else
1236 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001237endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001238conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001239
1240want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001241if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001242 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1243 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001244 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1245 # it's possible to build one without the other. Complain only if
Ben Boeckel5238e952019-04-26 20:22:40 -04001246 # support was explicitly requested. The auxiliary files like sysusers
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001247 # config should be installed when any of the programs are built.
1248 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1249 error('remote support was requested, but dependencies are not available')
1250 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001251 have = have_deps[0] or have_deps[1]
1252else
1253 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001254endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001255conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001256
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001257foreach term : ['utmp',
1258 'hibernate',
1259 'environment-d',
1260 'binfmt',
1261 'coredump',
1262 'resolve',
1263 'logind',
1264 'hostnamed',
1265 'localed',
1266 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001267 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001268 'networkd',
1269 'timedated',
1270 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001271 'firstboot',
1272 'randomseed',
1273 'backlight',
1274 'vconsole',
1275 'quotacheck',
1276 'sysusers',
1277 'tmpfiles',
1278 'hwdb',
1279 'rfkill',
1280 'ldconfig',
1281 'efi',
1282 'tpm',
1283 'ima',
1284 'smack',
1285 'gshadow',
1286 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001287 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001288 'nss-systemd']
1289 have = get_option(term)
1290 name = 'ENABLE_' + term.underscorify().to_upper()
1291 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001292endforeach
1293
Yu Watanabe08540a92018-07-18 09:25:57 +09001294foreach tuple : [['nss-mymachines', 'machined'],
1295 ['nss-resolve', 'resolve']]
1296 want = get_option(tuple[0])
1297 if want != 'false'
1298 have = get_option(tuple[1])
1299 if want == 'true' and not have
1300 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1301 endif
1302 else
1303 have = false
1304 endif
1305 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1306 conf.set10(name, have)
1307endforeach
1308
1309enable_nss = false
1310foreach term : ['ENABLE_NSS_MYHOSTNAME',
1311 'ENABLE_NSS_MYMACHINES',
1312 'ENABLE_NSS_RESOLVE',
1313 'ENABLE_NSS_SYSTEMD']
1314 if conf.get(term) == 1
1315 enable_nss = true
1316 endif
1317endforeach
1318conf.set10('ENABLE_NSS', enable_nss)
1319
Yu Watanabe348b4432018-05-07 18:17:35 +09001320conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001321
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001322tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001323fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001324
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001325conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001326
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001327#####################################################################
1328
1329if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001330 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001331
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001332 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001333 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001334 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001335 elif efi_arch == 'x86_64'
1336 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001337 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001338 elif efi_arch == 'arm'
1339 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001340 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001341 elif efi_arch == 'aarch64'
1342 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001343 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001344 else
1345 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001346 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001347 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001348
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001349 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001350 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001351
Yu Watanabeac093402018-05-10 16:04:16 +09001352 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001353else
1354 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001355endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001356conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001357
1358#####################################################################
1359
1360config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001361 output : 'config.h',
1362 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001363
Yu Watanabe348b4432018-05-07 18:17:35 +09001364meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1365
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001366includes = include_directories('src/basic',
1367 'src/shared',
1368 'src/systemd',
1369 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001370 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001371 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001372 'src/resolve',
1373 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001374 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001375 'src/login',
1376 'src/udev',
1377 'src/libudev',
1378 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001379 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001380 'src/libsystemd/sd-bus',
1381 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001382 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001383 'src/libsystemd/sd-hwdb',
1384 'src/libsystemd/sd-id128',
1385 'src/libsystemd/sd-netlink',
1386 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001387 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001388 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001389 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001390
1391add_project_arguments('-include', 'config.h', language : 'c')
1392
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001393generate_gperfs = find_program('tools/generate-gperfs.py')
1394
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001395subdir('po')
1396subdir('catalog')
1397subdir('src/systemd')
1398subdir('src/basic')
1399subdir('src/libsystemd')
1400subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001401subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001402subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001403
1404libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001405 'journal-core',
1406 libjournal_core_sources,
1407 journald_gperf_c,
1408 include_directories : includes,
1409 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001410
Davide Cavalca1485aac2019-02-27 11:19:07 -05001411libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001412libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001413 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001414 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001415 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001416 include_directories : includes,
1417 link_args : ['-shared',
1418 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001419 link_with : [libbasic,
1420 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001421 link_whole : [libsystemd_static,
1422 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001423 dependencies : [threads,
1424 librt,
1425 libxz,
1426 liblz4],
1427 link_depends : libsystemd_sym,
1428 install : true,
1429 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001430
Davide Cavalca70848ec2018-04-09 02:43:35 -07001431static_libsystemd = get_option('static-libsystemd')
1432static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1433
1434install_libsystemd_static = static_library(
1435 'systemd',
1436 libsystemd_sources,
1437 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001438 basic_sources,
1439 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001440 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001441 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001442 build_by_default : static_libsystemd != 'false',
1443 install : static_libsystemd != 'false',
1444 install_dir : rootlibdir,
1445 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1446 dependencies : [threads,
1447 librt,
1448 libxz,
1449 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001450 libcap,
1451 libblkid,
1452 libmount,
1453 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001454 libgcrypt],
1455 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1456
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001457############################################################
1458
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001459# binaries that have --help and are intended for use by humans,
1460# usually, but not always, installed in /bin.
1461public_programs = []
1462
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001463subdir('src/libudev')
1464subdir('src/shared')
1465subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001466subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001467subdir('src/udev')
1468subdir('src/network')
1469
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001470subdir('src/analyze')
1471subdir('src/journal-remote')
1472subdir('src/coredump')
1473subdir('src/hostname')
1474subdir('src/import')
1475subdir('src/kernel-install')
1476subdir('src/locale')
1477subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001478subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001479subdir('src/nspawn')
1480subdir('src/resolve')
1481subdir('src/timedate')
1482subdir('src/timesync')
1483subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001484subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001485
1486subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001487subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001488subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001489subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001490
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001491############################################################
1492
1493# only static linking apart from libdl, to make sure that the
1494# module is linked to all libraries that it uses.
1495test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001496 'test-dlopen',
1497 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001498 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001499 include_directories : includes,
1500 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001501 dependencies : [libdl],
1502 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001503
Yu Watanabe08540a92018-07-18 09:25:57 +09001504foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001505 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001506 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1507 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001508
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001509 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001510 if condition
1511 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001512
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001513 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001514 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001515
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001516 nss = shared_library(
1517 'nss_' + module,
1518 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001519 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001520 version : '2',
1521 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001522 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1523 link_args : ['-Wl,-z,nodelete',
1524 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001525 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001526 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001527 libbasic],
1528 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001529 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001530 link_depends : sym,
1531 install : true,
1532 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001533
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001534 # We cannot use shared_module because it does not support version suffix.
1535 # Unfortunately shared_library insists on creating the symlink…
1536 meson.add_install_script('sh', '-c',
1537 'rm $DESTDIR@0@/libnss_@1@.so'
1538 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001539
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001540 if want_tests != 'false'
1541 test('dlopen-nss_' + module,
1542 test_dlopen,
1543 # path to dlopen must include a slash
1544 args : nss.full_path())
1545 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001546 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001547endforeach
1548
1549############################################################
1550
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001551executable('systemd',
1552 systemd_sources,
1553 include_directories : includes,
1554 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001555 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001556 dependencies : [versiondep,
1557 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001558 librt,
1559 libseccomp,
1560 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001561 libmount,
1562 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001563 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001564 install : true,
1565 install_dir : rootlibexecdir)
1566
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001567meson.add_install_script(meson_make_symlink,
1568 join_paths(rootlibexecdir, 'systemd'),
1569 join_paths(rootsbindir, 'init'))
1570
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001571exe = executable('systemd-analyze',
1572 systemd_analyze_sources,
1573 include_directories : includes,
1574 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001575 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001576 dependencies : [versiondep,
1577 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001578 librt,
1579 libseccomp,
1580 libselinux,
1581 libmount,
1582 libblkid],
1583 install_rpath : rootlibexecdir,
1584 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001585public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001586
1587executable('systemd-journald',
1588 systemd_journald_sources,
1589 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001590 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001591 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001592 dependencies : [threads,
1593 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001594 liblz4,
1595 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001596 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001597 install : true,
1598 install_dir : rootlibexecdir)
1599
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001600exe = executable('systemd-cat',
1601 systemd_cat_sources,
1602 include_directories : includes,
1603 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001604 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001605 dependencies : [threads],
1606 install_rpath : rootlibexecdir,
1607 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001608public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001609
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001610exe = executable('journalctl',
1611 journalctl_sources,
1612 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001613 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001614 dependencies : [threads,
1615 libqrencode,
1616 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001617 liblz4,
1618 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001619 install_rpath : rootlibexecdir,
1620 install : true,
1621 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001622public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001623
1624executable('systemd-getty-generator',
1625 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001626 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001627 link_with : [libshared],
1628 install_rpath : rootlibexecdir,
1629 install : true,
1630 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001631
1632executable('systemd-debug-generator',
1633 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001634 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001635 link_with : [libshared],
1636 install_rpath : rootlibexecdir,
1637 install : true,
1638 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001639
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001640executable('systemd-run-generator',
1641 'src/run-generator/run-generator.c',
1642 include_directories : includes,
1643 link_with : [libshared],
1644 install_rpath : rootlibexecdir,
1645 install : true,
1646 install_dir : systemgeneratordir)
1647
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001648executable('systemd-fstab-generator',
1649 'src/fstab-generator/fstab-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001650 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01001651 link_with : [libcore_shared,
1652 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001653 install_rpath : rootlibexecdir,
1654 install : true,
1655 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001656
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001657if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001658 executable('30-systemd-environment-d-generator',
1659 'src/environment-d-generator/environment-d-generator.c',
1660 include_directories : includes,
1661 link_with : [libshared],
1662 install_rpath : rootlibexecdir,
1663 install : true,
1664 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001665
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001666 meson.add_install_script(meson_make_symlink,
1667 join_paths(sysconfdir, 'environment'),
1668 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001669endif
1670
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001671if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001672 executable('systemd-hibernate-resume-generator',
1673 'src/hibernate-resume/hibernate-resume-generator.c',
1674 include_directories : includes,
1675 link_with : [libshared],
1676 install_rpath : rootlibexecdir,
1677 install : true,
1678 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001679
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001680 executable('systemd-hibernate-resume',
1681 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001682 include_directories : includes,
1683 link_with : [libshared],
1684 install_rpath : rootlibexecdir,
1685 install : true,
1686 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001687endif
1688
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001689if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001690 executable('systemd-gpt-auto-generator',
1691 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001692 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001693 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001694 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001695 dependencies : libblkid,
1696 install_rpath : rootlibexecdir,
1697 install : true,
1698 install_dir : systemgeneratordir)
1699
1700 exe = executable('systemd-dissect',
1701 'src/dissect/dissect.c',
1702 include_directories : includes,
1703 link_with : [libshared],
1704 install_rpath : rootlibexecdir,
1705 install : true,
1706 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001707 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001708endif
1709
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001710if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001711 executable('systemd-resolved',
1712 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001713 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001714 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001715 libbasic_gcrypt,
1716 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001717 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001718 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001719 install : true,
1720 install_dir : rootlibexecdir)
1721
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001722 exe = executable('resolvectl',
1723 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001724 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001725 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001726 libbasic_gcrypt,
1727 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001728 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001729 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001730 libm,
1731 libidn],
1732 install_rpath : rootlibexecdir,
1733 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001734 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001735
1736 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001737 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001738 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001739
1740 meson.add_install_script(meson_make_symlink,
1741 join_paths(bindir, 'resolvectl'),
1742 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001743endif
1744
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001745if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001746 executable('systemd-logind',
1747 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001748 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001749 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001750 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001751 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001752 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001753 install_rpath : rootlibexecdir,
1754 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001755 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001756
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001757 exe = executable('loginctl',
1758 loginctl_sources,
1759 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001760 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001761 dependencies : [threads,
1762 liblz4,
1763 libxz],
1764 install_rpath : rootlibexecdir,
1765 install : true,
1766 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001767 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001768
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001769 exe = executable('systemd-inhibit',
1770 'src/login/inhibit.c',
1771 include_directories : includes,
1772 link_with : [libshared],
1773 install_rpath : rootlibexecdir,
1774 install : true,
1775 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001776 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001777
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001778 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001779 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001780 pam_systemd = shared_library(
1781 'pam_systemd',
1782 pam_systemd_c,
1783 name_prefix : '',
1784 include_directories : includes,
1785 link_args : ['-shared',
1786 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001787 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001788 libshared_static],
1789 dependencies : [threads,
1790 libpam,
1791 libpam_misc],
1792 link_depends : pam_systemd_sym,
1793 install : true,
1794 install_dir : pamlibdir)
1795
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001796 if want_tests != 'false'
1797 test('dlopen-pam_systemd',
1798 test_dlopen,
1799 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001800 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001801 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001802 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001803
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001804 executable('systemd-user-runtime-dir',
1805 user_runtime_dir_sources,
1806 include_directories : includes,
1807 link_with : [libshared],
1808 install_rpath : rootlibexecdir,
1809 install : true,
1810 install_dir : rootlibexecdir)
1811endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001812
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001813if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001814 executable('systemd-user-sessions',
1815 'src/user-sessions/user-sessions.c',
1816 include_directories : includes,
1817 link_with : [libshared],
1818 install_rpath : rootlibexecdir,
1819 install : true,
1820 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001821endif
1822
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001823if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001824 exe = executable('bootctl',
1825 'src/boot/bootctl.c',
1826 include_directories : includes,
1827 link_with : [libshared],
1828 dependencies : [libblkid],
1829 install_rpath : rootlibexecdir,
1830 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001831 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001832
1833 executable('systemd-bless-boot',
1834 'src/boot/bless-boot.c',
1835 include_directories : includes,
1836 link_with : [libshared],
1837 dependencies : [libblkid],
1838 install_rpath : rootlibexecdir,
1839 install : true,
1840 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001841
1842 executable('systemd-bless-boot-generator',
1843 'src/boot/bless-boot-generator.c',
1844 include_directories : includes,
1845 link_with : [libshared],
1846 install_rpath : rootlibexecdir,
1847 install : true,
1848 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001849endif
1850
Lennart Poetteringf876f532018-06-25 16:07:33 +02001851executable('systemd-boot-check-no-failures',
1852 'src/boot/boot-check-no-failures.c',
1853 include_directories : includes,
1854 link_with : [libshared],
1855 dependencies : [libblkid],
1856 install_rpath : rootlibexecdir,
1857 install : true,
1858 install_dir : rootlibexecdir)
1859
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001860exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1861 include_directories : includes,
1862 link_with : [libshared],
1863 dependencies : [threads],
1864 install_rpath : rootlibexecdir,
1865 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001866public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001867
Felipe Satelerf3794362018-05-22 15:08:57 -04001868
1869if get_option('link-systemctl-shared')
1870 systemctl_link_with = [libshared]
1871else
1872 systemctl_link_with = [libsystemd_static,
1873 libshared_static,
1874 libjournal_client,
1875 libbasic_gcrypt]
1876endif
1877
Lennart Poettering63a3b3c2019-03-22 20:05:08 +01001878exe = executable('systemctl',
1879 'src/systemctl/systemctl.c',
1880 'src/systemctl/sysv-compat.h',
1881 'src/systemctl/sysv-compat.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001882 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001883 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001884 dependencies : [threads,
1885 libcap,
1886 libselinux,
1887 libxz,
1888 liblz4],
1889 install_rpath : rootlibexecdir,
1890 install : true,
1891 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001892public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001893
Lennart Poettering61d05782018-04-16 21:41:40 +02001894if conf.get('ENABLE_PORTABLED') == 1
1895 executable('systemd-portabled',
1896 systemd_portabled_sources,
1897 include_directories : includes,
1898 link_with : [libshared],
1899 dependencies : [threads],
1900 install_rpath : rootlibexecdir,
1901 install : true,
1902 install_dir : rootlibexecdir)
1903
1904 exe = executable('portablectl', 'src/portable/portablectl.c',
1905 include_directories : includes,
1906 link_with : [libshared],
1907 dependencies : [threads],
1908 install_rpath : rootlibexecdir,
1909 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001910 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001911 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001912endif
1913
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001914foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1915 meson.add_install_script(meson_make_symlink,
1916 join_paths(rootbindir, 'systemctl'),
1917 join_paths(rootsbindir, alias))
1918endforeach
1919
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001920if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001921 executable('systemd-backlight',
1922 'src/backlight/backlight.c',
1923 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001924 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001925 install_rpath : rootlibexecdir,
1926 install : true,
1927 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001928endif
1929
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001930if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001931 executable('systemd-rfkill',
1932 'src/rfkill/rfkill.c',
1933 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001934 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001935 install_rpath : rootlibexecdir,
1936 install : true,
1937 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001938endif
1939
1940executable('systemd-system-update-generator',
1941 'src/system-update-generator/system-update-generator.c',
1942 include_directories : includes,
1943 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001944 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001945 install : true,
1946 install_dir : systemgeneratordir)
1947
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001948if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001949 executable('systemd-cryptsetup',
1950 'src/cryptsetup/cryptsetup.c',
1951 include_directories : includes,
1952 link_with : [libshared],
1953 dependencies : [libcryptsetup],
1954 install_rpath : rootlibexecdir,
1955 install : true,
1956 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001957
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001958 executable('systemd-cryptsetup-generator',
1959 'src/cryptsetup/cryptsetup-generator.c',
1960 include_directories : includes,
1961 link_with : [libshared],
1962 dependencies : [libcryptsetup],
1963 install_rpath : rootlibexecdir,
1964 install : true,
1965 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001966
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001967 executable('systemd-veritysetup',
1968 'src/veritysetup/veritysetup.c',
1969 include_directories : includes,
1970 link_with : [libshared],
1971 dependencies : [libcryptsetup],
1972 install_rpath : rootlibexecdir,
1973 install : true,
1974 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001975
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001976 executable('systemd-veritysetup-generator',
1977 'src/veritysetup/veritysetup-generator.c',
1978 include_directories : includes,
1979 link_with : [libshared],
1980 dependencies : [libcryptsetup],
1981 install_rpath : rootlibexecdir,
1982 install : true,
1983 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001984endif
1985
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001986if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001987 executable('systemd-sysv-generator',
1988 'src/sysv-generator/sysv-generator.c',
1989 include_directories : includes,
1990 link_with : [libshared],
1991 install_rpath : rootlibexecdir,
1992 install : true,
1993 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001994
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001995 executable('systemd-rc-local-generator',
1996 'src/rc-local-generator/rc-local-generator.c',
1997 include_directories : includes,
1998 link_with : [libshared],
1999 install_rpath : rootlibexecdir,
2000 install : true,
2001 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002002endif
2003
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002004if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002005 executable('systemd-hostnamed',
2006 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002007 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002008 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002009 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002010 install : true,
2011 install_dir : rootlibexecdir)
2012
2013 exe = executable('hostnamectl',
2014 'src/hostname/hostnamectl.c',
2015 include_directories : includes,
2016 link_with : [libshared],
2017 install_rpath : rootlibexecdir,
2018 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002019 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002020endif
2021
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002022if conf.get('ENABLE_LOCALED') == 1
2023 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002024 # logind will load libxkbcommon.so dynamically on its own
2025 deps = [libdl]
2026 else
2027 deps = []
2028 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002029
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002030 executable('systemd-localed',
2031 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002032 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002033 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002034 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002035 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002036 install : true,
2037 install_dir : rootlibexecdir)
2038
2039 exe = executable('localectl',
2040 localectl_sources,
2041 include_directories : includes,
2042 link_with : [libshared],
2043 install_rpath : rootlibexecdir,
2044 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002045 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002046endif
2047
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002048if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002049 executable('systemd-timedated',
2050 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002051 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002052 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002053 install_rpath : rootlibexecdir,
2054 install : true,
2055 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002056endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002057
Yu Watanabe6129ec82018-05-03 18:07:43 +09002058if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002059 exe = executable('timedatectl',
2060 'src/timedate/timedatectl.c',
2061 include_directories : includes,
2062 install_rpath : rootlibexecdir,
2063 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002064 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002065 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002066 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002067endif
2068
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002069if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002070 executable('systemd-timesyncd',
2071 systemd_timesyncd_sources,
2072 include_directories : includes,
2073 link_with : [libshared],
2074 dependencies : [threads,
2075 libm],
2076 install_rpath : rootlibexecdir,
2077 install : true,
2078 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002079
2080 executable('systemd-time-wait-sync',
2081 'src/time-wait-sync/time-wait-sync.c',
2082 include_directories : includes,
2083 link_with : [libshared],
2084 install_rpath : rootlibexecdir,
2085 install : true,
2086 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002087endif
2088
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002089if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002090 executable('systemd-machined',
2091 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002092 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002093 link_with : [libmachine_core,
2094 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002095 install_rpath : rootlibexecdir,
2096 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002097 install_dir : rootlibexecdir)
2098
2099 exe = executable('machinectl',
2100 'src/machine/machinectl.c',
2101 include_directories : includes,
2102 link_with : [libshared],
2103 dependencies : [threads,
2104 libxz,
2105 liblz4],
2106 install_rpath : rootlibexecdir,
2107 install : true,
2108 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002109 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002110endif
2111
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002112if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002113 executable('systemd-importd',
2114 systemd_importd_sources,
2115 include_directories : includes,
2116 link_with : [libshared],
2117 dependencies : [threads],
2118 install_rpath : rootlibexecdir,
2119 install : true,
2120 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002121
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002122 systemd_pull = executable('systemd-pull',
2123 systemd_pull_sources,
2124 include_directories : includes,
2125 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002126 dependencies : [versiondep,
2127 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002128 libz,
2129 libbzip2,
2130 libxz,
2131 libgcrypt],
2132 install_rpath : rootlibexecdir,
2133 install : true,
2134 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002135
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002136 systemd_import = executable('systemd-import',
2137 systemd_import_sources,
2138 include_directories : includes,
2139 link_with : [libshared],
2140 dependencies : [libcurl,
2141 libz,
2142 libbzip2,
2143 libxz],
2144 install_rpath : rootlibexecdir,
2145 install : true,
2146 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002147
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002148 systemd_import_fs = executable('systemd-import-fs',
2149 systemd_import_fs_sources,
2150 include_directories : includes,
2151 link_with : [libshared],
2152 install_rpath : rootlibexecdir,
2153 install : true,
2154 install_dir : rootlibexecdir)
2155
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002156 systemd_export = executable('systemd-export',
2157 systemd_export_sources,
2158 include_directories : includes,
2159 link_with : [libshared],
2160 dependencies : [libcurl,
2161 libz,
2162 libbzip2,
2163 libxz],
2164 install_rpath : rootlibexecdir,
2165 install : true,
2166 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002167
2168 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002169endif
2170
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002171if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002172 exe = executable('systemd-journal-upload',
2173 systemd_journal_upload_sources,
2174 include_directories : includes,
2175 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002176 dependencies : [versiondep,
2177 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002178 libcurl,
2179 libgnutls,
2180 libxz,
2181 liblz4],
2182 install_rpath : rootlibexecdir,
2183 install : true,
2184 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002185 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002186endif
2187
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002188if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002189 s_j_remote = executable('systemd-journal-remote',
2190 systemd_journal_remote_sources,
2191 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002192 link_with : [libshared,
2193 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002194 dependencies : [threads,
2195 libmicrohttpd,
2196 libgnutls,
2197 libxz,
2198 liblz4],
2199 install_rpath : rootlibexecdir,
2200 install : true,
2201 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002202
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002203 s_j_gatewayd = executable('systemd-journal-gatewayd',
2204 systemd_journal_gatewayd_sources,
2205 include_directories : includes,
2206 link_with : [libshared],
2207 dependencies : [threads,
2208 libmicrohttpd,
2209 libgnutls,
2210 libxz,
2211 liblz4],
2212 install_rpath : rootlibexecdir,
2213 install : true,
2214 install_dir : rootlibexecdir)
2215 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002216endif
2217
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002218if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002219 executable('systemd-coredump',
2220 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002221 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002222 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002223 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002224 libacl,
2225 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002226 libxz,
2227 liblz4],
2228 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002229 install : true,
2230 install_dir : rootlibexecdir)
2231
2232 exe = executable('coredumpctl',
2233 coredumpctl_sources,
2234 include_directories : includes,
2235 link_with : [libshared],
2236 dependencies : [threads,
2237 libxz,
2238 liblz4],
2239 install_rpath : rootlibexecdir,
2240 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002241 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002242endif
2243
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002244if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002245 exe = executable('systemd-binfmt',
2246 'src/binfmt/binfmt.c',
2247 include_directories : includes,
2248 link_with : [libshared],
2249 install_rpath : rootlibexecdir,
2250 install : true,
2251 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002252 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002253
2254 meson.add_install_script('sh', '-c',
2255 mkdir_p.format(binfmtdir))
2256 meson.add_install_script('sh', '-c',
2257 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2258endif
2259
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002260if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002261 executable('systemd-vconsole-setup',
2262 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002263 include_directories : includes,
2264 link_with : [libshared],
2265 install_rpath : rootlibexecdir,
2266 install : true,
2267 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002268endif
2269
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002270if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002271 executable('systemd-random-seed',
2272 'src/random-seed/random-seed.c',
2273 include_directories : includes,
2274 link_with : [libshared],
2275 install_rpath : rootlibexecdir,
2276 install : true,
2277 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002278endif
2279
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002280if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002281 executable('systemd-firstboot',
2282 'src/firstboot/firstboot.c',
2283 include_directories : includes,
2284 link_with : [libshared],
2285 dependencies : [libcrypt],
2286 install_rpath : rootlibexecdir,
2287 install : true,
2288 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002289endif
2290
2291executable('systemd-remount-fs',
2292 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002293 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002294 link_with : [libcore_shared,
2295 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002296 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002297 install : true,
2298 install_dir : rootlibexecdir)
2299
2300executable('systemd-machine-id-setup',
2301 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002302 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002303 link_with : [libcore_shared,
2304 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002305 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002306 install : true,
2307 install_dir : rootbindir)
2308
2309executable('systemd-fsck',
2310 'src/fsck/fsck.c',
2311 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002312 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002313 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002314 install : true,
2315 install_dir : rootlibexecdir)
2316
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002317executable('systemd-growfs',
2318 'src/partition/growfs.c',
2319 include_directories : includes,
2320 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002321 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002322 install_rpath : rootlibexecdir,
2323 install : true,
2324 install_dir : rootlibexecdir)
2325
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002326executable('systemd-makefs',
2327 'src/partition/makefs.c',
2328 include_directories : includes,
2329 link_with : [libshared],
2330 install_rpath : rootlibexecdir,
2331 install : true,
2332 install_dir : rootlibexecdir)
2333
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002334executable('systemd-sleep',
2335 'src/sleep/sleep.c',
2336 include_directories : includes,
2337 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002338 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002339 install : true,
2340 install_dir : rootlibexecdir)
2341
Yu Watanabed25e1272019-01-03 02:32:57 +09002342install_data('src/sleep/sleep.conf',
2343 install_dir : pkgsysconfdir)
2344
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002345exe = executable('systemd-sysctl',
2346 'src/sysctl/sysctl.c',
2347 include_directories : includes,
2348 link_with : [libshared],
2349 install_rpath : rootlibexecdir,
2350 install : true,
2351 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002352public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002353
2354executable('systemd-ac-power',
2355 'src/ac-power/ac-power.c',
2356 include_directories : includes,
2357 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002358 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002359 install : true,
2360 install_dir : rootlibexecdir)
2361
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002362exe = executable('systemd-detect-virt',
2363 'src/detect-virt/detect-virt.c',
2364 include_directories : includes,
2365 link_with : [libshared],
2366 install_rpath : rootlibexecdir,
2367 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002368public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002369
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002370exe = executable('systemd-delta',
2371 'src/delta/delta.c',
2372 include_directories : includes,
2373 link_with : [libshared],
2374 install_rpath : rootlibexecdir,
2375 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002376public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002377
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002378exe = executable('systemd-escape',
2379 'src/escape/escape.c',
2380 include_directories : includes,
2381 link_with : [libshared],
2382 install_rpath : rootlibexecdir,
2383 install : true,
2384 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002385public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002386
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002387exe = executable('systemd-notify',
2388 'src/notify/notify.c',
2389 include_directories : includes,
2390 link_with : [libshared],
2391 install_rpath : rootlibexecdir,
2392 install : true,
2393 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002394public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002395
2396executable('systemd-volatile-root',
2397 'src/volatile-root/volatile-root.c',
2398 include_directories : includes,
2399 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002400 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002401 install : true,
2402 install_dir : rootlibexecdir)
2403
2404executable('systemd-cgroups-agent',
2405 'src/cgroups-agent/cgroups-agent.c',
2406 include_directories : includes,
2407 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002408 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002409 install : true,
2410 install_dir : rootlibexecdir)
2411
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002412exe = executable('systemd-id128',
2413 'src/id128/id128.c',
2414 include_directories : includes,
2415 link_with : [libshared],
2416 install_rpath : rootlibexecdir,
2417 install : true)
2418public_programs += exe
2419
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002420exe = executable('systemd-path',
2421 'src/path/path.c',
2422 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002423 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002424 install_rpath : rootlibexecdir,
2425 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002426public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002427
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002428exe = executable('systemd-ask-password',
2429 'src/ask-password/ask-password.c',
2430 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002431 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002432 install_rpath : rootlibexecdir,
2433 install : true,
2434 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002435public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002436
2437executable('systemd-reply-password',
2438 'src/reply-password/reply-password.c',
2439 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002440 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002441 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002442 install : true,
2443 install_dir : rootlibexecdir)
2444
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002445exe = executable('systemd-tty-ask-password-agent',
2446 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2447 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002448 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002449 install_rpath : rootlibexecdir,
2450 install : true,
2451 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002452public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002453
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002454exe = executable('systemd-cgls',
2455 'src/cgls/cgls.c',
2456 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002457 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002458 install_rpath : rootlibexecdir,
2459 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002460public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002461
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002462exe = executable('systemd-cgtop',
2463 'src/cgtop/cgtop.c',
2464 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002465 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002466 install_rpath : rootlibexecdir,
2467 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002468public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002469
2470executable('systemd-initctl',
2471 'src/initctl/initctl.c',
2472 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002473 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002474 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002475 install : true,
2476 install_dir : rootlibexecdir)
2477
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002478exe = executable('systemd-mount',
2479 'src/mount/mount-tool.c',
2480 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002481 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek7d991d42019-04-04 13:41:47 +02002482 dependencies: [libmount],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002483 install_rpath : rootlibexecdir,
2484 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002485public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002486
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002487meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002488 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002489
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002490exe = executable('systemd-run',
2491 'src/run/run.c',
2492 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002493 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002494 install_rpath : rootlibexecdir,
2495 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002496public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002497
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002498exe = executable('systemd-stdio-bridge',
2499 'src/stdio-bridge/stdio-bridge.c',
2500 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002501 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002502 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002503 install_rpath : rootlibexecdir,
2504 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002505public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002506
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002507exe = executable('busctl',
2508 'src/busctl/busctl.c',
2509 'src/busctl/busctl-introspect.c',
2510 'src/busctl/busctl-introspect.h',
2511 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002512 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002513 install_rpath : rootlibexecdir,
2514 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002515public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002516
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002517if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002518 exe = executable('systemd-sysusers',
2519 'src/sysusers/sysusers.c',
2520 include_directories : includes,
2521 link_with : [libshared],
2522 install_rpath : rootlibexecdir,
2523 install : true,
2524 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002525 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002526endif
2527
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002528if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002529 exe = executable('systemd-tmpfiles',
2530 'src/tmpfiles/tmpfiles.c',
2531 include_directories : includes,
2532 link_with : [libshared],
2533 dependencies : [libacl],
2534 install_rpath : rootlibexecdir,
2535 install : true,
2536 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002537 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002538
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002539 if want_tests != 'false'
2540 test('test-systemd-tmpfiles',
2541 test_systemd_tmpfiles_py,
2542 # https://github.com/mesonbuild/meson/issues/2681
2543 args : exe.full_path())
2544 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002545endif
2546
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002547if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002548 exe = executable('systemd-hwdb',
2549 'src/hwdb/hwdb.c',
2550 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2551 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002552 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002553 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002554 install : true,
2555 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002556 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002557endif
2558
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002559if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002560 executable('systemd-quotacheck',
2561 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002562 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002563 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002564 install_rpath : rootlibexecdir,
2565 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002566 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002567endif
2568
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002569exe = executable('systemd-socket-proxyd',
2570 'src/socket-proxy/socket-proxyd.c',
2571 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002572 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002573 dependencies : [threads],
2574 install_rpath : rootlibexecdir,
2575 install : true,
2576 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002577public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002578
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002579exe = executable('systemd-udevd',
2580 systemd_udevd_sources,
2581 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002582 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002583 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002584 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002585 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002586 dependencies : [versiondep,
2587 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002588 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002589 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002590 libacl,
2591 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002592 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002593 install : true,
2594 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002595public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002596
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002597exe = executable('udevadm',
2598 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002599 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002600 include_directories : includes,
2601 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002602 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002603 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002604 dependencies : [versiondep,
2605 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002606 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002607 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002608 libacl,
2609 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002610 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002611 install : true,
2612 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002613public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002614
2615executable('systemd-shutdown',
2616 systemd_shutdown_sources,
2617 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002618 link_with : [libcore_shared,
2619 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002620 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002621 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002622 install : true,
2623 install_dir : rootlibexecdir)
2624
2625executable('systemd-update-done',
2626 'src/update-done/update-done.c',
2627 include_directories : includes,
2628 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002629 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002630 install : true,
2631 install_dir : rootlibexecdir)
2632
2633executable('systemd-update-utmp',
2634 'src/update-utmp/update-utmp.c',
2635 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002636 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002637 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002638 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002639 install : true,
2640 install_dir : rootlibexecdir)
2641
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002642if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002643 executable('systemd-modules-load',
2644 'src/modules-load/modules-load.c',
2645 include_directories : includes,
2646 link_with : [libshared],
2647 dependencies : [libkmod],
2648 install_rpath : rootlibexecdir,
2649 install : true,
2650 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002651
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002652 meson.add_install_script('sh', '-c',
2653 mkdir_p.format(modulesloaddir))
2654 meson.add_install_script('sh', '-c',
2655 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002656endif
2657
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002658exe = executable('systemd-nspawn',
2659 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002660 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002661 link_with : [libcore_shared,
2662 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002663 libshared],
Franck Bui82384232019-03-22 11:09:08 +01002664 dependencies : [libblkid,
2665 libseccomp],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002666 install_rpath : rootlibexecdir,
2667 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002668public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002669
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002670if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002671 executable('systemd-networkd',
2672 systemd_networkd_sources,
2673 include_directories : includes,
2674 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002675 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002676 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002677 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002678 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002679 install_rpath : rootlibexecdir,
2680 install : true,
2681 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002682
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002683 executable('systemd-networkd-wait-online',
2684 systemd_networkd_wait_online_sources,
2685 include_directories : includes,
2686 link_with : [libnetworkd_core,
2687 libshared],
2688 install_rpath : rootlibexecdir,
2689 install : true,
2690 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002691
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002692 exe = executable('networkctl',
2693 networkctl_sources,
2694 include_directories : includes,
2695 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002696 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002697 install_rpath : rootlibexecdir,
2698 install : true,
2699 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002700 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002701endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002702
2703executable('systemd-sulogin-shell',
2704 ['src/sulogin-shell/sulogin-shell.c'],
2705 include_directories : includes,
2706 link_with : [libshared],
2707 install_rpath : rootlibexecdir,
2708 install : true,
2709 install_dir : rootlibexecdir)
2710
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002711############################################################
2712
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002713custom_target(
2714 'systemd-runtest.env',
2715 output : 'systemd-runtest.env',
2716 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05002717 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002718 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002719 '} >@OUTPUT@'],
2720 build_by_default : true)
2721
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002722foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002723 sources = tuple[0]
2724 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2725 dependencies = tuple[2]
2726 condition = tuple.length() >= 4 ? tuple[3] : ''
2727 type = tuple.length() >= 5 ? tuple[4] : ''
2728 defs = tuple.length() >= 6 ? tuple[5] : []
2729 incs = tuple.length() >= 7 ? tuple[6] : includes
2730 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002731
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002732 name = sources[0].split('/')[-1].split('.')[0]
2733 if type.startswith('timeout=')
2734 timeout = type.split('=')[1].to_int()
2735 type = ''
2736 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002737
2738 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002739 exe = executable(
2740 name,
2741 sources,
2742 include_directories : incs,
2743 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002744 dependencies : [versiondep,
2745 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002746 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002747 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002748 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002749 install : install_tests,
2750 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002751
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002752 if type == 'manual'
2753 message('@0@ is a manual test'.format(name))
2754 elif type == 'unsafe' and want_tests != 'unsafe'
2755 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002756 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002757 test(name, exe,
2758 env : test_env,
2759 timeout : timeout)
2760 endif
2761 else
2762 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2763 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002764endforeach
2765
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002766exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002767 'test-libsystemd-sym',
2768 test_libsystemd_sym_c,
2769 include_directories : includes,
2770 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002771 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002772 install : install_tests,
2773 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002774if want_tests != 'false'
2775 test('test-libsystemd-sym', exe)
2776endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002777
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002778exe = executable(
2779 'test-libsystemd-static-sym',
2780 test_libsystemd_sym_c,
2781 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002782 link_with : [install_libsystemd_static],
2783 dependencies : [threads], # threads is already included in dependencies on the library,
2784 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002785 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002786 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002787 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002788if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002789 test('test-libsystemd-static-sym', exe)
2790endif
2791
2792exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002793 'test-libudev-sym',
2794 test_libudev_sym_c,
2795 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002796 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002797 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002798 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002799 install : install_tests,
2800 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002801if want_tests != 'false'
2802 test('test-libudev-sym', exe)
2803endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002804
2805exe = executable(
2806 'test-libudev-static-sym',
2807 test_libudev_sym_c,
2808 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002809 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002810 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002811 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002812 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002813 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002814if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002815 test('test-libudev-static-sym', exe)
2816endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002817
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002818############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002819
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002820fuzzer_exes = []
2821
Michael Olbrich59967402018-11-11 11:27:35 +01002822if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002823foreach tuple : fuzzers
2824 sources = tuple[0]
2825 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2826 dependencies = tuple[2]
2827 defs = tuple.length() >= 4 ? tuple[3] : []
2828 incs = tuple.length() >= 5 ? tuple[4] : includes
2829
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002830 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002831 dependencies += fuzzing_engine
2832 else
2833 sources += 'src/fuzz/fuzz-main.c'
2834 endif
2835
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00002836 if want_fuzzbuzz
2837 sources += 'src/fuzz/fuzzer-entry-point.c'
2838 endif
2839
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002840 name = sources[0].split('/')[-1].split('.')[0]
2841
2842 fuzzer_exes += executable(
2843 name,
2844 sources,
2845 include_directories : [incs, include_directories('src/fuzz')],
2846 link_with : link_with,
2847 dependencies : dependencies,
2848 c_args : defs,
2849 install : false)
2850endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002851endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002852
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01002853run_target('fuzzers',
2854 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002855 command : ['true'])
2856
2857############################################################
2858
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002859make_directive_index_py = find_program('tools/make-directive-index.py')
2860make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002861xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002862hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002863
2864subdir('units')
2865subdir('sysctl.d')
2866subdir('sysusers.d')
2867subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002868subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002869subdir('hwdb')
2870subdir('network')
2871subdir('man')
2872subdir('shell-completion/bash')
2873subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002874subdir('docs/sysvinit')
2875subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002876
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002877install_subdir('factory/etc',
2878 install_dir : factorydir)
2879
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002880install_data('xorg/50-systemd-user.sh',
2881 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002882install_data('modprobe.d/systemd.conf',
2883 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002884install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002885 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002886 'NEWS',
2887 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302888 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002889 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002890 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302891 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002892 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002893 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002894 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002895 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2896 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002897
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002898meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2899meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2900
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002901############################################################
2902
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002903meson_check_help = find_program('tools/meson-check-help.sh')
2904
2905foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002906 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002907 if want_tests != 'false'
2908 test('check-help-' + name,
2909 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002910 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002911 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002912endforeach
2913
2914############################################################
2915
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002916# Enable tests for all supported sanitizers
2917foreach tuple : sanitizers
2918 sanitizer = tuple[0]
2919 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002920
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002921 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002922 prev = ''
2923 foreach p : fuzz_regression_tests
2924 b = p.split('/')[-2]
2925 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002926
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002927 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002928
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002929 if name != prev
2930 if want_tests == 'false'
2931 message('Not compiling @0@ because tests is set to false'.format(name))
2932 elif slow_tests
2933 exe = custom_target(
2934 name,
2935 output : name,
2936 depends : build,
2937 command : [env, 'ln', '-fs',
2938 join_paths(build.full_path(), b),
2939 '@OUTPUT@'],
2940 build_by_default : true)
2941 else
2942 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2943 endif
2944 endif
2945 prev = name
2946
2947 if want_tests != 'false' and slow_tests
2948 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2949 env,
2950 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05002951 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002952 endif
2953 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002954 endif
2955endforeach
2956
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002957
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002958############################################################
2959
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002960if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002961 all_files = run_command(
2962 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05002963 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002964 'ls-files',
2965 ':/*.[ch]'])
2966 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002967
userwithuide85a6902017-08-09 13:41:44 +00002968 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002969 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002970 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05002971 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00002972 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002973 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05002974 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002975endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002976
2977if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002978 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002979 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002980 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002981 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002982endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002983
2984if git.found()
2985 git_head = run_command(
2986 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05002987 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002988 'rev-parse', 'HEAD']).stdout().strip()
2989 git_head_short = run_command(
2990 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05002991 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002992 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2993
2994 run_target(
2995 'git-snapshot',
2996 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05002997 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002998 git_head_short),
2999 '--prefix', 'systemd-@0@/'.format(git_head),
3000 'HEAD'])
3001endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003002
3003############################################################
3004
Lennart Poettering51b13862017-12-20 12:51:14 +01003005meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3006run_target(
3007 'check-api-docs',
3008 depends : [man, libsystemd, libudev],
3009 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3010
3011############################################################
3012
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003013status = [
3014 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3015
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003016 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003017 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003018 'prefix directory: @0@'.format(prefixdir),
3019 'rootprefix directory: @0@'.format(rootprefixdir),
3020 'sysconf directory: @0@'.format(sysconfdir),
3021 'include directory: @0@'.format(includedir),
3022 'lib directory: @0@'.format(libdir),
3023 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003024 'SysV init scripts: @0@'.format(sysvinit_path),
3025 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003026 'PAM modules directory: @0@'.format(pamlibdir),
3027 'PAM configuration directory: @0@'.format(pamconfdir),
3028 'RPM macros directory: @0@'.format(rpmmacrosdir),
3029 'modprobe.d directory: @0@'.format(modprobedir),
3030 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3031 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3032 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3033 'bash completions directory: @0@'.format(bashcompletiondir),
3034 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003035 'extra start script: @0@'.format(get_option('rc-local')),
3036 'extra stop script: @0@'.format(get_option('halt-local')),
3037 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3038 get_option('debug-tty')),
3039 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003040 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003041 'maximum system UID: @0@'.format(system_uid_max),
3042 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003043 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3044 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3045 'minimum container UID base: @0@'.format(container_uid_base_min),
3046 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003047 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003048 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003049 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003050 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003051 'nobody user name: @0@'.format(nobody_user),
3052 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003053 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003054 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003055
3056 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003057 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003058 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003059 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003060 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
3061 'default locale: @0@'.format(default_locale)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003062
3063alt_dns_servers = '\n '.join(dns_servers.split(' '))
3064alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3065status += [
3066 'default DNS servers: @0@'.format(alt_dns_servers),
3067 'default NTP servers: @0@'.format(alt_ntp_servers)]
3068
3069alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3070 '@@0@'.format(time_epoch)).stdout().strip()
3071status += [
3072 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3073
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003074status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003075 'static libsystemd: @0@'.format(static_libsystemd),
3076 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003077
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003078# TODO:
3079# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3080# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3081# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3082
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003083if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003084 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003085
3086 if have_gnu_efi
3087 status += [
3088 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003089 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003090 'EFI lib directory: @0@'.format(efi_libdir),
3091 'EFI lds directory: @0@'.format(efi_ldsdir),
3092 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003093 endif
3094endif
3095
3096found = []
3097missing = []
3098
3099foreach tuple : [
3100 ['libcryptsetup'],
3101 ['PAM'],
3102 ['AUDIT'],
3103 ['IMA'],
3104 ['AppArmor'],
3105 ['SELinux'],
3106 ['SECCOMP'],
3107 ['SMACK'],
3108 ['zlib'],
3109 ['xz'],
3110 ['lz4'],
3111 ['bzip2'],
3112 ['ACL'],
3113 ['gcrypt'],
3114 ['qrencode'],
3115 ['microhttpd'],
3116 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003117 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003118 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003119 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003120 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003121 ['libidn'],
3122 ['libiptc'],
3123 ['elfutils'],
3124 ['binfmt'],
3125 ['vconsole'],
3126 ['quotacheck'],
3127 ['tmpfiles'],
3128 ['environment.d'],
3129 ['sysusers'],
3130 ['firstboot'],
3131 ['randomseed'],
3132 ['backlight'],
3133 ['rfkill'],
3134 ['logind'],
3135 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003136 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003137 ['importd'],
3138 ['hostnamed'],
3139 ['timedated'],
3140 ['timesyncd'],
3141 ['localed'],
3142 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003143 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003144 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3145 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003146 ['coredump'],
3147 ['polkit'],
3148 ['legacy pkla', install_polkit_pkla],
3149 ['efi'],
3150 ['gnu-efi', have_gnu_efi],
3151 ['kmod'],
3152 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003153 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003154 ['blkid'],
3155 ['dbus'],
3156 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003157 ['nss-myhostname'],
3158 ['nss-mymachines'],
3159 ['nss-resolve'],
3160 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003161 ['hwdb'],
3162 ['tpm'],
3163 ['man pages', want_man],
3164 ['html pages', want_html],
3165 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003166 ['SysV compat'],
3167 ['utmp'],
3168 ['ldconfig'],
3169 ['hibernate'],
3170 ['adm group', get_option('adm-group')],
3171 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003172 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003173 ['debug hashmap'],
3174 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003175 ['debug siphash'],
Yu Watanabe20e97dd2018-11-23 00:28:27 +09003176 ['debug udev'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003177 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003178 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003179 ['link-udev-shared', get_option('link-udev-shared')],
3180 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003181]
3182
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003183 if tuple.length() >= 2
3184 cond = tuple[1]
3185 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003186 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3187 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003188 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003189 endif
3190 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003191 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003192 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003193 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003194 endif
3195endforeach
3196
3197status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003198 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003199 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003200 '',
3201 'disabled features: @0@'.format(', '.join(missing)),
3202 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003203message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003204
3205if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003206 warning('\n' +
3207 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3208 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3209 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003210endif