blob: db9eba9d5404e04a0d188225f2e2d922c4fcae56 [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-Szmek5c231282017-04-04 23:03:47 -0400286
287#####################################################################
288
289cc = meson.get_compiler('c')
290pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400291check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100292meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400293
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200294want_tests = get_option('tests')
295slow_tests = want_tests != 'false' and get_option('slow-tests')
296install_tests = get_option('install-tests')
297
James Hilliard46e63a22018-12-27 09:16:20 +0800298if add_languages('cpp', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200299 # Used only for tests
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200300 cxx_cmd = ' '.join(meson.get_compiler('cpp').cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200301else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200302 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400303endif
304
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500305if want_libfuzzer
306 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200307elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500308 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000309elif want_fuzzbuzz
310 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 -0500311endif
312
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900313possible_cc_flags = [
314 '-Wextra',
315 '-Werror=undef',
316 '-Wlogical-op',
317 '-Wmissing-include-dirs',
318 '-Wold-style-definition',
319 '-Wpointer-arith',
320 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900321 '-Wfloat-equal',
322 '-Wsuggest-attribute=noreturn',
323 '-Werror=missing-prototypes',
324 '-Werror=implicit-function-declaration',
325 '-Werror=missing-declarations',
326 '-Werror=return-type',
327 '-Werror=incompatible-pointer-types',
328 '-Werror=format=2',
329 '-Wstrict-prototypes',
330 '-Wredundant-decls',
331 '-Wmissing-noreturn',
332 '-Wimplicit-fallthrough=5',
333 '-Wshadow',
334 '-Wendif-labels',
335 '-Wstrict-aliasing=2',
336 '-Wwrite-strings',
337 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200338 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200339 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900340 '-Wdate-time',
341 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700342
343 # negative arguments are correctly detected starting with meson 0.46.
344 '-Wno-unused-parameter',
345 '-Wno-missing-field-initializers',
346 '-Wno-unused-result',
347 '-Wno-format-signedness',
Zbigniew Jędrzejewski-Szmekeed33622019-03-07 10:56:15 +0100348 '-Wno-error=#warnings', # clang
349 '-Wno-string-plus-int', # clang
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700350
351 # work-around for gcc 7.1 turning this on on its own.
352 '-Wno-error=nonnull',
353
354 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
355 # optimizations enabled, producing essentially false positives.
356 '-Wno-maybe-uninitialized',
357
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900358 '-ffast-math',
359 '-fno-common',
360 '-fdiagnostics-show-option',
361 '-fno-strict-aliasing',
362 '-fvisibility=hidden',
363 '-fstack-protector',
364 '-fstack-protector-strong',
365 '--param=ssp-buffer-size=4',
366]
367
368# --as-needed and --no-undefined are provided by meson by default,
369# run mesonconf to see what is enabled
370possible_link_flags = [
371 '-Wl,-z,relro',
372 '-Wl,-z,now',
373]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400374
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900375if cc.get_id() == 'clang'
376 possible_cc_flags += [
377 '-Wno-typedef-redefinition',
378 '-Wno-gnu-variable-sized-type-not-at-end',
379 ]
380endif
381
382if get_option('buildtype') != 'debug'
383 possible_cc_flags += [
384 '-ffunction-sections',
385 '-fdata-sections',
386 ]
387
388 possible_link_flags += '-Wl,--gc-sections'
389endif
390
Zbigniew Jędrzejewski-Szmeka73f6212019-03-28 09:44:02 +0100391if get_option('b_ndebug') == 'true'
392 # With asserts disabled with get a bunch of warnings about variables which
393 # are used only in the asserts. This is not useful at all, so let's just silence
394 # those warnings.
395 possible_cc_flags += [
396 '-Wno-unused-variable',
397 '-Wno-unused-but-set-variable',
398 ]
399endif
400
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900401add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900402add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900403
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800404if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400405 #include <time.h>
406 #include <inttypes.h>
407 typedef uint64_t usec_t;
408 usec_t now(clockid_t clock);
409 int main(void) {
410 struct timespec now;
411 return 0;
412 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100413''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400414 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400415endif
416
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200417cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400418
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400419#####################################################################
420# compilation result tests
421
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400422conf.set('_GNU_SOURCE', true)
423conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400424
425conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
426conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
427conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
428conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
429conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
430conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
431conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
432
433decl_headers = '''
434#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100435#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400436'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400437
438foreach decl : ['char16_t',
439 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100440 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400441 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400442
443 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200444 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
445
446 if decl == 'struct statx'
447 if have
448 want_linux_stat_h = false
449 else
450 have = cc.sizeof(decl,
451 prefix : decl_headers + '#include <linux/stat.h>',
452 args : '-D_GNU_SOURCE') > 0
453 want_linux_stat_h = have
454 endif
455 endif
456
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200457 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400458endforeach
459
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200460conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700461
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400462foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200463 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400464endforeach
465
466foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100467 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100468 ['gettid', '''#include <sys/types.h>
469 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100470 ['pivot_root', '''#include <stdlib.h>
471 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100472 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400473 #include <sys/stat.h>
474 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100475 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100476 ['renameat2', '''#include <stdio.h>
477 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400478 ['kcmp', '''#include <linux/kcmp.h>'''],
479 ['keyctl', '''#include <sys/types.h>
480 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100481 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400482 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200483 ['bpf', '''#include <sys/syscall.h>
484 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100485 ['statx', '''#include <sys/types.h>
486 #include <sys/stat.h>
487 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100488 ['explicit_bzero' , '''#include <string.h>'''],
489 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400490]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400491
Lennart Poettering85db59b2017-12-25 12:01:14 +0100492 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200493 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400494endforeach
495
Lennart Poettering85db59b2017-12-25 12:01:14 +0100496if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200497 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200498 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400499else
500 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200501 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200502 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400503endif
504
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400505#####################################################################
506
Davide Cavalca1485aac2019-02-27 11:19:07 -0500507vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
508 project_source_root,
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100509 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100510 meson.project_version()]
511
Louis Taylord1084aa2019-01-21 21:45:36 +0000512version_h = vcs_tag(
513 input : 'src/version/version.h.in',
514 output : 'version.h',
515 command: vcs_tagger)
516
517versiondep = declare_dependency(sources: version_h)
518
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400519sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400520awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400521m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400522stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400523git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100524env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100525perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400526
Davide Cavalca1485aac2019-02-27 11:19:07 -0500527meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400528mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400529test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
530splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400531
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400532# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
533# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500534progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400535 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400536 ['kmod', '/usr/bin/kmod' ],
537 ['kexec', '/usr/sbin/kexec' ],
538 ['sulogin', '/usr/sbin/sulogin' ],
539 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
540 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
541 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
542 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
543 ]
544foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400545 path = get_option(prog[0] + '-path')
546 if path != ''
547 message('Using @1@ for @0@'.format(prog[0], path))
548 else
549 exe = find_program(prog[0],
550 '/usr/sbin/' + prog[0],
551 '/sbin/' + prog[0],
552 required: false)
553 path = exe.found() ? exe.path() : prog[1]
554 endif
555 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
556 conf.set_quoted(name, path)
557 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400558endforeach
559
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500560conf.set_quoted('TELINIT', get_option('telinit-path'))
561
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400562if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100563 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400564endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400565
566############################################################
567
568gperf = find_program('gperf')
569
570gperf_test_format = '''
571#include <string.h>
572const char * in_word_set(const char *, @0@);
573@1@
574'''
575gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
576gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
577gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
578if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400579 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400580else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400581 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
582 if cc.compiles(gperf_test)
583 gperf_len_type = 'unsigned'
584 else
585 error('unable to determine gperf len type')
586 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400587endif
588message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400589conf.set('GPERF_LEN_TYPE', gperf_len_type,
590 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400591
592############################################################
593
594if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400595 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400596endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100597foreach header : ['crypt.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400598 'linux/memfd.h',
599 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200600 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400601 'valgrind/memcheck.h',
602 'valgrind/valgrind.h',
603 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400604
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200605 conf.set10('HAVE_' + header.underscorify().to_upper(),
606 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400607endforeach
608
609############################################################
610
611conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400612conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
613gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400614
615default_hierarchy = get_option('default-hierarchy')
616conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
617 description : 'default cgroup hierarchy as string')
618if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400619 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400620elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400621 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400622else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400623 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400624endif
625
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100626default_net_naming_scheme = get_option('default-net-naming-scheme')
627conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
628
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400629time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900630if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400631 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900632 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400633endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400634conf.set('TIME_EPOCH', time_epoch)
635
636system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900637if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400638 system_uid_max = run_command(
639 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800640 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
641 '/etc/login.defs').stdout().strip()
642 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900643 system_uid_max = 999
644 else
645 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800646 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400647endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400648conf.set('SYSTEM_UID_MAX', system_uid_max)
649substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400650
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400651system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900652if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400653 system_gid_max = run_command(
654 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800655 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
656 '/etc/login.defs').stdout().strip()
657 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900658 system_gid_max = 999
659 else
660 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800661 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400662endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400663conf.set('SYSTEM_GID_MAX', system_gid_max)
664substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400665
Yu Watanabeac093402018-05-10 16:04:16 +0900666dynamic_uid_min = get_option('dynamic-uid-min')
667dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100668conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
669conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
670substs.set('dynamicuidmin', dynamic_uid_min)
671substs.set('dynamicuidmax', dynamic_uid_max)
672
Yu Watanabeac093402018-05-10 16:04:16 +0900673container_uid_base_min = get_option('container-uid-base-min')
674container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100675conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
676conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
677substs.set('containeruidbasemin', container_uid_base_min)
678substs.set('containeruidbasemax', container_uid_base_max)
679
Lennart Poetteringafde4572017-12-05 11:00:24 +0100680nobody_user = get_option('nobody-user')
681nobody_group = get_option('nobody-group')
682
Chen Qi2484bff2018-07-23 14:53:09 +0800683if not meson.is_cross_build()
684 getent_result = run_command('getent', 'passwd', '65534')
685 if getent_result.returncode() == 0
686 name = getent_result.stdout().split(':')[0]
687 if name != nobody_user
688 warning('\n' +
689 '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) +
690 'Your build will result in an user table setup that is incompatible with the local system.')
691 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100692 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800693 id_result = run_command('id', '-u', nobody_user)
694 if id_result.returncode() == 0
695 id = id_result.stdout().to_int()
696 if id != 65534
697 warning('\n' +
698 '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) +
699 'Your build will result in an user table setup that is incompatible with the local system.')
700 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100701 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100702
Chen Qi2484bff2018-07-23 14:53:09 +0800703 getent_result = run_command('getent', 'group', '65534')
704 if getent_result.returncode() == 0
705 name = getent_result.stdout().split(':')[0]
706 if name != nobody_group
707 warning('\n' +
708 '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) +
709 'Your build will result in an group table setup that is incompatible with the local system.')
710 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100711 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800712 id_result = run_command('id', '-g', nobody_group)
713 if id_result.returncode() == 0
714 id = id_result.stdout().to_int()
715 if id != 65534
716 warning('\n' +
717 '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) +
718 'Your build will result in an group table setup that is incompatible with the local system.')
719 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100720 endif
721endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900722if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900723 warning('\n' +
724 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
725 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900726endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100727
728conf.set_quoted('NOBODY_USER_NAME', nobody_user)
729conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900730substs.set('NOBODY_USER_NAME', nobody_user)
731substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100732
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400733tty_gid = get_option('tty-gid')
734conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400735substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400736
Ikey Doherty84786b82017-12-03 12:28:23 +0000737# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900738users_gid = get_option('users-gid')
739substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000740
Yu Watanabe348b4432018-05-07 18:17:35 +0900741conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
742conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400743
Michael Bieblace5e312018-07-13 23:36:13 +0200744dev_kvm_mode = get_option('dev-kvm-mode')
745substs.set('DEV_KVM_MODE', dev_kvm_mode)
746conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100747group_render_mode = get_option('group-render-mode')
748substs.set('GROUP_RENDER_MODE', group_render_mode)
749conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400750
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400751kill_user_processes = get_option('default-kill-user-processes')
752conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100753conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400754substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400755
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400756dns_servers = get_option('dns-servers')
757conf.set_quoted('DNS_SERVERS', dns_servers)
758substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400759
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400760ntp_servers = get_option('ntp-servers')
761conf.set_quoted('NTP_SERVERS', ntp_servers)
762substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400763
Dave Reisner8ca9e922018-12-28 07:38:36 -0500764default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900765if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800766 if not meson.is_cross_build()
767 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
768 default_locale = run_command(choose_default_locale_sh).stdout().strip()
769 else
770 default_locale = 'C.UTF-8'
771 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900772endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500773conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
774
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400775conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
776
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400777substs.set('SUSHELL', get_option('debug-shell'))
778substs.set('DEBUGTTY', get_option('debug-tty'))
779
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200780enable_debug_hashmap = false
781enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900782enable_debug_siphash = false
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900783enable_debug_udev = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200784foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900785 if name == 'hashmap'
786 enable_debug_hashmap = true
787 elif name == 'mmap-cache'
788 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900789 elif name == 'siphash'
790 enable_debug_siphash = true
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900791 elif name == 'udev'
792 enable_debug_udev = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900793 else
794 message('unknown debug option "@0@", ignoring'.format(name))
795 endif
796endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200797conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
798conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900799conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900800conf.set10('ENABLE_DEBUG_UDEV', enable_debug_udev)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400801
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200802conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200803conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200804
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400805#####################################################################
806
807threads = dependency('threads')
808librt = cc.find_library('rt')
809libm = cc.find_library('m')
810libdl = cc.find_library('dl')
811libcrypt = cc.find_library('crypt')
812
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400813libcap = dependency('libcap', required : false)
814if not libcap.found()
815 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
816 libcap = cc.find_library('cap')
817endif
818
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400819libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100820 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400821
822want_seccomp = get_option('seccomp')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000823if want_seccomp != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400824 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400825 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400826 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200827 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400828else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200829 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400830 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400831endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200832conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400833
834want_selinux = get_option('selinux')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000835if want_selinux != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400836 libselinux = dependency('libselinux',
837 version : '>= 2.1.9',
838 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200839 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400840else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200841 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400842 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400843endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200844conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400845
846want_apparmor = get_option('apparmor')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000847if want_apparmor != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400848 libapparmor = dependency('libapparmor',
849 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200850 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400851else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200852 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400853 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400854endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200855conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400856
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400857smack_run_label = get_option('smack-run-label')
858if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400859 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400860endif
861
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400862want_polkit = get_option('polkit')
863install_polkit = false
864install_polkit_pkla = false
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000865if want_polkit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400866 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400867
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400868 libpolkit = dependency('polkit-gobject-1',
869 required : false)
870 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
871 message('Old polkit detected, will install pkla files')
872 install_polkit_pkla = true
873 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400874endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200875conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400876
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400877want_acl = get_option('acl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000878if want_acl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400879 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200880 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400881else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200882 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400883 libacl = []
884endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200885conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400886
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400887want_audit = get_option('audit')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000888if want_audit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400889 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200890 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400891else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200892 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400893 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400894endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200895conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400896
897want_blkid = get_option('blkid')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000898if want_blkid != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400899 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200900 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400901else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200902 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400903 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400904endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200905conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400906
907want_kmod = get_option('kmod')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000908if want_kmod != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400909 libkmod = dependency('libkmod',
910 version : '>= 15',
911 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200912 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400913else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200914 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400915 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400916endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200917conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400918
919want_pam = get_option('pam')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000920if want_pam != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400921 libpam = cc.find_library('pam', required : want_pam == 'true')
922 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200923 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400924else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200925 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400926 libpam = []
927 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400928endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200929conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400930
931want_microhttpd = get_option('microhttpd')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000932if want_microhttpd != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400933 libmicrohttpd = dependency('libmicrohttpd',
934 version : '>= 0.9.33',
935 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200936 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400937else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200938 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400939 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400940endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200941conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400942
943want_libcryptsetup = get_option('libcryptsetup')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000944if want_libcryptsetup != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400945 libcryptsetup = dependency('libcryptsetup',
946 version : '>= 1.6.0',
947 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200948 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100949 have_sector = cc.has_member(
950 'struct crypt_params_plain',
951 'sector_size',
952 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400953else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200954 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100955 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400956 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400957endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200958conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100959conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400960
961want_libcurl = get_option('libcurl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000962if want_libcurl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400963 libcurl = dependency('libcurl',
964 version : '>= 7.32.0',
965 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200966 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400967else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200968 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400969 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400970endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200971conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400972
973want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400974want_libidn2 = get_option('libidn2')
975if want_libidn == 'true' and want_libidn2 == 'true'
976 error('libidn and libidn2 cannot be requested simultaneously')
977endif
978
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000979if want_libidn != 'false' and want_libidn2 != 'true' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400980 libidn = dependency('libidn',
981 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200982 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400983else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200984 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400985 libidn = []
986endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200987conf.set10('HAVE_LIBIDN', have)
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000988if not have and want_libidn2 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400989 # libidn is used for both libidn and libidn2 objects
990 libidn = dependency('libidn2',
991 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200992 have = libidn.found()
993else
994 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400995endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400997
998want_libiptc = get_option('libiptc')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000999if want_libiptc != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001000 libiptc = dependency('libiptc',
1001 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001002 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001003else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001004 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001005 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001006endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001007conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001008
1009want_qrencode = get_option('qrencode')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001010if want_qrencode != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001011 libqrencode = dependency('libqrencode',
1012 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001013 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001014else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001015 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001016 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001017endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001018conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001019
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001020want_gcrypt = get_option('gcrypt')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001021if want_gcrypt != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001022 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1023 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001024 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001025else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001026 have = false
1027endif
1028if not have
1029 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001030 libgcrypt = []
1031 libgpg_error = []
1032endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001033conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001034
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001035want_gnutls = get_option('gnutls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001036if want_gnutls != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001037 libgnutls = dependency('gnutls',
1038 version : '>= 3.1.4',
1039 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001040 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001041else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001042 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001043 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001044endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001045conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001046
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001047want_openssl = get_option('openssl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001048if want_openssl != 'false' and not skip_deps
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001049 libopenssl = dependency('openssl',
1050 version : '>= 1.1.0',
1051 required : want_openssl == 'true')
1052 have = libopenssl.found()
1053else
1054 have = false
1055 libopenssl = []
1056endif
1057conf.set10('HAVE_OPENSSL', have)
1058
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001059want_elfutils = get_option('elfutils')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001060if want_elfutils != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001061 libdw = dependency('libdw',
1062 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001063 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001064else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001065 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001066 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001067endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001068conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001069
1070want_zlib = get_option('zlib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001071if want_zlib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001072 libz = dependency('zlib',
1073 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001074 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001075else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001076 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001077 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001078endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001079conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001080
1081want_bzip2 = get_option('bzip2')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001082if want_bzip2 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001083 libbzip2 = cc.find_library('bz2',
1084 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001085 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001086else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001087 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001088 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001089endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001090conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001091
1092want_xz = get_option('xz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001093if want_xz != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001094 libxz = dependency('liblzma',
1095 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001096 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001097else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001098 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001099 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001100endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001101conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001102
1103want_lz4 = get_option('lz4')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001104if want_lz4 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001105 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001106 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001107 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001108 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001109else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001110 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001111 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001112endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001113conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001114
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001115want_xkbcommon = get_option('xkbcommon')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001116if want_xkbcommon != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001117 libxkbcommon = dependency('xkbcommon',
1118 version : '>= 0.3.0',
1119 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001120 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001121else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001122 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001123 libxkbcommon = []
1124endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001125conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001126
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001127want_pcre2 = get_option('pcre2')
1128if want_pcre2 != 'false'
1129 libpcre2 = dependency('libpcre2-8',
1130 required : want_pcre2 == 'true')
1131 have = libpcre2.found()
1132else
1133 have = false
1134 libpcre2 = []
1135endif
1136conf.set10('HAVE_PCRE2', have)
1137
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001138want_glib = get_option('glib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001139if want_glib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001140 libglib = dependency('glib-2.0',
1141 version : '>= 2.22.0',
1142 required : want_glib == 'true')
1143 libgobject = dependency('gobject-2.0',
1144 version : '>= 2.22.0',
1145 required : want_glib == 'true')
1146 libgio = dependency('gio-2.0',
1147 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001148 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001149else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001150 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001151 libglib = []
1152 libgobject = []
1153 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001154endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001155conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001156
1157want_dbus = get_option('dbus')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001158if want_dbus != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001159 libdbus = dependency('dbus-1',
1160 version : '>= 1.3.2',
1161 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001162 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001163else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001164 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001165 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001166endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001167conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001168
Yu Watanabe42303dc2017-06-18 05:22:32 +09001169default_dnssec = get_option('default-dnssec')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001170if skip_deps
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001171 default_dnssec = 'no'
1172endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001173if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001174 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1175 default_dnssec = 'no'
1176endif
1177conf.set('DEFAULT_DNSSEC_MODE',
1178 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1179substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1180
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001181dns_over_tls = get_option('dns-over-tls')
1182if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001183 if dns_over_tls == 'openssl'
1184 have_gnutls = false
1185 else
1186 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1187 if dns_over_tls == 'gnutls' and not have_gnutls
1188 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1189 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001190 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001191 if dns_over_tls == 'gnutls' or have_gnutls
1192 have_openssl = false
1193 else
1194 have_openssl = conf.get('HAVE_OPENSSL') == 1
1195 if dns_over_tls != 'auto' and not have_openssl
1196 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1197 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1198 endif
1199 endif
1200 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001201else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001202 have = false
1203 have_gnutls = false
1204 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001205endif
1206conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001207conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1208conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001209
Iwan Timmerc9299be2018-06-13 20:26:24 +02001210default_dns_over_tls = get_option('default-dns-over-tls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001211if skip_deps
Iwan Timmerc9299be2018-06-13 20:26:24 +02001212 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001213endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001214if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1215 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 +02001216 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001217endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001218conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1219 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1220substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001221
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001222want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001223if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001224 have = (conf.get('HAVE_LIBCURL') == 1 and
1225 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001226 conf.get('HAVE_XZ') == 1 and
1227 conf.get('HAVE_GCRYPT') == 1)
1228 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001229 error('importd support was requested, but dependencies are not available')
1230 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001231else
1232 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001233endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001234conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001235
1236want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001237if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001238 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1239 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001240 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1241 # it's possible to build one without the other. Complain only if
Ben Boeckel5238e952019-04-26 20:22:40 -04001242 # support was explicitly requested. The auxiliary files like sysusers
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001243 # config should be installed when any of the programs are built.
1244 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1245 error('remote support was requested, but dependencies are not available')
1246 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001247 have = have_deps[0] or have_deps[1]
1248else
1249 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001250endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001251conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001252
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001253foreach term : ['utmp',
1254 'hibernate',
1255 'environment-d',
1256 'binfmt',
1257 'coredump',
1258 'resolve',
1259 'logind',
1260 'hostnamed',
1261 'localed',
1262 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001263 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001264 'networkd',
1265 'timedated',
1266 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001267 'firstboot',
1268 'randomseed',
1269 'backlight',
1270 'vconsole',
1271 'quotacheck',
1272 'sysusers',
1273 'tmpfiles',
1274 'hwdb',
1275 'rfkill',
1276 'ldconfig',
1277 'efi',
1278 'tpm',
1279 'ima',
1280 'smack',
1281 'gshadow',
1282 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001283 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001284 'nss-systemd']
1285 have = get_option(term)
1286 name = 'ENABLE_' + term.underscorify().to_upper()
1287 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001288endforeach
1289
Yu Watanabe08540a92018-07-18 09:25:57 +09001290foreach tuple : [['nss-mymachines', 'machined'],
1291 ['nss-resolve', 'resolve']]
1292 want = get_option(tuple[0])
1293 if want != 'false'
1294 have = get_option(tuple[1])
1295 if want == 'true' and not have
1296 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1297 endif
1298 else
1299 have = false
1300 endif
1301 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1302 conf.set10(name, have)
1303endforeach
1304
1305enable_nss = false
1306foreach term : ['ENABLE_NSS_MYHOSTNAME',
1307 'ENABLE_NSS_MYMACHINES',
1308 'ENABLE_NSS_RESOLVE',
1309 'ENABLE_NSS_SYSTEMD']
1310 if conf.get(term) == 1
1311 enable_nss = true
1312 endif
1313endforeach
1314conf.set10('ENABLE_NSS', enable_nss)
1315
Yu Watanabe348b4432018-05-07 18:17:35 +09001316conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001317
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001318tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001319fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001320
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001321conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001322
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001323#####################################################################
1324
1325if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001326 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001327
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001328 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001329 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001330 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001331 elif efi_arch == 'x86_64'
1332 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001333 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001334 elif efi_arch == 'arm'
1335 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001336 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001337 elif efi_arch == 'aarch64'
1338 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001339 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001340 else
1341 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001342 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001343 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001344
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001345 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001346 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001347
Yu Watanabeac093402018-05-10 16:04:16 +09001348 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001349else
1350 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001351endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001352conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001353
1354#####################################################################
1355
1356config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001357 output : 'config.h',
1358 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001359
Yu Watanabe348b4432018-05-07 18:17:35 +09001360meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1361
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001362includes = include_directories('src/basic',
1363 'src/shared',
1364 'src/systemd',
1365 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001366 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001367 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001368 'src/resolve',
1369 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001370 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001371 'src/login',
1372 'src/udev',
1373 'src/libudev',
1374 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001375 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001376 'src/libsystemd/sd-bus',
1377 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001378 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001379 'src/libsystemd/sd-hwdb',
1380 'src/libsystemd/sd-id128',
1381 'src/libsystemd/sd-netlink',
1382 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001383 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001384 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001385 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001386
1387add_project_arguments('-include', 'config.h', language : 'c')
1388
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001389generate_gperfs = find_program('tools/generate-gperfs.py')
1390
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001391subdir('po')
1392subdir('catalog')
1393subdir('src/systemd')
1394subdir('src/basic')
1395subdir('src/libsystemd')
1396subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001397subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001398subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001399
1400libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001401 'journal-core',
1402 libjournal_core_sources,
1403 journald_gperf_c,
1404 include_directories : includes,
1405 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001406
Davide Cavalca1485aac2019-02-27 11:19:07 -05001407libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001408libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001409 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001410 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001411 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001412 include_directories : includes,
1413 link_args : ['-shared',
1414 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001415 link_with : [libbasic,
1416 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001417 link_whole : [libsystemd_static,
1418 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001419 dependencies : [threads,
1420 librt,
1421 libxz,
1422 liblz4],
1423 link_depends : libsystemd_sym,
1424 install : true,
1425 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001426
Davide Cavalca70848ec2018-04-09 02:43:35 -07001427static_libsystemd = get_option('static-libsystemd')
1428static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1429
1430install_libsystemd_static = static_library(
1431 'systemd',
1432 libsystemd_sources,
1433 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001434 basic_sources,
1435 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001436 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001437 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001438 build_by_default : static_libsystemd != 'false',
1439 install : static_libsystemd != 'false',
1440 install_dir : rootlibdir,
1441 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1442 dependencies : [threads,
1443 librt,
1444 libxz,
1445 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001446 libcap,
1447 libblkid,
1448 libmount,
1449 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001450 libgcrypt],
1451 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1452
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001453############################################################
1454
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001455# binaries that have --help and are intended for use by humans,
1456# usually, but not always, installed in /bin.
1457public_programs = []
1458
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001459subdir('src/libudev')
1460subdir('src/shared')
1461subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001462subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001463subdir('src/udev')
1464subdir('src/network')
1465
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001466subdir('src/analyze')
1467subdir('src/journal-remote')
1468subdir('src/coredump')
1469subdir('src/hostname')
1470subdir('src/import')
1471subdir('src/kernel-install')
1472subdir('src/locale')
1473subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001474subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001475subdir('src/nspawn')
1476subdir('src/resolve')
1477subdir('src/timedate')
1478subdir('src/timesync')
1479subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001480subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001481
1482subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001483subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001484subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001485subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001486
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001487############################################################
1488
1489# only static linking apart from libdl, to make sure that the
1490# module is linked to all libraries that it uses.
1491test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001492 'test-dlopen',
1493 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001494 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001495 include_directories : includes,
1496 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001497 dependencies : [libdl],
1498 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001499
Yu Watanabe08540a92018-07-18 09:25:57 +09001500foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001501 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001502 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1503 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001504
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001505 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001506 if condition
1507 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001508
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001509 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001510 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001511
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001512 nss = shared_library(
1513 'nss_' + module,
1514 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001515 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001516 version : '2',
1517 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001518 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1519 link_args : ['-Wl,-z,nodelete',
1520 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001521 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001522 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001523 libbasic],
1524 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001525 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001526 link_depends : sym,
1527 install : true,
1528 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001529
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001530 # We cannot use shared_module because it does not support version suffix.
1531 # Unfortunately shared_library insists on creating the symlink…
1532 meson.add_install_script('sh', '-c',
1533 'rm $DESTDIR@0@/libnss_@1@.so'
1534 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001535
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001536 if want_tests != 'false'
1537 test('dlopen-nss_' + module,
1538 test_dlopen,
1539 # path to dlopen must include a slash
1540 args : nss.full_path())
1541 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001542 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001543endforeach
1544
1545############################################################
1546
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001547executable('systemd',
1548 systemd_sources,
1549 include_directories : includes,
1550 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001551 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001552 dependencies : [versiondep,
1553 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001554 librt,
1555 libseccomp,
1556 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001557 libmount,
1558 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001559 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001560 install : true,
1561 install_dir : rootlibexecdir)
1562
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001563meson.add_install_script(meson_make_symlink,
1564 join_paths(rootlibexecdir, 'systemd'),
1565 join_paths(rootsbindir, 'init'))
1566
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001567exe = executable('systemd-analyze',
1568 systemd_analyze_sources,
1569 include_directories : includes,
1570 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001571 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001572 dependencies : [versiondep,
1573 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001574 librt,
1575 libseccomp,
1576 libselinux,
1577 libmount,
1578 libblkid],
1579 install_rpath : rootlibexecdir,
1580 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001581public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001582
1583executable('systemd-journald',
1584 systemd_journald_sources,
1585 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001586 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001587 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001588 dependencies : [threads,
1589 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001590 liblz4,
1591 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001592 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001593 install : true,
1594 install_dir : rootlibexecdir)
1595
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001596exe = executable('systemd-cat',
1597 systemd_cat_sources,
1598 include_directories : includes,
1599 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001600 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001601 dependencies : [threads],
1602 install_rpath : rootlibexecdir,
1603 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001604public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001605
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001606exe = executable('journalctl',
1607 journalctl_sources,
1608 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001609 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001610 dependencies : [threads,
1611 libqrencode,
1612 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001613 liblz4,
1614 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001615 install_rpath : rootlibexecdir,
1616 install : true,
1617 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001618public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001619
1620executable('systemd-getty-generator',
1621 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001622 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001623 link_with : [libshared],
1624 install_rpath : rootlibexecdir,
1625 install : true,
1626 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001627
1628executable('systemd-debug-generator',
1629 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001630 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001631 link_with : [libshared],
1632 install_rpath : rootlibexecdir,
1633 install : true,
1634 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001635
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001636executable('systemd-run-generator',
1637 'src/run-generator/run-generator.c',
1638 include_directories : includes,
1639 link_with : [libshared],
1640 install_rpath : rootlibexecdir,
1641 install : true,
1642 install_dir : systemgeneratordir)
1643
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001644executable('systemd-fstab-generator',
1645 'src/fstab-generator/fstab-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001646 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01001647 link_with : [libcore_shared,
1648 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001649 install_rpath : rootlibexecdir,
1650 install : true,
1651 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001652
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001653if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001654 executable('30-systemd-environment-d-generator',
1655 'src/environment-d-generator/environment-d-generator.c',
1656 include_directories : includes,
1657 link_with : [libshared],
1658 install_rpath : rootlibexecdir,
1659 install : true,
1660 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001661
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001662 meson.add_install_script(meson_make_symlink,
1663 join_paths(sysconfdir, 'environment'),
1664 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001665endif
1666
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001667if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001668 executable('systemd-hibernate-resume-generator',
1669 'src/hibernate-resume/hibernate-resume-generator.c',
1670 include_directories : includes,
1671 link_with : [libshared],
1672 install_rpath : rootlibexecdir,
1673 install : true,
1674 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001675
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001676 executable('systemd-hibernate-resume',
1677 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001678 include_directories : includes,
1679 link_with : [libshared],
1680 install_rpath : rootlibexecdir,
1681 install : true,
1682 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001683endif
1684
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001685if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001686 executable('systemd-gpt-auto-generator',
1687 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001688 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001689 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001690 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001691 dependencies : libblkid,
1692 install_rpath : rootlibexecdir,
1693 install : true,
1694 install_dir : systemgeneratordir)
1695
1696 exe = executable('systemd-dissect',
1697 'src/dissect/dissect.c',
1698 include_directories : includes,
1699 link_with : [libshared],
1700 install_rpath : rootlibexecdir,
1701 install : true,
1702 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001703 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001704endif
1705
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001706if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001707 executable('systemd-resolved',
1708 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001709 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001710 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001711 libbasic_gcrypt,
1712 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001713 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001714 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001715 install : true,
1716 install_dir : rootlibexecdir)
1717
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001718 exe = executable('resolvectl',
1719 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001720 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001721 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001722 libbasic_gcrypt,
1723 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001724 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001725 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001726 libm,
1727 libidn],
1728 install_rpath : rootlibexecdir,
1729 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001730 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001731
1732 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001733 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001734 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001735
1736 meson.add_install_script(meson_make_symlink,
1737 join_paths(bindir, 'resolvectl'),
1738 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001739endif
1740
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001741if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001742 executable('systemd-logind',
1743 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001744 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001745 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001746 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001747 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001748 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001749 install_rpath : rootlibexecdir,
1750 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001751 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001752
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001753 exe = executable('loginctl',
1754 loginctl_sources,
1755 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001756 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001757 dependencies : [threads,
1758 liblz4,
1759 libxz],
1760 install_rpath : rootlibexecdir,
1761 install : true,
1762 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001763 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001764
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001765 exe = executable('systemd-inhibit',
1766 'src/login/inhibit.c',
1767 include_directories : includes,
1768 link_with : [libshared],
1769 install_rpath : rootlibexecdir,
1770 install : true,
1771 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001772 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001773
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001774 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001775 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001776 pam_systemd = shared_library(
1777 'pam_systemd',
1778 pam_systemd_c,
1779 name_prefix : '',
1780 include_directories : includes,
1781 link_args : ['-shared',
1782 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001783 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001784 libshared_static],
1785 dependencies : [threads,
1786 libpam,
1787 libpam_misc],
1788 link_depends : pam_systemd_sym,
1789 install : true,
1790 install_dir : pamlibdir)
1791
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001792 if want_tests != 'false'
1793 test('dlopen-pam_systemd',
1794 test_dlopen,
1795 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001796 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001797 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001798 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001799
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001800 executable('systemd-user-runtime-dir',
1801 user_runtime_dir_sources,
1802 include_directories : includes,
1803 link_with : [libshared],
1804 install_rpath : rootlibexecdir,
1805 install : true,
1806 install_dir : rootlibexecdir)
1807endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001808
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001809if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001810 executable('systemd-user-sessions',
1811 'src/user-sessions/user-sessions.c',
1812 include_directories : includes,
1813 link_with : [libshared],
1814 install_rpath : rootlibexecdir,
1815 install : true,
1816 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001817endif
1818
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001819if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001820 exe = executable('bootctl',
1821 'src/boot/bootctl.c',
1822 include_directories : includes,
1823 link_with : [libshared],
1824 dependencies : [libblkid],
1825 install_rpath : rootlibexecdir,
1826 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001827 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001828
1829 executable('systemd-bless-boot',
1830 'src/boot/bless-boot.c',
1831 include_directories : includes,
1832 link_with : [libshared],
1833 dependencies : [libblkid],
1834 install_rpath : rootlibexecdir,
1835 install : true,
1836 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001837
1838 executable('systemd-bless-boot-generator',
1839 'src/boot/bless-boot-generator.c',
1840 include_directories : includes,
1841 link_with : [libshared],
1842 install_rpath : rootlibexecdir,
1843 install : true,
1844 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001845endif
1846
Lennart Poetteringf876f532018-06-25 16:07:33 +02001847executable('systemd-boot-check-no-failures',
1848 'src/boot/boot-check-no-failures.c',
1849 include_directories : includes,
1850 link_with : [libshared],
1851 dependencies : [libblkid],
1852 install_rpath : rootlibexecdir,
1853 install : true,
1854 install_dir : rootlibexecdir)
1855
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001856exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1857 include_directories : includes,
1858 link_with : [libshared],
1859 dependencies : [threads],
1860 install_rpath : rootlibexecdir,
1861 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001862public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001863
Felipe Satelerf3794362018-05-22 15:08:57 -04001864
1865if get_option('link-systemctl-shared')
1866 systemctl_link_with = [libshared]
1867else
1868 systemctl_link_with = [libsystemd_static,
1869 libshared_static,
1870 libjournal_client,
1871 libbasic_gcrypt]
1872endif
1873
Lennart Poettering63a3b3c2019-03-22 20:05:08 +01001874exe = executable('systemctl',
1875 'src/systemctl/systemctl.c',
1876 'src/systemctl/sysv-compat.h',
1877 'src/systemctl/sysv-compat.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001878 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001879 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001880 dependencies : [threads,
1881 libcap,
1882 libselinux,
1883 libxz,
1884 liblz4],
1885 install_rpath : rootlibexecdir,
1886 install : true,
1887 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001888public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001889
Lennart Poettering61d05782018-04-16 21:41:40 +02001890if conf.get('ENABLE_PORTABLED') == 1
1891 executable('systemd-portabled',
1892 systemd_portabled_sources,
1893 include_directories : includes,
1894 link_with : [libshared],
1895 dependencies : [threads],
1896 install_rpath : rootlibexecdir,
1897 install : true,
1898 install_dir : rootlibexecdir)
1899
1900 exe = executable('portablectl', 'src/portable/portablectl.c',
1901 include_directories : includes,
1902 link_with : [libshared],
1903 dependencies : [threads],
1904 install_rpath : rootlibexecdir,
1905 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001906 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001907 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001908endif
1909
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001910foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1911 meson.add_install_script(meson_make_symlink,
1912 join_paths(rootbindir, 'systemctl'),
1913 join_paths(rootsbindir, alias))
1914endforeach
1915
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001916if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001917 executable('systemd-backlight',
1918 'src/backlight/backlight.c',
1919 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001920 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001921 install_rpath : rootlibexecdir,
1922 install : true,
1923 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001924endif
1925
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001926if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001927 executable('systemd-rfkill',
1928 'src/rfkill/rfkill.c',
1929 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001930 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001931 install_rpath : rootlibexecdir,
1932 install : true,
1933 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001934endif
1935
1936executable('systemd-system-update-generator',
1937 'src/system-update-generator/system-update-generator.c',
1938 include_directories : includes,
1939 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001940 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001941 install : true,
1942 install_dir : systemgeneratordir)
1943
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001944if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001945 executable('systemd-cryptsetup',
1946 'src/cryptsetup/cryptsetup.c',
1947 include_directories : includes,
1948 link_with : [libshared],
1949 dependencies : [libcryptsetup],
1950 install_rpath : rootlibexecdir,
1951 install : true,
1952 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001953
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001954 executable('systemd-cryptsetup-generator',
1955 'src/cryptsetup/cryptsetup-generator.c',
1956 include_directories : includes,
1957 link_with : [libshared],
1958 dependencies : [libcryptsetup],
1959 install_rpath : rootlibexecdir,
1960 install : true,
1961 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001962
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001963 executable('systemd-veritysetup',
1964 'src/veritysetup/veritysetup.c',
1965 include_directories : includes,
1966 link_with : [libshared],
1967 dependencies : [libcryptsetup],
1968 install_rpath : rootlibexecdir,
1969 install : true,
1970 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001971
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001972 executable('systemd-veritysetup-generator',
1973 'src/veritysetup/veritysetup-generator.c',
1974 include_directories : includes,
1975 link_with : [libshared],
1976 dependencies : [libcryptsetup],
1977 install_rpath : rootlibexecdir,
1978 install : true,
1979 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001980endif
1981
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001982if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001983 executable('systemd-sysv-generator',
1984 'src/sysv-generator/sysv-generator.c',
1985 include_directories : includes,
1986 link_with : [libshared],
1987 install_rpath : rootlibexecdir,
1988 install : true,
1989 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001990
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001991 executable('systemd-rc-local-generator',
1992 'src/rc-local-generator/rc-local-generator.c',
1993 include_directories : includes,
1994 link_with : [libshared],
1995 install_rpath : rootlibexecdir,
1996 install : true,
1997 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001998endif
1999
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002000if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002001 executable('systemd-hostnamed',
2002 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002003 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002004 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002005 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002006 install : true,
2007 install_dir : rootlibexecdir)
2008
2009 exe = executable('hostnamectl',
2010 'src/hostname/hostnamectl.c',
2011 include_directories : includes,
2012 link_with : [libshared],
2013 install_rpath : rootlibexecdir,
2014 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002015 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002016endif
2017
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002018if conf.get('ENABLE_LOCALED') == 1
2019 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002020 # logind will load libxkbcommon.so dynamically on its own
2021 deps = [libdl]
2022 else
2023 deps = []
2024 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002025
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002026 executable('systemd-localed',
2027 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002028 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002029 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002030 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002031 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002032 install : true,
2033 install_dir : rootlibexecdir)
2034
2035 exe = executable('localectl',
2036 localectl_sources,
2037 include_directories : includes,
2038 link_with : [libshared],
2039 install_rpath : rootlibexecdir,
2040 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002041 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002042endif
2043
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002044if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002045 executable('systemd-timedated',
2046 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002047 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002048 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002049 install_rpath : rootlibexecdir,
2050 install : true,
2051 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002052endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002053
Yu Watanabe6129ec82018-05-03 18:07:43 +09002054if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002055 exe = executable('timedatectl',
2056 'src/timedate/timedatectl.c',
2057 include_directories : includes,
2058 install_rpath : rootlibexecdir,
2059 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002060 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002061 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002062 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002063endif
2064
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002065if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002066 executable('systemd-timesyncd',
2067 systemd_timesyncd_sources,
2068 include_directories : includes,
2069 link_with : [libshared],
2070 dependencies : [threads,
2071 libm],
2072 install_rpath : rootlibexecdir,
2073 install : true,
2074 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002075
2076 executable('systemd-time-wait-sync',
2077 'src/time-wait-sync/time-wait-sync.c',
2078 include_directories : includes,
2079 link_with : [libshared],
2080 install_rpath : rootlibexecdir,
2081 install : true,
2082 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002083endif
2084
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002085if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002086 executable('systemd-machined',
2087 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002088 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002089 link_with : [libmachine_core,
2090 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002091 install_rpath : rootlibexecdir,
2092 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002093 install_dir : rootlibexecdir)
2094
2095 exe = executable('machinectl',
2096 'src/machine/machinectl.c',
2097 include_directories : includes,
2098 link_with : [libshared],
2099 dependencies : [threads,
2100 libxz,
2101 liblz4],
2102 install_rpath : rootlibexecdir,
2103 install : true,
2104 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002105 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002106endif
2107
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002108if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002109 executable('systemd-importd',
2110 systemd_importd_sources,
2111 include_directories : includes,
2112 link_with : [libshared],
2113 dependencies : [threads],
2114 install_rpath : rootlibexecdir,
2115 install : true,
2116 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002117
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002118 systemd_pull = executable('systemd-pull',
2119 systemd_pull_sources,
2120 include_directories : includes,
2121 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002122 dependencies : [versiondep,
2123 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002124 libz,
2125 libbzip2,
2126 libxz,
2127 libgcrypt],
2128 install_rpath : rootlibexecdir,
2129 install : true,
2130 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002131
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002132 systemd_import = executable('systemd-import',
2133 systemd_import_sources,
2134 include_directories : includes,
2135 link_with : [libshared],
2136 dependencies : [libcurl,
2137 libz,
2138 libbzip2,
2139 libxz],
2140 install_rpath : rootlibexecdir,
2141 install : true,
2142 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002143
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002144 systemd_import_fs = executable('systemd-import-fs',
2145 systemd_import_fs_sources,
2146 include_directories : includes,
2147 link_with : [libshared],
2148 install_rpath : rootlibexecdir,
2149 install : true,
2150 install_dir : rootlibexecdir)
2151
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002152 systemd_export = executable('systemd-export',
2153 systemd_export_sources,
2154 include_directories : includes,
2155 link_with : [libshared],
2156 dependencies : [libcurl,
2157 libz,
2158 libbzip2,
2159 libxz],
2160 install_rpath : rootlibexecdir,
2161 install : true,
2162 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002163
2164 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002165endif
2166
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002167if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002168 exe = executable('systemd-journal-upload',
2169 systemd_journal_upload_sources,
2170 include_directories : includes,
2171 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002172 dependencies : [versiondep,
2173 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002174 libcurl,
2175 libgnutls,
2176 libxz,
2177 liblz4],
2178 install_rpath : rootlibexecdir,
2179 install : true,
2180 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002181 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002182endif
2183
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002184if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002185 s_j_remote = executable('systemd-journal-remote',
2186 systemd_journal_remote_sources,
2187 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002188 link_with : [libshared,
2189 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002190 dependencies : [threads,
2191 libmicrohttpd,
2192 libgnutls,
2193 libxz,
2194 liblz4],
2195 install_rpath : rootlibexecdir,
2196 install : true,
2197 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002198
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002199 s_j_gatewayd = executable('systemd-journal-gatewayd',
2200 systemd_journal_gatewayd_sources,
2201 include_directories : includes,
2202 link_with : [libshared],
2203 dependencies : [threads,
2204 libmicrohttpd,
2205 libgnutls,
2206 libxz,
2207 liblz4],
2208 install_rpath : rootlibexecdir,
2209 install : true,
2210 install_dir : rootlibexecdir)
2211 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002212endif
2213
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002214if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002215 executable('systemd-coredump',
2216 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002217 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002218 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002219 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002220 libacl,
2221 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002222 libxz,
2223 liblz4],
2224 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002225 install : true,
2226 install_dir : rootlibexecdir)
2227
2228 exe = executable('coredumpctl',
2229 coredumpctl_sources,
2230 include_directories : includes,
2231 link_with : [libshared],
2232 dependencies : [threads,
2233 libxz,
2234 liblz4],
2235 install_rpath : rootlibexecdir,
2236 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002237 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002238endif
2239
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002240if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002241 exe = executable('systemd-binfmt',
2242 'src/binfmt/binfmt.c',
2243 include_directories : includes,
2244 link_with : [libshared],
2245 install_rpath : rootlibexecdir,
2246 install : true,
2247 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002248 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002249
2250 meson.add_install_script('sh', '-c',
2251 mkdir_p.format(binfmtdir))
2252 meson.add_install_script('sh', '-c',
2253 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2254endif
2255
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002256if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002257 executable('systemd-vconsole-setup',
2258 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002259 include_directories : includes,
2260 link_with : [libshared],
2261 install_rpath : rootlibexecdir,
2262 install : true,
2263 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002264endif
2265
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002266if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002267 executable('systemd-random-seed',
2268 'src/random-seed/random-seed.c',
2269 include_directories : includes,
2270 link_with : [libshared],
2271 install_rpath : rootlibexecdir,
2272 install : true,
2273 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002274endif
2275
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002276if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002277 executable('systemd-firstboot',
2278 'src/firstboot/firstboot.c',
2279 include_directories : includes,
2280 link_with : [libshared],
2281 dependencies : [libcrypt],
2282 install_rpath : rootlibexecdir,
2283 install : true,
2284 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002285endif
2286
2287executable('systemd-remount-fs',
2288 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002289 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002290 link_with : [libcore_shared,
2291 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002292 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002293 install : true,
2294 install_dir : rootlibexecdir)
2295
2296executable('systemd-machine-id-setup',
2297 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002298 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002299 link_with : [libcore_shared,
2300 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002301 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002302 install : true,
2303 install_dir : rootbindir)
2304
2305executable('systemd-fsck',
2306 'src/fsck/fsck.c',
2307 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002308 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002309 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002310 install : true,
2311 install_dir : rootlibexecdir)
2312
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002313executable('systemd-growfs',
2314 'src/partition/growfs.c',
2315 include_directories : includes,
2316 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002317 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002318 install_rpath : rootlibexecdir,
2319 install : true,
2320 install_dir : rootlibexecdir)
2321
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002322executable('systemd-makefs',
2323 'src/partition/makefs.c',
2324 include_directories : includes,
2325 link_with : [libshared],
2326 install_rpath : rootlibexecdir,
2327 install : true,
2328 install_dir : rootlibexecdir)
2329
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002330executable('systemd-sleep',
2331 'src/sleep/sleep.c',
2332 include_directories : includes,
2333 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002334 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002335 install : true,
2336 install_dir : rootlibexecdir)
2337
Yu Watanabed25e1272019-01-03 02:32:57 +09002338install_data('src/sleep/sleep.conf',
2339 install_dir : pkgsysconfdir)
2340
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002341exe = executable('systemd-sysctl',
2342 'src/sysctl/sysctl.c',
2343 include_directories : includes,
2344 link_with : [libshared],
2345 install_rpath : rootlibexecdir,
2346 install : true,
2347 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002348public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002349
2350executable('systemd-ac-power',
2351 'src/ac-power/ac-power.c',
2352 include_directories : includes,
2353 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002354 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002355 install : true,
2356 install_dir : rootlibexecdir)
2357
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002358exe = executable('systemd-detect-virt',
2359 'src/detect-virt/detect-virt.c',
2360 include_directories : includes,
2361 link_with : [libshared],
2362 install_rpath : rootlibexecdir,
2363 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002364public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002365
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002366exe = executable('systemd-delta',
2367 'src/delta/delta.c',
2368 include_directories : includes,
2369 link_with : [libshared],
2370 install_rpath : rootlibexecdir,
2371 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002372public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002373
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002374exe = executable('systemd-escape',
2375 'src/escape/escape.c',
2376 include_directories : includes,
2377 link_with : [libshared],
2378 install_rpath : rootlibexecdir,
2379 install : true,
2380 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002381public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002382
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002383exe = executable('systemd-notify',
2384 'src/notify/notify.c',
2385 include_directories : includes,
2386 link_with : [libshared],
2387 install_rpath : rootlibexecdir,
2388 install : true,
2389 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002390public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002391
2392executable('systemd-volatile-root',
2393 'src/volatile-root/volatile-root.c',
2394 include_directories : includes,
2395 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002396 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002397 install : true,
2398 install_dir : rootlibexecdir)
2399
2400executable('systemd-cgroups-agent',
2401 'src/cgroups-agent/cgroups-agent.c',
2402 include_directories : includes,
2403 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002404 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002405 install : true,
2406 install_dir : rootlibexecdir)
2407
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002408exe = executable('systemd-id128',
2409 'src/id128/id128.c',
2410 include_directories : includes,
2411 link_with : [libshared],
2412 install_rpath : rootlibexecdir,
2413 install : true)
2414public_programs += exe
2415
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002416exe = executable('systemd-path',
2417 'src/path/path.c',
2418 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002419 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002420 install_rpath : rootlibexecdir,
2421 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002422public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002423
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002424exe = executable('systemd-ask-password',
2425 'src/ask-password/ask-password.c',
2426 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002427 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002428 install_rpath : rootlibexecdir,
2429 install : true,
2430 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002431public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002432
2433executable('systemd-reply-password',
2434 'src/reply-password/reply-password.c',
2435 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002436 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002437 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002438 install : true,
2439 install_dir : rootlibexecdir)
2440
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002441exe = executable('systemd-tty-ask-password-agent',
2442 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2443 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002444 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002445 install_rpath : rootlibexecdir,
2446 install : true,
2447 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002448public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002449
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002450exe = executable('systemd-cgls',
2451 'src/cgls/cgls.c',
2452 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002453 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002454 install_rpath : rootlibexecdir,
2455 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002456public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002457
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002458exe = executable('systemd-cgtop',
2459 'src/cgtop/cgtop.c',
2460 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002461 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002462 install_rpath : rootlibexecdir,
2463 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002464public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002465
2466executable('systemd-initctl',
2467 'src/initctl/initctl.c',
2468 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002469 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002470 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002471 install : true,
2472 install_dir : rootlibexecdir)
2473
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002474exe = executable('systemd-mount',
2475 'src/mount/mount-tool.c',
2476 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002477 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek7d991d42019-04-04 13:41:47 +02002478 dependencies: [libmount],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002479 install_rpath : rootlibexecdir,
2480 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002481public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002482
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002483meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002484 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002485
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002486exe = executable('systemd-run',
2487 'src/run/run.c',
2488 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002489 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002490 install_rpath : rootlibexecdir,
2491 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002492public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002493
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002494exe = executable('systemd-stdio-bridge',
2495 'src/stdio-bridge/stdio-bridge.c',
2496 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002497 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002498 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002499 install_rpath : rootlibexecdir,
2500 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002501public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002502
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002503exe = executable('busctl',
2504 'src/busctl/busctl.c',
2505 'src/busctl/busctl-introspect.c',
2506 'src/busctl/busctl-introspect.h',
2507 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002508 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002509 install_rpath : rootlibexecdir,
2510 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002511public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002512
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002513if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002514 exe = executable('systemd-sysusers',
2515 'src/sysusers/sysusers.c',
2516 include_directories : includes,
2517 link_with : [libshared],
2518 install_rpath : rootlibexecdir,
2519 install : true,
2520 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002521 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002522endif
2523
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002524if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002525 exe = executable('systemd-tmpfiles',
2526 'src/tmpfiles/tmpfiles.c',
2527 include_directories : includes,
2528 link_with : [libshared],
2529 dependencies : [libacl],
2530 install_rpath : rootlibexecdir,
2531 install : true,
2532 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002533 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002534
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002535 if want_tests != 'false'
2536 test('test-systemd-tmpfiles',
2537 test_systemd_tmpfiles_py,
2538 # https://github.com/mesonbuild/meson/issues/2681
2539 args : exe.full_path())
2540 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002541endif
2542
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002543if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002544 exe = executable('systemd-hwdb',
2545 'src/hwdb/hwdb.c',
2546 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2547 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002548 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002549 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002550 install : true,
2551 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002552 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002553endif
2554
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002555if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002556 executable('systemd-quotacheck',
2557 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002558 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002559 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002560 install_rpath : rootlibexecdir,
2561 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002562 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002563endif
2564
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002565exe = executable('systemd-socket-proxyd',
2566 'src/socket-proxy/socket-proxyd.c',
2567 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002568 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002569 dependencies : [threads],
2570 install_rpath : rootlibexecdir,
2571 install : true,
2572 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002573public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002574
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002575exe = executable('systemd-udevd',
2576 systemd_udevd_sources,
2577 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002578 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002579 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002580 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002581 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002582 dependencies : [versiondep,
2583 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002584 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002585 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002586 libacl,
2587 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002588 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002589 install : true,
2590 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002591public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002592
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002593exe = executable('udevadm',
2594 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002595 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002596 include_directories : includes,
2597 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002598 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002599 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002600 dependencies : [versiondep,
2601 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002602 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002603 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002604 libacl,
2605 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002606 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002607 install : true,
2608 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002609public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002610
2611executable('systemd-shutdown',
2612 systemd_shutdown_sources,
2613 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002614 link_with : [libcore_shared,
2615 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002616 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002617 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002618 install : true,
2619 install_dir : rootlibexecdir)
2620
2621executable('systemd-update-done',
2622 'src/update-done/update-done.c',
2623 include_directories : includes,
2624 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002625 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002626 install : true,
2627 install_dir : rootlibexecdir)
2628
2629executable('systemd-update-utmp',
2630 'src/update-utmp/update-utmp.c',
2631 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002632 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002633 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002634 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002635 install : true,
2636 install_dir : rootlibexecdir)
2637
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002638if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002639 executable('systemd-modules-load',
2640 'src/modules-load/modules-load.c',
2641 include_directories : includes,
2642 link_with : [libshared],
2643 dependencies : [libkmod],
2644 install_rpath : rootlibexecdir,
2645 install : true,
2646 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002647
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002648 meson.add_install_script('sh', '-c',
2649 mkdir_p.format(modulesloaddir))
2650 meson.add_install_script('sh', '-c',
2651 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002652endif
2653
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002654exe = executable('systemd-nspawn',
2655 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002656 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002657 link_with : [libcore_shared,
2658 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002659 libshared],
Franck Bui82384232019-03-22 11:09:08 +01002660 dependencies : [libblkid,
2661 libseccomp],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002662 install_rpath : rootlibexecdir,
2663 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002664public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002665
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002666if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002667 executable('systemd-networkd',
2668 systemd_networkd_sources,
2669 include_directories : includes,
2670 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002671 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002672 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002673 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002674 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002675 install_rpath : rootlibexecdir,
2676 install : true,
2677 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002678
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002679 executable('systemd-networkd-wait-online',
2680 systemd_networkd_wait_online_sources,
2681 include_directories : includes,
2682 link_with : [libnetworkd_core,
2683 libshared],
2684 install_rpath : rootlibexecdir,
2685 install : true,
2686 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002687
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002688 exe = executable('networkctl',
2689 networkctl_sources,
2690 include_directories : includes,
2691 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002692 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002693 install_rpath : rootlibexecdir,
2694 install : true,
2695 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002696 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002697endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002698
2699executable('systemd-sulogin-shell',
2700 ['src/sulogin-shell/sulogin-shell.c'],
2701 include_directories : includes,
2702 link_with : [libshared],
2703 install_rpath : rootlibexecdir,
2704 install : true,
2705 install_dir : rootlibexecdir)
2706
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002707############################################################
2708
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002709custom_target(
2710 'systemd-runtest.env',
2711 output : 'systemd-runtest.env',
2712 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05002713 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002714 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002715 '} >@OUTPUT@'],
2716 build_by_default : true)
2717
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002718foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002719 sources = tuple[0]
2720 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2721 dependencies = tuple[2]
2722 condition = tuple.length() >= 4 ? tuple[3] : ''
2723 type = tuple.length() >= 5 ? tuple[4] : ''
2724 defs = tuple.length() >= 6 ? tuple[5] : []
2725 incs = tuple.length() >= 7 ? tuple[6] : includes
2726 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002727
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002728 name = sources[0].split('/')[-1].split('.')[0]
2729 if type.startswith('timeout=')
2730 timeout = type.split('=')[1].to_int()
2731 type = ''
2732 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002733
2734 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002735 exe = executable(
2736 name,
2737 sources,
2738 include_directories : incs,
2739 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002740 dependencies : [versiondep,
2741 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002742 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002743 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002744 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002745 install : install_tests,
2746 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002747
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002748 if type == 'manual'
2749 message('@0@ is a manual test'.format(name))
2750 elif type == 'unsafe' and want_tests != 'unsafe'
2751 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002752 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002753 test(name, exe,
2754 env : test_env,
2755 timeout : timeout)
2756 endif
2757 else
2758 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2759 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002760endforeach
2761
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002762exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002763 'test-libsystemd-sym',
2764 test_libsystemd_sym_c,
2765 include_directories : includes,
2766 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002767 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002768 install : install_tests,
2769 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002770if want_tests != 'false'
2771 test('test-libsystemd-sym', exe)
2772endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002773
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002774exe = executable(
2775 'test-libsystemd-static-sym',
2776 test_libsystemd_sym_c,
2777 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002778 link_with : [install_libsystemd_static],
2779 dependencies : [threads], # threads is already included in dependencies on the library,
2780 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002781 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002782 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002783 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002784if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002785 test('test-libsystemd-static-sym', exe)
2786endif
2787
2788exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002789 'test-libudev-sym',
2790 test_libudev_sym_c,
2791 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002792 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002793 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002794 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002795 install : install_tests,
2796 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002797if want_tests != 'false'
2798 test('test-libudev-sym', exe)
2799endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002800
2801exe = executable(
2802 'test-libudev-static-sym',
2803 test_libudev_sym_c,
2804 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002805 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002806 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002807 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002808 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002809 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002810if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002811 test('test-libudev-static-sym', exe)
2812endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002813
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002814############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002815
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002816fuzzer_exes = []
2817
Michael Olbrich59967402018-11-11 11:27:35 +01002818if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002819foreach tuple : fuzzers
2820 sources = tuple[0]
2821 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2822 dependencies = tuple[2]
2823 defs = tuple.length() >= 4 ? tuple[3] : []
2824 incs = tuple.length() >= 5 ? tuple[4] : includes
2825
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002826 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002827 dependencies += fuzzing_engine
2828 else
2829 sources += 'src/fuzz/fuzz-main.c'
2830 endif
2831
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00002832 if want_fuzzbuzz
2833 sources += 'src/fuzz/fuzzer-entry-point.c'
2834 endif
2835
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002836 name = sources[0].split('/')[-1].split('.')[0]
2837
2838 fuzzer_exes += executable(
2839 name,
2840 sources,
2841 include_directories : [incs, include_directories('src/fuzz')],
2842 link_with : link_with,
2843 dependencies : dependencies,
2844 c_args : defs,
2845 install : false)
2846endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002847endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002848
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01002849run_target('fuzzers',
2850 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002851 command : ['true'])
2852
2853############################################################
2854
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002855make_directive_index_py = find_program('tools/make-directive-index.py')
2856make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002857xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002858hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002859
2860subdir('units')
2861subdir('sysctl.d')
2862subdir('sysusers.d')
2863subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002864subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002865subdir('hwdb')
2866subdir('network')
2867subdir('man')
2868subdir('shell-completion/bash')
2869subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002870subdir('docs/sysvinit')
2871subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002872
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002873install_subdir('factory/etc',
2874 install_dir : factorydir)
2875
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002876install_data('xorg/50-systemd-user.sh',
2877 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002878install_data('modprobe.d/systemd.conf',
2879 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002880install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002881 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002882 'NEWS',
2883 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302884 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002885 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002886 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302887 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002888 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002889 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002890 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002891 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2892 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002893
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002894meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2895meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2896
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002897############################################################
2898
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002899meson_check_help = find_program('tools/meson-check-help.sh')
2900
2901foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002902 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002903 if want_tests != 'false'
2904 test('check-help-' + name,
2905 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002906 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002907 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002908endforeach
2909
2910############################################################
2911
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002912# Enable tests for all supported sanitizers
2913foreach tuple : sanitizers
2914 sanitizer = tuple[0]
2915 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002916
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002917 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002918 prev = ''
2919 foreach p : fuzz_regression_tests
2920 b = p.split('/')[-2]
2921 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002922
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002923 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002924
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002925 if name != prev
2926 if want_tests == 'false'
2927 message('Not compiling @0@ because tests is set to false'.format(name))
2928 elif slow_tests
2929 exe = custom_target(
2930 name,
2931 output : name,
2932 depends : build,
2933 command : [env, 'ln', '-fs',
2934 join_paths(build.full_path(), b),
2935 '@OUTPUT@'],
2936 build_by_default : true)
2937 else
2938 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2939 endif
2940 endif
2941 prev = name
2942
2943 if want_tests != 'false' and slow_tests
2944 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2945 env,
2946 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05002947 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002948 endif
2949 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002950 endif
2951endforeach
2952
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002953
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002954############################################################
2955
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002956if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002957 all_files = run_command(
2958 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05002959 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002960 'ls-files',
2961 ':/*.[ch]'])
2962 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002963
userwithuide85a6902017-08-09 13:41:44 +00002964 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002965 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002966 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05002967 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00002968 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002969 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05002970 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002971endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002972
2973if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002974 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002975 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002976 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002977 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002978endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002979
2980if git.found()
2981 git_head = run_command(
2982 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05002983 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002984 'rev-parse', 'HEAD']).stdout().strip()
2985 git_head_short = 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', '--short=7', 'HEAD']).stdout().strip()
2989
2990 run_target(
2991 'git-snapshot',
2992 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05002993 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002994 git_head_short),
2995 '--prefix', 'systemd-@0@/'.format(git_head),
2996 'HEAD'])
2997endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002998
2999############################################################
3000
Lennart Poettering51b13862017-12-20 12:51:14 +01003001meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3002run_target(
3003 'check-api-docs',
3004 depends : [man, libsystemd, libudev],
3005 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3006
3007############################################################
3008
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003009status = [
3010 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3011
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003012 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003013 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003014 'prefix directory: @0@'.format(prefixdir),
3015 'rootprefix directory: @0@'.format(rootprefixdir),
3016 'sysconf directory: @0@'.format(sysconfdir),
3017 'include directory: @0@'.format(includedir),
3018 'lib directory: @0@'.format(libdir),
3019 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003020 'SysV init scripts: @0@'.format(sysvinit_path),
3021 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003022 'PAM modules directory: @0@'.format(pamlibdir),
3023 'PAM configuration directory: @0@'.format(pamconfdir),
3024 'RPM macros directory: @0@'.format(rpmmacrosdir),
3025 'modprobe.d directory: @0@'.format(modprobedir),
3026 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3027 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3028 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3029 'bash completions directory: @0@'.format(bashcompletiondir),
3030 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003031 'extra start script: @0@'.format(get_option('rc-local')),
3032 'extra stop script: @0@'.format(get_option('halt-local')),
3033 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3034 get_option('debug-tty')),
3035 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003036 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003037 'maximum system UID: @0@'.format(system_uid_max),
3038 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003039 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3040 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3041 'minimum container UID base: @0@'.format(container_uid_base_min),
3042 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003043 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003044 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003045 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003046 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003047 'nobody user name: @0@'.format(nobody_user),
3048 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003049 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003050 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003051
3052 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003053 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003054 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003055 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003056 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
3057 'default locale: @0@'.format(default_locale)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003058
3059alt_dns_servers = '\n '.join(dns_servers.split(' '))
3060alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3061status += [
3062 'default DNS servers: @0@'.format(alt_dns_servers),
3063 'default NTP servers: @0@'.format(alt_ntp_servers)]
3064
3065alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3066 '@@0@'.format(time_epoch)).stdout().strip()
3067status += [
3068 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3069
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003070status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003071 'static libsystemd: @0@'.format(static_libsystemd),
3072 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003073
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003074# TODO:
3075# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3076# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3077# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3078
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003079if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003080 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003081
3082 if have_gnu_efi
3083 status += [
3084 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003085 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003086 'EFI lib directory: @0@'.format(efi_libdir),
3087 'EFI lds directory: @0@'.format(efi_ldsdir),
3088 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003089 endif
3090endif
3091
3092found = []
3093missing = []
3094
3095foreach tuple : [
3096 ['libcryptsetup'],
3097 ['PAM'],
3098 ['AUDIT'],
3099 ['IMA'],
3100 ['AppArmor'],
3101 ['SELinux'],
3102 ['SECCOMP'],
3103 ['SMACK'],
3104 ['zlib'],
3105 ['xz'],
3106 ['lz4'],
3107 ['bzip2'],
3108 ['ACL'],
3109 ['gcrypt'],
3110 ['qrencode'],
3111 ['microhttpd'],
3112 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003113 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003114 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003115 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003116 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003117 ['libidn'],
3118 ['libiptc'],
3119 ['elfutils'],
3120 ['binfmt'],
3121 ['vconsole'],
3122 ['quotacheck'],
3123 ['tmpfiles'],
3124 ['environment.d'],
3125 ['sysusers'],
3126 ['firstboot'],
3127 ['randomseed'],
3128 ['backlight'],
3129 ['rfkill'],
3130 ['logind'],
3131 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003132 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003133 ['importd'],
3134 ['hostnamed'],
3135 ['timedated'],
3136 ['timesyncd'],
3137 ['localed'],
3138 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003139 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003140 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3141 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003142 ['coredump'],
3143 ['polkit'],
3144 ['legacy pkla', install_polkit_pkla],
3145 ['efi'],
3146 ['gnu-efi', have_gnu_efi],
3147 ['kmod'],
3148 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003149 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003150 ['blkid'],
3151 ['dbus'],
3152 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003153 ['nss-myhostname'],
3154 ['nss-mymachines'],
3155 ['nss-resolve'],
3156 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003157 ['hwdb'],
3158 ['tpm'],
3159 ['man pages', want_man],
3160 ['html pages', want_html],
3161 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003162 ['SysV compat'],
3163 ['utmp'],
3164 ['ldconfig'],
3165 ['hibernate'],
3166 ['adm group', get_option('adm-group')],
3167 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003168 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003169 ['debug hashmap'],
3170 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003171 ['debug siphash'],
Yu Watanabe20e97dd2018-11-23 00:28:27 +09003172 ['debug udev'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003173 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003174 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003175 ['link-udev-shared', get_option('link-udev-shared')],
3176 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003177]
3178
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003179 if tuple.length() >= 2
3180 cond = tuple[1]
3181 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003182 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3183 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003184 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003185 endif
3186 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003187 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003188 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003189 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003190 endif
3191endforeach
3192
3193status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003194 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003195 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003196 '',
3197 'disabled features: @0@'.format(', '.join(missing)),
3198 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003199message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003200
3201if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003202 warning('\n' +
3203 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3204 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3205 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003206endif