blob: 3a936947bb2cf085e4f3f1fdc8dd241cb54e2f4f [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')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400116xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900117rpmmacrosdir = get_option('rpmmacrosdir')
118if rpmmacrosdir != 'no'
119 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
120endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200121modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400122
123# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400124pkgdatadir = join_paths(datadir, 'systemd')
125environmentdir = join_paths(prefixdir, 'lib/environment.d')
126pkgsysconfdir = join_paths(sysconfdir, 'systemd')
127userunitdir = join_paths(prefixdir, 'lib/systemd/user')
128userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
129tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
130sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
131sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
132binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
133modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
134networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
135pkgincludedir = join_paths(includedir, 'systemd')
136systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
137usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
138systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
139userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
140systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
141systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
142systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
143systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
144udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400145udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
146udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
147catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
148kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
149factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400150bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
151testsdir = join_paths(prefixdir, 'lib/systemd/tests')
152systemdstatedir = join_paths(localstatedir, 'lib/systemd')
153catalogstatedir = join_paths(systemdstatedir, 'catalog')
154randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200155profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400156
tblume75aaade2018-02-01 22:46:15 +0100157docdir = get_option('docdir')
158if docdir == ''
159 docdir = join_paths(datadir, 'doc/systemd')
160endif
161
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400162dbuspolicydir = get_option('dbuspolicydir')
163if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400164 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400165endif
166
167dbussessionservicedir = get_option('dbussessionservicedir')
168if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400169 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400170endif
171
172dbussystemservicedir = get_option('dbussystemservicedir')
173if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400174 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400175endif
176
177pamlibdir = get_option('pamlibdir')
178if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400179 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400180endif
181
182pamconfdir = get_option('pamconfdir')
183if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400184 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400185endif
186
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100187memory_accounting_default = get_option('memory-accounting-default')
188
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400189conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400190conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400191conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
192conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
193conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400194conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100195
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100196conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100197
Michael Bieble17e5ba2017-04-13 10:30:56 -0400198conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400199conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
200conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400201conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
202conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
203conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
204conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100205conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100206conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400207conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
208conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
209conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
210conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
211conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100212conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400213conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400214conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
215conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400216conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
217conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
218conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
219conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
220conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
221conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400222conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
223conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700224conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700225conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400226conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400227conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400228conf.set_quoted('LIBDIR', libdir)
229conf.set_quoted('ROOTLIBDIR', rootlibdir)
230conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
231conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400232conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
233conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
Lennart Poettering1d7579c2018-10-10 21:20:08 +0200234conf.set_quoted('SYSTEMD_IMPORT_FS_PATH', join_paths(rootlibexecdir, 'systemd-import-fs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400235conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
236conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
237conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
238conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200239conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100240conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400241
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400242substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100243substs.set('rootprefix', rootprefixdir)
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +0100244substs.set('rootprefix_noslash', rootprefixdir_noslash)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400245substs.set('exec_prefix', prefixdir)
246substs.set('libdir', libdir)
247substs.set('rootlibdir', rootlibdir)
248substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100249substs.set('sysconfdir', sysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400250substs.set('bindir', bindir)
251substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400252substs.set('rootlibexecdir', rootlibexecdir)
253substs.set('systemunitdir', systemunitdir)
254substs.set('userunitdir', userunitdir)
255substs.set('systempresetdir', systempresetdir)
256substs.set('userpresetdir', userpresetdir)
257substs.set('udevhwdbdir', udevhwdbdir)
258substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400259substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200260substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400261substs.set('catalogdir', catalogdir)
262substs.set('tmpfilesdir', tmpfilesdir)
263substs.set('sysusersdir', sysusersdir)
264substs.set('sysctldir', sysctldir)
265substs.set('binfmtdir', binfmtdir)
266substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200267substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400268substs.set('systemgeneratordir', systemgeneratordir)
269substs.set('usergeneratordir', usergeneratordir)
270substs.set('systemenvgeneratordir', systemenvgeneratordir)
271substs.set('userenvgeneratordir', userenvgeneratordir)
272substs.set('systemshutdowndir', systemshutdowndir)
273substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400274substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400275substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
276substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400277substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
278substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
279substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100280substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200281substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmeke9bbff12019-05-09 13:23:50 +0200282substs.set('BUILD_ROOT', meson.current_build_dir())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400283
284#####################################################################
285
286cc = meson.get_compiler('c')
287pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400288check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100289meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400290
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200291want_tests = get_option('tests')
292slow_tests = want_tests != 'false' and get_option('slow-tests')
293install_tests = get_option('install-tests')
294
James Hilliard46e63a22018-12-27 09:16:20 +0800295if add_languages('cpp', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200296 # Used only for tests
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200297 cxx_cmd = ' '.join(meson.get_compiler('cpp').cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200298else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200299 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400300endif
301
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500302if want_libfuzzer
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +0200303 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer', required : false)
304 if fuzzing_engine.found()
305 add_project_arguments('-fsanitize-coverage=trace-pc-guard,trace-cmp', language : 'c')
306 elif cc.has_argument('-fsanitize=fuzzer-no-link')
307 add_project_arguments('-fsanitize=fuzzer-no-link', language : 'c')
308 else
309 error('Looks like neither libFuzzer nor -fsanitize=fuzzer-no-link is supported')
310 endif
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200311elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500312 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000313elif want_fuzzbuzz
314 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 -0500315endif
316
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900317possible_cc_flags = [
318 '-Wextra',
319 '-Werror=undef',
320 '-Wlogical-op',
321 '-Wmissing-include-dirs',
322 '-Wold-style-definition',
323 '-Wpointer-arith',
324 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900325 '-Wfloat-equal',
326 '-Wsuggest-attribute=noreturn',
327 '-Werror=missing-prototypes',
328 '-Werror=implicit-function-declaration',
329 '-Werror=missing-declarations',
330 '-Werror=return-type',
331 '-Werror=incompatible-pointer-types',
332 '-Werror=format=2',
333 '-Wstrict-prototypes',
334 '-Wredundant-decls',
335 '-Wmissing-noreturn',
336 '-Wimplicit-fallthrough=5',
337 '-Wshadow',
338 '-Wendif-labels',
339 '-Wstrict-aliasing=2',
340 '-Wwrite-strings',
341 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200342 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200343 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900344 '-Wdate-time',
345 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700346
347 # negative arguments are correctly detected starting with meson 0.46.
348 '-Wno-unused-parameter',
349 '-Wno-missing-field-initializers',
350 '-Wno-unused-result',
351 '-Wno-format-signedness',
Zbigniew Jędrzejewski-Szmekeed33622019-03-07 10:56:15 +0100352 '-Wno-error=#warnings', # clang
353 '-Wno-string-plus-int', # clang
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700354
355 # work-around for gcc 7.1 turning this on on its own.
356 '-Wno-error=nonnull',
357
358 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
359 # optimizations enabled, producing essentially false positives.
360 '-Wno-maybe-uninitialized',
361
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900362 '-ffast-math',
363 '-fno-common',
364 '-fdiagnostics-show-option',
365 '-fno-strict-aliasing',
366 '-fvisibility=hidden',
367 '-fstack-protector',
368 '-fstack-protector-strong',
369 '--param=ssp-buffer-size=4',
370]
371
372# --as-needed and --no-undefined are provided by meson by default,
373# run mesonconf to see what is enabled
374possible_link_flags = [
375 '-Wl,-z,relro',
376 '-Wl,-z,now',
377]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400378
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900379if cc.get_id() == 'clang'
380 possible_cc_flags += [
381 '-Wno-typedef-redefinition',
382 '-Wno-gnu-variable-sized-type-not-at-end',
383 ]
384endif
385
386if get_option('buildtype') != 'debug'
387 possible_cc_flags += [
388 '-ffunction-sections',
389 '-fdata-sections',
390 ]
391
392 possible_link_flags += '-Wl,--gc-sections'
393endif
394
Zbigniew Jędrzejewski-Szmeka73f6212019-03-28 09:44:02 +0100395if get_option('b_ndebug') == 'true'
396 # With asserts disabled with get a bunch of warnings about variables which
397 # are used only in the asserts. This is not useful at all, so let's just silence
398 # those warnings.
399 possible_cc_flags += [
400 '-Wno-unused-variable',
401 '-Wno-unused-but-set-variable',
402 ]
403endif
404
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900405add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900406add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900407
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800408if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400409 #include <time.h>
410 #include <inttypes.h>
411 typedef uint64_t usec_t;
412 usec_t now(clockid_t clock);
413 int main(void) {
414 struct timespec now;
415 return 0;
416 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100417''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400418 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400419endif
420
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200421cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400422
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200423has_wstringop_truncation = cc.has_argument('-Wstringop-truncation')
424
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400425#####################################################################
426# compilation result tests
427
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400428conf.set('_GNU_SOURCE', true)
429conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200430conf.set10('HAVE_WSTRINGOP_TRUNCATION', has_wstringop_truncation)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400431
432conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
433conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
434conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
435conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
436conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
437conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
438conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
439
440decl_headers = '''
441#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100442#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400443'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400444
445foreach decl : ['char16_t',
446 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100447 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400448 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400449
450 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200451 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
452
453 if decl == 'struct statx'
454 if have
455 want_linux_stat_h = false
456 else
457 have = cc.sizeof(decl,
458 prefix : decl_headers + '#include <linux/stat.h>',
459 args : '-D_GNU_SOURCE') > 0
460 want_linux_stat_h = have
461 endif
462 endif
463
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200464 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400465endforeach
466
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200467conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700468
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400469foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200470 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400471endforeach
472
473foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100474 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100475 ['gettid', '''#include <sys/types.h>
476 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100477 ['pivot_root', '''#include <stdlib.h>
478 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100479 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400480 #include <sys/stat.h>
481 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100482 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100483 ['renameat2', '''#include <stdio.h>
484 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400485 ['kcmp', '''#include <linux/kcmp.h>'''],
486 ['keyctl', '''#include <sys/types.h>
487 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100488 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400489 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200490 ['bpf', '''#include <sys/syscall.h>
491 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100492 ['statx', '''#include <sys/types.h>
493 #include <sys/stat.h>
494 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100495 ['explicit_bzero' , '''#include <string.h>'''],
496 ['reallocarray', '''#include <malloc.h>'''],
Michal Sekletarb070c7c2019-03-12 18:58:26 +0100497 ['set_mempolicy', '''#include <stdlib.h>
498 #include <unistd.h>'''],
499 ['get_mempolicy', '''#include <stdlib.h>
500 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400501]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400502
Lennart Poettering85db59b2017-12-25 12:01:14 +0100503 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200504 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400505endforeach
506
Lennart Poettering85db59b2017-12-25 12:01:14 +0100507if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200508 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200509 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400510else
511 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200512 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200513 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400514endif
515
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400516#####################################################################
517
Davide Cavalca1485aac2019-02-27 11:19:07 -0500518vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
519 project_source_root,
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100520 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100521 meson.project_version()]
522
Louis Taylord1084aa2019-01-21 21:45:36 +0000523version_h = vcs_tag(
524 input : 'src/version/version.h.in',
525 output : 'version.h',
526 command: vcs_tagger)
527
528versiondep = declare_dependency(sources: version_h)
529
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400530sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400531awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400532m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400533stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400534git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100535env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100536perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400537
Davide Cavalca1485aac2019-02-27 11:19:07 -0500538meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400539mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400540test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
541splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400542
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400543# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
544# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500545progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400546 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400547 ['kmod', '/usr/bin/kmod' ],
548 ['kexec', '/usr/sbin/kexec' ],
549 ['sulogin', '/usr/sbin/sulogin' ],
550 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
551 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
552 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
553 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
554 ]
555foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400556 path = get_option(prog[0] + '-path')
557 if path != ''
558 message('Using @1@ for @0@'.format(prog[0], path))
559 else
560 exe = find_program(prog[0],
561 '/usr/sbin/' + prog[0],
562 '/sbin/' + prog[0],
563 required: false)
564 path = exe.found() ? exe.path() : prog[1]
565 endif
566 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
567 conf.set_quoted(name, path)
568 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400569endforeach
570
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500571conf.set_quoted('TELINIT', get_option('telinit-path'))
572
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400573if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100574 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400575endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400576
577############################################################
578
579gperf = find_program('gperf')
580
581gperf_test_format = '''
582#include <string.h>
583const char * in_word_set(const char *, @0@);
584@1@
585'''
586gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
587gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
588gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
589if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400590 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400591else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400592 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
593 if cc.compiles(gperf_test)
594 gperf_len_type = 'unsigned'
595 else
596 error('unable to determine gperf len type')
597 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400598endif
599message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400600conf.set('GPERF_LEN_TYPE', gperf_len_type,
601 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400602
603############################################################
604
605if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400606 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400607endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100608foreach header : ['crypt.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400609 'linux/memfd.h',
610 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200611 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400612 'valgrind/memcheck.h',
613 'valgrind/valgrind.h',
614 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400615
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200616 conf.set10('HAVE_' + header.underscorify().to_upper(),
617 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400618endforeach
619
620############################################################
621
622conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400623conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
624gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400625
626default_hierarchy = get_option('default-hierarchy')
627conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
628 description : 'default cgroup hierarchy as string')
629if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400630 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400631elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400632 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400633else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400634 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400635endif
636
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100637default_net_naming_scheme = get_option('default-net-naming-scheme')
638conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
639
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400640time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900641if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400642 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900643 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400644endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400645conf.set('TIME_EPOCH', time_epoch)
646
647system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900648if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400649 system_uid_max = run_command(
650 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800651 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
652 '/etc/login.defs').stdout().strip()
653 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900654 system_uid_max = 999
655 else
656 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800657 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400658endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400659conf.set('SYSTEM_UID_MAX', system_uid_max)
660substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400661
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400662system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900663if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400664 system_gid_max = run_command(
665 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800666 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
667 '/etc/login.defs').stdout().strip()
668 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900669 system_gid_max = 999
670 else
671 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800672 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400673endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400674conf.set('SYSTEM_GID_MAX', system_gid_max)
675substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400676
Yu Watanabeac093402018-05-10 16:04:16 +0900677dynamic_uid_min = get_option('dynamic-uid-min')
678dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100679conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
680conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
681substs.set('dynamicuidmin', dynamic_uid_min)
682substs.set('dynamicuidmax', dynamic_uid_max)
683
Yu Watanabeac093402018-05-10 16:04:16 +0900684container_uid_base_min = get_option('container-uid-base-min')
685container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100686conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
687conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
688substs.set('containeruidbasemin', container_uid_base_min)
689substs.set('containeruidbasemax', container_uid_base_max)
690
Lennart Poetteringafde4572017-12-05 11:00:24 +0100691nobody_user = get_option('nobody-user')
692nobody_group = get_option('nobody-group')
693
Chen Qi2484bff2018-07-23 14:53:09 +0800694if not meson.is_cross_build()
695 getent_result = run_command('getent', 'passwd', '65534')
696 if getent_result.returncode() == 0
697 name = getent_result.stdout().split(':')[0]
698 if name != nobody_user
699 warning('\n' +
700 '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) +
701 'Your build will result in an user table setup that is incompatible with the local system.')
702 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100703 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800704 id_result = run_command('id', '-u', nobody_user)
705 if id_result.returncode() == 0
706 id = id_result.stdout().to_int()
707 if id != 65534
708 warning('\n' +
709 '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) +
710 'Your build will result in an user table setup that is incompatible with the local system.')
711 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100712 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100713
Chen Qi2484bff2018-07-23 14:53:09 +0800714 getent_result = run_command('getent', 'group', '65534')
715 if getent_result.returncode() == 0
716 name = getent_result.stdout().split(':')[0]
717 if name != nobody_group
718 warning('\n' +
719 '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) +
720 'Your build will result in an group table setup that is incompatible with the local system.')
721 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100722 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800723 id_result = run_command('id', '-g', nobody_group)
724 if id_result.returncode() == 0
725 id = id_result.stdout().to_int()
726 if id != 65534
727 warning('\n' +
728 '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) +
729 'Your build will result in an group table setup that is incompatible with the local system.')
730 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100731 endif
732endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900733if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900734 warning('\n' +
735 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
736 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900737endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100738
739conf.set_quoted('NOBODY_USER_NAME', nobody_user)
740conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900741substs.set('NOBODY_USER_NAME', nobody_user)
742substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100743
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400744tty_gid = get_option('tty-gid')
745conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400746substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400747
Ikey Doherty84786b82017-12-03 12:28:23 +0000748# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900749users_gid = get_option('users-gid')
750substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000751
Yu Watanabe348b4432018-05-07 18:17:35 +0900752conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
753conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400754
Michael Bieblace5e312018-07-13 23:36:13 +0200755dev_kvm_mode = get_option('dev-kvm-mode')
756substs.set('DEV_KVM_MODE', dev_kvm_mode)
757conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100758group_render_mode = get_option('group-render-mode')
759substs.set('GROUP_RENDER_MODE', group_render_mode)
760conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400761
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400762kill_user_processes = get_option('default-kill-user-processes')
763conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100764conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400765substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400766
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400767dns_servers = get_option('dns-servers')
768conf.set_quoted('DNS_SERVERS', dns_servers)
769substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400770
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400771ntp_servers = get_option('ntp-servers')
772conf.set_quoted('NTP_SERVERS', ntp_servers)
773substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400774
Dave Reisner8ca9e922018-12-28 07:38:36 -0500775default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900776if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800777 if not meson.is_cross_build()
778 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
779 default_locale = run_command(choose_default_locale_sh).stdout().strip()
780 else
781 default_locale = 'C.UTF-8'
782 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900783endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500784conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
785
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400786conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
787
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400788substs.set('SUSHELL', get_option('debug-shell'))
789substs.set('DEBUGTTY', get_option('debug-tty'))
Jan Synacek93912e82019-04-25 12:19:16 +0200790conf.set_quoted('DEBUGTTY', get_option('debug-tty'))
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400791
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200792enable_debug_hashmap = false
793enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900794enable_debug_siphash = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200795foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900796 if name == 'hashmap'
797 enable_debug_hashmap = true
798 elif name == 'mmap-cache'
799 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900800 elif name == 'siphash'
801 enable_debug_siphash = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900802 else
803 message('unknown debug option "@0@", ignoring'.format(name))
804 endif
805endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200806conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
807conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900808conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400809
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200810conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200811conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200812
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400813#####################################################################
814
815threads = dependency('threads')
816librt = cc.find_library('rt')
817libm = cc.find_library('m')
818libdl = cc.find_library('dl')
819libcrypt = cc.find_library('crypt')
820
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400821libcap = dependency('libcap', required : false)
822if not libcap.found()
823 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
824 libcap = cc.find_library('cap')
825endif
826
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400827libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100828 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400829
830want_seccomp = get_option('seccomp')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000831if want_seccomp != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400832 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400833 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400834 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200835 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400836else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200837 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400838 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400839endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200840conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400841
842want_selinux = get_option('selinux')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000843if want_selinux != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400844 libselinux = dependency('libselinux',
845 version : '>= 2.1.9',
846 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200847 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400848else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200849 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400850 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400851endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200852conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400853
854want_apparmor = get_option('apparmor')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000855if want_apparmor != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400856 libapparmor = dependency('libapparmor',
857 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200858 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400859else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200860 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400861 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400862endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200863conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400864
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400865smack_run_label = get_option('smack-run-label')
866if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400867 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400868endif
869
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400870want_polkit = get_option('polkit')
871install_polkit = false
872install_polkit_pkla = false
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000873if want_polkit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400874 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400875
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400876 libpolkit = dependency('polkit-gobject-1',
877 required : false)
878 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
879 message('Old polkit detected, will install pkla files')
880 install_polkit_pkla = true
881 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400882endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200883conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400884
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400885want_acl = get_option('acl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000886if want_acl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400887 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200888 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400889else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200890 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400891 libacl = []
892endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200893conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400894
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400895want_audit = get_option('audit')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000896if want_audit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400897 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200898 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400899else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200900 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400901 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400902endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200903conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400904
905want_blkid = get_option('blkid')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000906if want_blkid != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400907 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200908 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400909else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200910 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400911 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400912endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200913conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400914
915want_kmod = get_option('kmod')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000916if want_kmod != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400917 libkmod = dependency('libkmod',
918 version : '>= 15',
919 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200920 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400921else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400923 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400924endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200925conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400926
927want_pam = get_option('pam')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000928if want_pam != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400929 libpam = cc.find_library('pam', required : want_pam == 'true')
930 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200931 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400932else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200933 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400934 libpam = []
935 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400936endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200937conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400938
939want_microhttpd = get_option('microhttpd')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000940if want_microhttpd != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400941 libmicrohttpd = dependency('libmicrohttpd',
942 version : '>= 0.9.33',
943 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200944 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400945else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200946 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400947 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400948endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200949conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400950
951want_libcryptsetup = get_option('libcryptsetup')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000952if want_libcryptsetup != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400953 libcryptsetup = dependency('libcryptsetup',
954 version : '>= 1.6.0',
955 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200956 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100957 have_sector = cc.has_member(
958 'struct crypt_params_plain',
959 'sector_size',
960 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400961else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200962 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100963 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400964 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400965endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200966conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100967conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400968
969want_libcurl = get_option('libcurl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000970if want_libcurl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400971 libcurl = dependency('libcurl',
972 version : '>= 7.32.0',
973 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200974 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400975else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200976 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400977 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400978endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200979conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400980
981want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400982want_libidn2 = get_option('libidn2')
983if want_libidn == 'true' and want_libidn2 == 'true'
984 error('libidn and libidn2 cannot be requested simultaneously')
985endif
986
Yu Watanabe1b931392019-06-29 03:13:30 +0900987if want_libidn2 != 'false' and want_libidn != 'true' and not skip_deps
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400988 libidn = dependency('libidn2',
989 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200990 have = libidn.found()
991else
992 have = false
Yu Watanabe1b931392019-06-29 03:13:30 +0900993 libidn = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400994endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200995conf.set10('HAVE_LIBIDN2', have)
Yu Watanabe1b931392019-06-29 03:13:30 +0900996if not have and want_libidn != 'false' and not skip_deps
997 # libidn is used for both libidn and libidn2 objects
998 libidn = dependency('libidn',
999 required : want_libidn == 'true')
1000 have = libidn.found()
1001else
1002 have = false
1003endif
1004conf.set10('HAVE_LIBIDN', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001005
1006want_libiptc = get_option('libiptc')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001007if want_libiptc != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001008 libiptc = dependency('libiptc',
1009 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001010 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001011else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001012 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001013 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001014endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001015conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001016
1017want_qrencode = get_option('qrencode')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001018if want_qrencode != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001019 libqrencode = dependency('libqrencode',
1020 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001021 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001022else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001023 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001024 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001025endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001026conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001027
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001028want_gcrypt = get_option('gcrypt')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001029if want_gcrypt != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001030 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1031 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001032 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001033else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001034 have = false
1035endif
1036if not have
1037 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001038 libgcrypt = []
1039 libgpg_error = []
1040endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001041conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001042
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001043want_gnutls = get_option('gnutls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001044if want_gnutls != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001045 libgnutls = dependency('gnutls',
1046 version : '>= 3.1.4',
1047 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001048 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001049else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001050 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001051 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001052endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001053conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001054
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001055want_openssl = get_option('openssl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001056if want_openssl != 'false' and not skip_deps
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001057 libopenssl = dependency('openssl',
1058 version : '>= 1.1.0',
1059 required : want_openssl == 'true')
1060 have = libopenssl.found()
1061else
1062 have = false
1063 libopenssl = []
1064endif
1065conf.set10('HAVE_OPENSSL', have)
1066
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001067want_elfutils = get_option('elfutils')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001068if want_elfutils != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001069 libdw = dependency('libdw',
1070 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001071 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001072else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001073 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001074 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001075endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001076conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001077
1078want_zlib = get_option('zlib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001079if want_zlib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001080 libz = dependency('zlib',
1081 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001082 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001083else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001084 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001085 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001086endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001087conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001088
1089want_bzip2 = get_option('bzip2')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001090if want_bzip2 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001091 libbzip2 = cc.find_library('bz2',
1092 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001093 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001094else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001095 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001096 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001097endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001098conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001099
1100want_xz = get_option('xz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001101if want_xz != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001102 libxz = dependency('liblzma',
1103 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001104 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001105else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001106 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001107 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001108endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001109conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001110
1111want_lz4 = get_option('lz4')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001112if want_lz4 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001113 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001114 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001115 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001116 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001117else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001118 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001119 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001120endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001121conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001122
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001123want_xkbcommon = get_option('xkbcommon')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001124if want_xkbcommon != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001125 libxkbcommon = dependency('xkbcommon',
1126 version : '>= 0.3.0',
1127 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001128 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001129else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001130 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001131 libxkbcommon = []
1132endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001133conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001134
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001135want_pcre2 = get_option('pcre2')
1136if want_pcre2 != 'false'
1137 libpcre2 = dependency('libpcre2-8',
1138 required : want_pcre2 == 'true')
1139 have = libpcre2.found()
1140else
1141 have = false
1142 libpcre2 = []
1143endif
1144conf.set10('HAVE_PCRE2', have)
1145
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001146want_glib = get_option('glib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001147if want_glib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001148 libglib = dependency('glib-2.0',
1149 version : '>= 2.22.0',
1150 required : want_glib == 'true')
1151 libgobject = dependency('gobject-2.0',
1152 version : '>= 2.22.0',
1153 required : want_glib == 'true')
1154 libgio = dependency('gio-2.0',
1155 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001156 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001157else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001158 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001159 libglib = []
1160 libgobject = []
1161 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001162endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001163conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001164
1165want_dbus = get_option('dbus')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001166if want_dbus != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001167 libdbus = dependency('dbus-1',
1168 version : '>= 1.3.2',
1169 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001170 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001171else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001172 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001173 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001174endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001175conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001176
Yu Watanabe42303dc2017-06-18 05:22:32 +09001177default_dnssec = get_option('default-dnssec')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001178if skip_deps
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001179 default_dnssec = 'no'
1180endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001181if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001182 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1183 default_dnssec = 'no'
1184endif
1185conf.set('DEFAULT_DNSSEC_MODE',
1186 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1187substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1188
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001189dns_over_tls = get_option('dns-over-tls')
1190if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001191 if dns_over_tls == 'openssl'
1192 have_gnutls = false
1193 else
1194 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1195 if dns_over_tls == 'gnutls' and not have_gnutls
1196 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1197 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001198 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001199 if dns_over_tls == 'gnutls' or have_gnutls
1200 have_openssl = false
1201 else
1202 have_openssl = conf.get('HAVE_OPENSSL') == 1
1203 if dns_over_tls != 'auto' and not have_openssl
1204 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
Yu Watanabeb349bc52019-06-17 10:22:54 +09001205 error('DNS-over-TLS support was requested@0@, but dependencies are not available'.format(str))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001206 endif
1207 endif
1208 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001209else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001210 have = false
1211 have_gnutls = false
1212 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001213endif
1214conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001215conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1216conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001217
Iwan Timmerc9299be2018-06-13 20:26:24 +02001218default_dns_over_tls = get_option('default-dns-over-tls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001219if skip_deps
Iwan Timmerc9299be2018-06-13 20:26:24 +02001220 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001221endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001222if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
Iwan Timmer4310bfc2019-02-18 20:41:46 +01001223 message('default-dns-over-tls cannot be enabled or set to opportunistic when DNS-over-TLS support is disabled. Setting default-dns-over-tls to no.')
Iwan Timmerc9299be2018-06-13 20:26:24 +02001224 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001225endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001226conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1227 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1228substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001229
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001230want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001231if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001232 have = (conf.get('HAVE_LIBCURL') == 1 and
1233 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001234 conf.get('HAVE_XZ') == 1 and
1235 conf.get('HAVE_GCRYPT') == 1)
1236 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001237 error('importd support was requested, but dependencies are not available')
1238 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001239else
1240 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001241endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001242conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001243
1244want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001245if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001246 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1247 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001248 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1249 # it's possible to build one without the other. Complain only if
Ben Boeckel5238e952019-04-26 20:22:40 -04001250 # support was explicitly requested. The auxiliary files like sysusers
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001251 # config should be installed when any of the programs are built.
1252 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1253 error('remote support was requested, but dependencies are not available')
1254 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001255 have = have_deps[0] or have_deps[1]
1256else
1257 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001258endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001259conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001260
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001261foreach term : ['utmp',
1262 'hibernate',
1263 'environment-d',
1264 'binfmt',
1265 'coredump',
1266 'resolve',
1267 'logind',
1268 'hostnamed',
1269 'localed',
1270 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001271 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001272 'networkd',
1273 'timedated',
1274 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001275 'firstboot',
1276 'randomseed',
1277 'backlight',
1278 'vconsole',
1279 'quotacheck',
1280 'sysusers',
1281 'tmpfiles',
1282 'hwdb',
1283 'rfkill',
1284 'ldconfig',
1285 'efi',
1286 'tpm',
1287 'ima',
1288 'smack',
1289 'gshadow',
1290 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001291 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001292 'nss-systemd']
1293 have = get_option(term)
1294 name = 'ENABLE_' + term.underscorify().to_upper()
1295 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001296endforeach
1297
Yu Watanabe08540a92018-07-18 09:25:57 +09001298foreach tuple : [['nss-mymachines', 'machined'],
1299 ['nss-resolve', 'resolve']]
1300 want = get_option(tuple[0])
1301 if want != 'false'
1302 have = get_option(tuple[1])
1303 if want == 'true' and not have
1304 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1305 endif
1306 else
1307 have = false
1308 endif
1309 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1310 conf.set10(name, have)
1311endforeach
1312
1313enable_nss = false
1314foreach term : ['ENABLE_NSS_MYHOSTNAME',
1315 'ENABLE_NSS_MYMACHINES',
1316 'ENABLE_NSS_RESOLVE',
1317 'ENABLE_NSS_SYSTEMD']
1318 if conf.get(term) == 1
1319 enable_nss = true
1320 endif
1321endforeach
1322conf.set10('ENABLE_NSS', enable_nss)
1323
Yu Watanabe348b4432018-05-07 18:17:35 +09001324conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001325
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001326tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001327fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001328
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001329conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001330
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001331#####################################################################
1332
1333if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001334 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001335
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001336 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001337 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001338 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001339 elif efi_arch == 'x86_64'
1340 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001341 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001342 elif efi_arch == 'arm'
1343 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001344 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001345 elif efi_arch == 'aarch64'
1346 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001347 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001348 else
1349 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001350 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001351 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001352
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001353 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001354 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001355
Yu Watanabeac093402018-05-10 16:04:16 +09001356 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001357else
1358 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001359endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001360conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001361
1362#####################################################################
1363
1364config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001365 output : 'config.h',
1366 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001367
Yu Watanabe348b4432018-05-07 18:17:35 +09001368meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1369
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001370includes = include_directories('src/basic',
1371 'src/shared',
1372 'src/systemd',
1373 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001374 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001375 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001376 'src/resolve',
1377 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001378 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001379 'src/login',
1380 'src/udev',
1381 'src/libudev',
1382 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001383 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001384 'src/libsystemd/sd-bus',
1385 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001386 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001387 'src/libsystemd/sd-hwdb',
1388 'src/libsystemd/sd-id128',
1389 'src/libsystemd/sd-netlink',
1390 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001391 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001392 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001393 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001394
1395add_project_arguments('-include', 'config.h', language : 'c')
1396
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001397generate_gperfs = find_program('tools/generate-gperfs.py')
1398
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001399subdir('po')
1400subdir('catalog')
1401subdir('src/systemd')
1402subdir('src/basic')
1403subdir('src/libsystemd')
1404subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001405subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001406subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001407
1408libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001409 'journal-core',
1410 libjournal_core_sources,
1411 journald_gperf_c,
1412 include_directories : includes,
1413 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001414
Davide Cavalca1485aac2019-02-27 11:19:07 -05001415libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001416libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001417 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001418 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001419 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001420 include_directories : includes,
1421 link_args : ['-shared',
1422 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001423 link_with : [libbasic,
1424 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001425 link_whole : [libsystemd_static,
1426 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001427 dependencies : [threads,
1428 librt,
1429 libxz,
1430 liblz4],
1431 link_depends : libsystemd_sym,
1432 install : true,
1433 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001434
Davide Cavalca70848ec2018-04-09 02:43:35 -07001435static_libsystemd = get_option('static-libsystemd')
1436static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1437
1438install_libsystemd_static = static_library(
1439 'systemd',
1440 libsystemd_sources,
1441 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001442 basic_sources,
1443 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001444 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001445 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001446 build_by_default : static_libsystemd != 'false',
1447 install : static_libsystemd != 'false',
1448 install_dir : rootlibdir,
1449 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1450 dependencies : [threads,
1451 librt,
1452 libxz,
1453 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001454 libcap,
1455 libblkid,
1456 libmount,
1457 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001458 libgcrypt],
1459 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1460
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001461############################################################
1462
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001463# binaries that have --help and are intended for use by humans,
1464# usually, but not always, installed in /bin.
1465public_programs = []
1466
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001467subdir('src/libudev')
1468subdir('src/shared')
1469subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001470subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001471subdir('src/udev')
1472subdir('src/network')
1473
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001474subdir('src/analyze')
1475subdir('src/journal-remote')
1476subdir('src/coredump')
1477subdir('src/hostname')
1478subdir('src/import')
1479subdir('src/kernel-install')
1480subdir('src/locale')
1481subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001482subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001483subdir('src/nspawn')
1484subdir('src/resolve')
1485subdir('src/timedate')
1486subdir('src/timesync')
1487subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001488subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001489
1490subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001491subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001492subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001493subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001494
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001495############################################################
1496
1497# only static linking apart from libdl, to make sure that the
1498# module is linked to all libraries that it uses.
1499test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001500 'test-dlopen',
1501 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001502 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001503 include_directories : includes,
1504 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001505 dependencies : [libdl],
1506 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001507
Yu Watanabe08540a92018-07-18 09:25:57 +09001508foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001509 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001510 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1511 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001512
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001513 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001514 if condition
1515 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001516
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001517 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001518 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001519
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001520 nss = shared_library(
1521 'nss_' + module,
1522 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001523 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001524 version : '2',
1525 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001526 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1527 link_args : ['-Wl,-z,nodelete',
1528 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001529 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001530 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001531 libbasic],
1532 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001533 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001534 link_depends : sym,
1535 install : true,
1536 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001537
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001538 # We cannot use shared_module because it does not support version suffix.
1539 # Unfortunately shared_library insists on creating the symlink…
1540 meson.add_install_script('sh', '-c',
1541 'rm $DESTDIR@0@/libnss_@1@.so'
1542 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001543
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001544 if want_tests != 'false'
1545 test('dlopen-nss_' + module,
1546 test_dlopen,
1547 # path to dlopen must include a slash
1548 args : nss.full_path())
1549 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001550 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001551endforeach
1552
1553############################################################
1554
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001555executable('systemd',
1556 systemd_sources,
1557 include_directories : includes,
1558 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001559 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001560 dependencies : [versiondep,
1561 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001562 librt,
1563 libseccomp,
1564 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001565 libmount,
1566 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001567 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001568 install : true,
1569 install_dir : rootlibexecdir)
1570
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001571meson.add_install_script(meson_make_symlink,
1572 join_paths(rootlibexecdir, 'systemd'),
1573 join_paths(rootsbindir, 'init'))
1574
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001575exe = executable('systemd-analyze',
1576 systemd_analyze_sources,
1577 include_directories : includes,
1578 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001579 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001580 dependencies : [versiondep,
1581 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001582 librt,
1583 libseccomp,
1584 libselinux,
1585 libmount,
1586 libblkid],
1587 install_rpath : rootlibexecdir,
1588 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001589public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001590
1591executable('systemd-journald',
1592 systemd_journald_sources,
1593 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001594 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001595 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001596 dependencies : [threads,
1597 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001598 liblz4,
1599 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001600 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001601 install : true,
1602 install_dir : rootlibexecdir)
1603
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001604exe = executable('systemd-cat',
1605 systemd_cat_sources,
1606 include_directories : includes,
1607 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001608 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001609 dependencies : [threads],
1610 install_rpath : rootlibexecdir,
1611 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001612public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001613
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001614exe = executable('journalctl',
1615 journalctl_sources,
1616 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001617 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001618 dependencies : [threads,
1619 libqrencode,
1620 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001621 liblz4,
1622 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001623 install_rpath : rootlibexecdir,
1624 install : true,
1625 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001626public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001627
1628executable('systemd-getty-generator',
1629 'src/getty-generator/getty-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
1636executable('systemd-debug-generator',
1637 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001638 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001639 link_with : [libshared],
1640 install_rpath : rootlibexecdir,
1641 install : true,
1642 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001643
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001644executable('systemd-run-generator',
1645 'src/run-generator/run-generator.c',
1646 include_directories : includes,
1647 link_with : [libshared],
1648 install_rpath : rootlibexecdir,
1649 install : true,
1650 install_dir : systemgeneratordir)
1651
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001652executable('systemd-fstab-generator',
1653 'src/fstab-generator/fstab-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001654 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01001655 link_with : [libcore_shared,
1656 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001657 install_rpath : rootlibexecdir,
1658 install : true,
1659 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001660
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001661if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001662 executable('30-systemd-environment-d-generator',
1663 'src/environment-d-generator/environment-d-generator.c',
1664 include_directories : includes,
1665 link_with : [libshared],
1666 install_rpath : rootlibexecdir,
1667 install : true,
1668 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001669
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001670 meson.add_install_script(meson_make_symlink,
1671 join_paths(sysconfdir, 'environment'),
1672 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001673endif
1674
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001675if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001676 executable('systemd-hibernate-resume-generator',
1677 'src/hibernate-resume/hibernate-resume-generator.c',
1678 include_directories : includes,
1679 link_with : [libshared],
1680 install_rpath : rootlibexecdir,
1681 install : true,
1682 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001683
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001684 executable('systemd-hibernate-resume',
1685 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001686 include_directories : includes,
1687 link_with : [libshared],
1688 install_rpath : rootlibexecdir,
1689 install : true,
1690 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001691endif
1692
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001693if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001694 executable('systemd-gpt-auto-generator',
1695 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001696 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001697 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001698 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001699 dependencies : libblkid,
1700 install_rpath : rootlibexecdir,
1701 install : true,
1702 install_dir : systemgeneratordir)
1703
1704 exe = executable('systemd-dissect',
1705 'src/dissect/dissect.c',
1706 include_directories : includes,
1707 link_with : [libshared],
1708 install_rpath : rootlibexecdir,
1709 install : true,
1710 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001711 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001712endif
1713
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001714if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001715 executable('systemd-resolved',
1716 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001717 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001718 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001719 libbasic_gcrypt,
1720 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001721 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001722 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001723 install : true,
1724 install_dir : rootlibexecdir)
1725
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001726 exe = executable('resolvectl',
1727 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001728 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001729 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001730 libbasic_gcrypt,
1731 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001732 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001733 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001734 libm,
1735 libidn],
1736 install_rpath : rootlibexecdir,
1737 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001738 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001739
1740 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001741 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001742 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001743
1744 meson.add_install_script(meson_make_symlink,
1745 join_paths(bindir, 'resolvectl'),
1746 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001747endif
1748
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001749if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001750 executable('systemd-logind',
1751 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001752 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001753 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001754 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001755 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001756 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001757 install_rpath : rootlibexecdir,
1758 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001759 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001760
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001761 exe = executable('loginctl',
1762 loginctl_sources,
1763 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001764 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001765 dependencies : [threads,
1766 liblz4,
1767 libxz],
1768 install_rpath : rootlibexecdir,
1769 install : true,
1770 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001771 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001772
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001773 exe = executable('systemd-inhibit',
1774 'src/login/inhibit.c',
1775 include_directories : includes,
1776 link_with : [libshared],
1777 install_rpath : rootlibexecdir,
1778 install : true,
1779 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001780 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001781
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001782 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001783 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001784 pam_systemd = shared_library(
1785 'pam_systemd',
1786 pam_systemd_c,
1787 name_prefix : '',
1788 include_directories : includes,
1789 link_args : ['-shared',
1790 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001791 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001792 libshared_static],
1793 dependencies : [threads,
1794 libpam,
1795 libpam_misc],
1796 link_depends : pam_systemd_sym,
1797 install : true,
1798 install_dir : pamlibdir)
1799
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001800 if want_tests != 'false'
1801 test('dlopen-pam_systemd',
1802 test_dlopen,
1803 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001804 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001805 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001806 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001807
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001808 executable('systemd-user-runtime-dir',
1809 user_runtime_dir_sources,
1810 include_directories : includes,
1811 link_with : [libshared],
1812 install_rpath : rootlibexecdir,
1813 install : true,
1814 install_dir : rootlibexecdir)
1815endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001816
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001817if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001818 executable('systemd-user-sessions',
1819 'src/user-sessions/user-sessions.c',
1820 include_directories : includes,
1821 link_with : [libshared],
1822 install_rpath : rootlibexecdir,
1823 install : true,
1824 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001825endif
1826
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001827if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001828 exe = executable('bootctl',
1829 'src/boot/bootctl.c',
1830 include_directories : includes,
1831 link_with : [libshared],
1832 dependencies : [libblkid],
1833 install_rpath : rootlibexecdir,
1834 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001835 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001836
1837 executable('systemd-bless-boot',
1838 'src/boot/bless-boot.c',
1839 include_directories : includes,
1840 link_with : [libshared],
1841 dependencies : [libblkid],
1842 install_rpath : rootlibexecdir,
1843 install : true,
1844 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001845
1846 executable('systemd-bless-boot-generator',
1847 'src/boot/bless-boot-generator.c',
1848 include_directories : includes,
1849 link_with : [libshared],
1850 install_rpath : rootlibexecdir,
1851 install : true,
1852 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001853endif
1854
Lennart Poetteringf876f532018-06-25 16:07:33 +02001855executable('systemd-boot-check-no-failures',
1856 'src/boot/boot-check-no-failures.c',
1857 include_directories : includes,
1858 link_with : [libshared],
1859 dependencies : [libblkid],
1860 install_rpath : rootlibexecdir,
1861 install : true,
1862 install_dir : rootlibexecdir)
1863
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001864exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1865 include_directories : includes,
1866 link_with : [libshared],
1867 dependencies : [threads],
1868 install_rpath : rootlibexecdir,
1869 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001870public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001871
Felipe Satelerf3794362018-05-22 15:08:57 -04001872
1873if get_option('link-systemctl-shared')
1874 systemctl_link_with = [libshared]
1875else
1876 systemctl_link_with = [libsystemd_static,
1877 libshared_static,
1878 libjournal_client,
1879 libbasic_gcrypt]
1880endif
1881
Lennart Poettering63a3b3c2019-03-22 20:05:08 +01001882exe = executable('systemctl',
1883 'src/systemctl/systemctl.c',
1884 'src/systemctl/sysv-compat.h',
1885 'src/systemctl/sysv-compat.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001886 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001887 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001888 dependencies : [threads,
1889 libcap,
1890 libselinux,
1891 libxz,
1892 liblz4],
1893 install_rpath : rootlibexecdir,
1894 install : true,
1895 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001896public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001897
Lennart Poettering61d05782018-04-16 21:41:40 +02001898if conf.get('ENABLE_PORTABLED') == 1
1899 executable('systemd-portabled',
1900 systemd_portabled_sources,
1901 include_directories : includes,
1902 link_with : [libshared],
1903 dependencies : [threads],
1904 install_rpath : rootlibexecdir,
1905 install : true,
1906 install_dir : rootlibexecdir)
1907
1908 exe = executable('portablectl', 'src/portable/portablectl.c',
1909 include_directories : includes,
1910 link_with : [libshared],
1911 dependencies : [threads],
1912 install_rpath : rootlibexecdir,
1913 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001914 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001915 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001916endif
1917
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001918foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1919 meson.add_install_script(meson_make_symlink,
1920 join_paths(rootbindir, 'systemctl'),
1921 join_paths(rootsbindir, alias))
1922endforeach
1923
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001924if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001925 executable('systemd-backlight',
1926 'src/backlight/backlight.c',
1927 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001928 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001929 install_rpath : rootlibexecdir,
1930 install : true,
1931 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001932endif
1933
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001934if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001935 executable('systemd-rfkill',
1936 'src/rfkill/rfkill.c',
1937 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001938 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001939 install_rpath : rootlibexecdir,
1940 install : true,
1941 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001942endif
1943
1944executable('systemd-system-update-generator',
1945 'src/system-update-generator/system-update-generator.c',
1946 include_directories : includes,
1947 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001948 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001949 install : true,
1950 install_dir : systemgeneratordir)
1951
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001952if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001953 executable('systemd-cryptsetup',
1954 'src/cryptsetup/cryptsetup.c',
1955 include_directories : includes,
1956 link_with : [libshared],
1957 dependencies : [libcryptsetup],
1958 install_rpath : rootlibexecdir,
1959 install : true,
1960 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001961
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001962 executable('systemd-cryptsetup-generator',
1963 'src/cryptsetup/cryptsetup-generator.c',
1964 include_directories : includes,
1965 link_with : [libshared],
1966 dependencies : [libcryptsetup],
1967 install_rpath : rootlibexecdir,
1968 install : true,
1969 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001970
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001971 executable('systemd-veritysetup',
1972 'src/veritysetup/veritysetup.c',
1973 include_directories : includes,
1974 link_with : [libshared],
1975 dependencies : [libcryptsetup],
1976 install_rpath : rootlibexecdir,
1977 install : true,
1978 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001979
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001980 executable('systemd-veritysetup-generator',
1981 'src/veritysetup/veritysetup-generator.c',
1982 include_directories : includes,
1983 link_with : [libshared],
1984 dependencies : [libcryptsetup],
1985 install_rpath : rootlibexecdir,
1986 install : true,
1987 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001988endif
1989
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001990if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001991 executable('systemd-sysv-generator',
1992 'src/sysv-generator/sysv-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 -04001998
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001999 executable('systemd-rc-local-generator',
2000 'src/rc-local-generator/rc-local-generator.c',
2001 include_directories : includes,
2002 link_with : [libshared],
2003 install_rpath : rootlibexecdir,
2004 install : true,
2005 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002006endif
2007
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002008if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002009 executable('systemd-hostnamed',
2010 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002011 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002012 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002013 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002014 install : true,
2015 install_dir : rootlibexecdir)
2016
2017 exe = executable('hostnamectl',
2018 'src/hostname/hostnamectl.c',
2019 include_directories : includes,
2020 link_with : [libshared],
2021 install_rpath : rootlibexecdir,
2022 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002023 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002024endif
2025
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002026if conf.get('ENABLE_LOCALED') == 1
2027 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002028 # logind will load libxkbcommon.so dynamically on its own
2029 deps = [libdl]
2030 else
2031 deps = []
2032 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002033
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002034 executable('systemd-localed',
2035 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002036 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002037 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002038 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002039 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002040 install : true,
2041 install_dir : rootlibexecdir)
2042
2043 exe = executable('localectl',
2044 localectl_sources,
2045 include_directories : includes,
2046 link_with : [libshared],
2047 install_rpath : rootlibexecdir,
2048 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002049 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002050endif
2051
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002052if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002053 executable('systemd-timedated',
2054 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002055 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002056 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002057 install_rpath : rootlibexecdir,
2058 install : true,
2059 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002060endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002061
Yu Watanabe6129ec82018-05-03 18:07:43 +09002062if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002063 exe = executable('timedatectl',
2064 'src/timedate/timedatectl.c',
2065 include_directories : includes,
2066 install_rpath : rootlibexecdir,
2067 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002068 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002069 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002070 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002071endif
2072
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002073if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002074 executable('systemd-timesyncd',
2075 systemd_timesyncd_sources,
2076 include_directories : includes,
2077 link_with : [libshared],
2078 dependencies : [threads,
2079 libm],
2080 install_rpath : rootlibexecdir,
2081 install : true,
2082 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002083
2084 executable('systemd-time-wait-sync',
2085 'src/time-wait-sync/time-wait-sync.c',
2086 include_directories : includes,
2087 link_with : [libshared],
2088 install_rpath : rootlibexecdir,
2089 install : true,
2090 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002091endif
2092
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002093if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002094 executable('systemd-machined',
2095 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002096 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002097 link_with : [libmachine_core,
2098 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002099 install_rpath : rootlibexecdir,
2100 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002101 install_dir : rootlibexecdir)
2102
2103 exe = executable('machinectl',
2104 'src/machine/machinectl.c',
2105 include_directories : includes,
2106 link_with : [libshared],
2107 dependencies : [threads,
2108 libxz,
2109 liblz4],
2110 install_rpath : rootlibexecdir,
2111 install : true,
2112 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002113 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002114endif
2115
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002116if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002117 executable('systemd-importd',
2118 systemd_importd_sources,
2119 include_directories : includes,
2120 link_with : [libshared],
2121 dependencies : [threads],
2122 install_rpath : rootlibexecdir,
2123 install : true,
2124 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002125
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002126 systemd_pull = executable('systemd-pull',
2127 systemd_pull_sources,
2128 include_directories : includes,
2129 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002130 dependencies : [versiondep,
2131 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002132 libz,
2133 libbzip2,
2134 libxz,
2135 libgcrypt],
2136 install_rpath : rootlibexecdir,
2137 install : true,
2138 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002139
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002140 systemd_import = executable('systemd-import',
2141 systemd_import_sources,
2142 include_directories : includes,
2143 link_with : [libshared],
2144 dependencies : [libcurl,
2145 libz,
2146 libbzip2,
2147 libxz],
2148 install_rpath : rootlibexecdir,
2149 install : true,
2150 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002151
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002152 systemd_import_fs = executable('systemd-import-fs',
2153 systemd_import_fs_sources,
2154 include_directories : includes,
2155 link_with : [libshared],
2156 install_rpath : rootlibexecdir,
2157 install : true,
2158 install_dir : rootlibexecdir)
2159
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002160 systemd_export = executable('systemd-export',
2161 systemd_export_sources,
2162 include_directories : includes,
2163 link_with : [libshared],
2164 dependencies : [libcurl,
2165 libz,
2166 libbzip2,
2167 libxz],
2168 install_rpath : rootlibexecdir,
2169 install : true,
2170 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002171
2172 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002173endif
2174
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002175if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002176 exe = executable('systemd-journal-upload',
2177 systemd_journal_upload_sources,
2178 include_directories : includes,
2179 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002180 dependencies : [versiondep,
2181 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002182 libcurl,
2183 libgnutls,
2184 libxz,
2185 liblz4],
2186 install_rpath : rootlibexecdir,
2187 install : true,
2188 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002189 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002190endif
2191
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002192if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002193 s_j_remote = executable('systemd-journal-remote',
2194 systemd_journal_remote_sources,
2195 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002196 link_with : [libshared,
2197 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002198 dependencies : [threads,
2199 libmicrohttpd,
2200 libgnutls,
2201 libxz,
2202 liblz4],
2203 install_rpath : rootlibexecdir,
2204 install : true,
2205 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002206
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002207 s_j_gatewayd = executable('systemd-journal-gatewayd',
2208 systemd_journal_gatewayd_sources,
2209 include_directories : includes,
2210 link_with : [libshared],
2211 dependencies : [threads,
2212 libmicrohttpd,
2213 libgnutls,
2214 libxz,
2215 liblz4],
2216 install_rpath : rootlibexecdir,
2217 install : true,
2218 install_dir : rootlibexecdir)
2219 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002220endif
2221
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002222if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002223 executable('systemd-coredump',
2224 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002225 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002226 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002227 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002228 libacl,
2229 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002230 libxz,
2231 liblz4],
2232 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002233 install : true,
2234 install_dir : rootlibexecdir)
2235
2236 exe = executable('coredumpctl',
2237 coredumpctl_sources,
2238 include_directories : includes,
2239 link_with : [libshared],
2240 dependencies : [threads,
2241 libxz,
2242 liblz4],
2243 install_rpath : rootlibexecdir,
2244 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002245 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002246endif
2247
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002248if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002249 exe = executable('systemd-binfmt',
2250 'src/binfmt/binfmt.c',
2251 include_directories : includes,
2252 link_with : [libshared],
2253 install_rpath : rootlibexecdir,
2254 install : true,
2255 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002256 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002257
2258 meson.add_install_script('sh', '-c',
2259 mkdir_p.format(binfmtdir))
2260 meson.add_install_script('sh', '-c',
2261 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2262endif
2263
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002264if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002265 executable('systemd-vconsole-setup',
2266 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002267 include_directories : includes,
2268 link_with : [libshared],
2269 install_rpath : rootlibexecdir,
2270 install : true,
2271 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002272endif
2273
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002274if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002275 executable('systemd-random-seed',
2276 'src/random-seed/random-seed.c',
2277 include_directories : includes,
2278 link_with : [libshared],
2279 install_rpath : rootlibexecdir,
2280 install : true,
2281 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002282endif
2283
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002284if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002285 executable('systemd-firstboot',
2286 'src/firstboot/firstboot.c',
2287 include_directories : includes,
2288 link_with : [libshared],
2289 dependencies : [libcrypt],
2290 install_rpath : rootlibexecdir,
2291 install : true,
2292 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002293endif
2294
2295executable('systemd-remount-fs',
2296 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002297 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002298 link_with : [libcore_shared,
2299 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002300 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002301 install : true,
2302 install_dir : rootlibexecdir)
2303
2304executable('systemd-machine-id-setup',
2305 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002306 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002307 link_with : [libcore_shared,
2308 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002309 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002310 install : true,
2311 install_dir : rootbindir)
2312
2313executable('systemd-fsck',
2314 'src/fsck/fsck.c',
2315 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002316 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002317 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002318 install : true,
2319 install_dir : rootlibexecdir)
2320
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002321executable('systemd-growfs',
2322 'src/partition/growfs.c',
2323 include_directories : includes,
2324 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002325 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002326 install_rpath : rootlibexecdir,
2327 install : true,
2328 install_dir : rootlibexecdir)
2329
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002330executable('systemd-makefs',
2331 'src/partition/makefs.c',
2332 include_directories : includes,
2333 link_with : [libshared],
2334 install_rpath : rootlibexecdir,
2335 install : true,
2336 install_dir : rootlibexecdir)
2337
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002338executable('systemd-sleep',
2339 'src/sleep/sleep.c',
2340 include_directories : includes,
2341 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002342 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002343 install : true,
2344 install_dir : rootlibexecdir)
2345
Yu Watanabed25e1272019-01-03 02:32:57 +09002346install_data('src/sleep/sleep.conf',
2347 install_dir : pkgsysconfdir)
2348
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002349exe = executable('systemd-sysctl',
2350 'src/sysctl/sysctl.c',
2351 include_directories : includes,
2352 link_with : [libshared],
2353 install_rpath : rootlibexecdir,
2354 install : true,
2355 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002356public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002357
2358executable('systemd-ac-power',
2359 'src/ac-power/ac-power.c',
2360 include_directories : includes,
2361 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002362 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002363 install : true,
2364 install_dir : rootlibexecdir)
2365
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002366exe = executable('systemd-detect-virt',
2367 'src/detect-virt/detect-virt.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-delta',
2375 'src/delta/delta.c',
2376 include_directories : includes,
2377 link_with : [libshared],
2378 install_rpath : rootlibexecdir,
2379 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002380public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002381
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002382exe = executable('systemd-escape',
2383 'src/escape/escape.c',
2384 include_directories : includes,
2385 link_with : [libshared],
2386 install_rpath : rootlibexecdir,
2387 install : true,
2388 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002389public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002390
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002391exe = executable('systemd-notify',
2392 'src/notify/notify.c',
2393 include_directories : includes,
2394 link_with : [libshared],
2395 install_rpath : rootlibexecdir,
2396 install : true,
2397 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002398public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002399
2400executable('systemd-volatile-root',
2401 'src/volatile-root/volatile-root.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
2408executable('systemd-cgroups-agent',
2409 'src/cgroups-agent/cgroups-agent.c',
2410 include_directories : includes,
2411 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002412 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002413 install : true,
2414 install_dir : rootlibexecdir)
2415
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002416exe = executable('systemd-id128',
2417 'src/id128/id128.c',
2418 include_directories : includes,
2419 link_with : [libshared],
2420 install_rpath : rootlibexecdir,
2421 install : true)
2422public_programs += exe
2423
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002424exe = executable('systemd-path',
2425 'src/path/path.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)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002430public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002431
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002432exe = executable('systemd-ask-password',
2433 'src/ask-password/ask-password.c',
2434 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002435 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002436 install_rpath : rootlibexecdir,
2437 install : true,
2438 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002439public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002440
2441executable('systemd-reply-password',
2442 'src/reply-password/reply-password.c',
2443 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002444 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002445 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002446 install : true,
2447 install_dir : rootlibexecdir)
2448
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002449exe = executable('systemd-tty-ask-password-agent',
2450 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2451 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002452 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002453 install_rpath : rootlibexecdir,
2454 install : true,
2455 install_dir : rootbindir)
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-cgls',
2459 'src/cgls/cgls.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
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002466exe = executable('systemd-cgtop',
2467 'src/cgtop/cgtop.c',
2468 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002469 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002470 install_rpath : rootlibexecdir,
2471 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002472public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002473
2474executable('systemd-initctl',
2475 'src/initctl/initctl.c',
2476 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002477 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002478 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002479 install : true,
2480 install_dir : rootlibexecdir)
2481
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002482exe = executable('systemd-mount',
2483 'src/mount/mount-tool.c',
2484 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002485 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek7d991d42019-04-04 13:41:47 +02002486 dependencies: [libmount],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002487 install_rpath : rootlibexecdir,
2488 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002489public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002490
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002491meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002492 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002493
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002494exe = executable('systemd-run',
2495 'src/run/run.c',
2496 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002497 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002498 install_rpath : rootlibexecdir,
2499 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002500public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002501
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002502exe = executable('systemd-stdio-bridge',
2503 'src/stdio-bridge/stdio-bridge.c',
2504 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002505 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002506 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002507 install_rpath : rootlibexecdir,
2508 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002509public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002510
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002511exe = executable('busctl',
2512 'src/busctl/busctl.c',
2513 'src/busctl/busctl-introspect.c',
2514 'src/busctl/busctl-introspect.h',
2515 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002516 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002517 install_rpath : rootlibexecdir,
2518 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002519public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002520
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002521if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002522 exe = executable('systemd-sysusers',
2523 'src/sysusers/sysusers.c',
2524 include_directories : includes,
2525 link_with : [libshared],
2526 install_rpath : rootlibexecdir,
2527 install : true,
2528 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002529 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002530endif
2531
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002532if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002533 exe = executable('systemd-tmpfiles',
2534 'src/tmpfiles/tmpfiles.c',
2535 include_directories : includes,
2536 link_with : [libshared],
2537 dependencies : [libacl],
2538 install_rpath : rootlibexecdir,
2539 install : true,
2540 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002541 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002542
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002543 if want_tests != 'false'
2544 test('test-systemd-tmpfiles',
2545 test_systemd_tmpfiles_py,
2546 # https://github.com/mesonbuild/meson/issues/2681
2547 args : exe.full_path())
2548 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002549endif
2550
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002551if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002552 exe = executable('systemd-hwdb',
2553 'src/hwdb/hwdb.c',
2554 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2555 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002556 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002557 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002558 install : true,
2559 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002560 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002561endif
2562
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002563if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002564 executable('systemd-quotacheck',
2565 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002566 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002567 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002568 install_rpath : rootlibexecdir,
2569 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002570 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002571endif
2572
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002573exe = executable('systemd-socket-proxyd',
2574 'src/socket-proxy/socket-proxyd.c',
2575 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002576 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002577 dependencies : [threads],
2578 install_rpath : rootlibexecdir,
2579 install : true,
2580 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002581public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002582
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002583exe = executable('systemd-udevd',
2584 systemd_udevd_sources,
2585 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002586 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002587 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002588 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002589 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002590 dependencies : [versiondep,
2591 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002592 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002593 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002594 libacl,
2595 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002596 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002597 install : true,
2598 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002599public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002600
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002601exe = executable('udevadm',
2602 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002603 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002604 include_directories : includes,
2605 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002606 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002607 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002608 dependencies : [versiondep,
2609 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002610 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002611 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002612 libacl,
2613 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002614 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002615 install : true,
2616 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002617public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002618
2619executable('systemd-shutdown',
2620 systemd_shutdown_sources,
2621 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002622 link_with : [libcore_shared,
2623 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002624 dependencies : [libmount],
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-done',
2630 'src/update-done/update-done.c',
2631 include_directories : includes,
2632 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002633 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002634 install : true,
2635 install_dir : rootlibexecdir)
2636
2637executable('systemd-update-utmp',
2638 'src/update-utmp/update-utmp.c',
2639 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002640 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002641 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002642 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002643 install : true,
2644 install_dir : rootlibexecdir)
2645
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002646if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002647 executable('systemd-modules-load',
2648 'src/modules-load/modules-load.c',
2649 include_directories : includes,
2650 link_with : [libshared],
2651 dependencies : [libkmod],
2652 install_rpath : rootlibexecdir,
2653 install : true,
2654 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002655
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002656 meson.add_install_script('sh', '-c',
2657 mkdir_p.format(modulesloaddir))
2658 meson.add_install_script('sh', '-c',
2659 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002660endif
2661
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002662exe = executable('systemd-nspawn',
2663 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002664 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002665 link_with : [libcore_shared,
2666 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002667 libshared],
Franck Bui82384232019-03-22 11:09:08 +01002668 dependencies : [libblkid,
2669 libseccomp],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002670 install_rpath : rootlibexecdir,
2671 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002672public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002673
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002674if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002675 executable('systemd-networkd',
2676 systemd_networkd_sources,
2677 include_directories : includes,
2678 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002679 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002680 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002681 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002682 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002683 install_rpath : rootlibexecdir,
2684 install : true,
2685 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002686
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002687 executable('systemd-networkd-wait-online',
2688 systemd_networkd_wait_online_sources,
2689 include_directories : includes,
2690 link_with : [libnetworkd_core,
2691 libshared],
2692 install_rpath : rootlibexecdir,
2693 install : true,
2694 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002695
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002696 exe = executable('networkctl',
2697 networkctl_sources,
2698 include_directories : includes,
2699 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002700 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002701 install_rpath : rootlibexecdir,
2702 install : true,
2703 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002704 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002705endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002706
2707executable('systemd-sulogin-shell',
2708 ['src/sulogin-shell/sulogin-shell.c'],
2709 include_directories : includes,
2710 link_with : [libshared],
2711 install_rpath : rootlibexecdir,
2712 install : true,
2713 install_dir : rootlibexecdir)
2714
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002715############################################################
2716
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002717custom_target(
2718 'systemd-runtest.env',
2719 output : 'systemd-runtest.env',
2720 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05002721 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002722 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002723 '} >@OUTPUT@'],
2724 build_by_default : true)
2725
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002726foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002727 sources = tuple[0]
2728 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2729 dependencies = tuple[2]
2730 condition = tuple.length() >= 4 ? tuple[3] : ''
2731 type = tuple.length() >= 5 ? tuple[4] : ''
2732 defs = tuple.length() >= 6 ? tuple[5] : []
2733 incs = tuple.length() >= 7 ? tuple[6] : includes
2734 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002735
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002736 name = sources[0].split('/')[-1].split('.')[0]
2737 if type.startswith('timeout=')
2738 timeout = type.split('=')[1].to_int()
2739 type = ''
2740 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002741
2742 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002743 exe = executable(
2744 name,
2745 sources,
2746 include_directories : incs,
2747 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002748 dependencies : [versiondep,
2749 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002750 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002751 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002752 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002753 install : install_tests,
2754 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002755
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002756 if type == 'manual'
2757 message('@0@ is a manual test'.format(name))
2758 elif type == 'unsafe' and want_tests != 'unsafe'
2759 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002760 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002761 test(name, exe,
2762 env : test_env,
2763 timeout : timeout)
2764 endif
2765 else
2766 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2767 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002768endforeach
2769
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002770exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002771 'test-libsystemd-sym',
2772 test_libsystemd_sym_c,
2773 include_directories : includes,
2774 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002775 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002776 install : install_tests,
2777 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002778if want_tests != 'false'
2779 test('test-libsystemd-sym', exe)
2780endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002781
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002782exe = executable(
2783 'test-libsystemd-static-sym',
2784 test_libsystemd_sym_c,
2785 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002786 link_with : [install_libsystemd_static],
2787 dependencies : [threads], # threads is already included in dependencies on the library,
2788 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002789 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002790 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002791 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002792if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002793 test('test-libsystemd-static-sym', exe)
2794endif
2795
2796exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002797 'test-libudev-sym',
2798 test_libudev_sym_c,
2799 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002800 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002801 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002802 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002803 install : install_tests,
2804 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002805if want_tests != 'false'
2806 test('test-libudev-sym', exe)
2807endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002808
2809exe = executable(
2810 'test-libudev-static-sym',
2811 test_libudev_sym_c,
2812 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002813 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002814 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002815 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002816 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002817 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002818if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002819 test('test-libudev-static-sym', exe)
2820endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002821
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002822############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002823
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002824fuzzer_exes = []
2825
Michael Olbrich59967402018-11-11 11:27:35 +01002826if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002827foreach tuple : fuzzers
2828 sources = tuple[0]
2829 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2830 dependencies = tuple[2]
2831 defs = tuple.length() >= 4 ? tuple[3] : []
2832 incs = tuple.length() >= 5 ? tuple[4] : includes
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002833 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002834
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002835 if want_ossfuzz or want_fuzzbuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002836 dependencies += fuzzing_engine
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002837 elif want_libfuzzer
2838 if fuzzing_engine.found()
2839 dependencies += fuzzing_engine
2840 else
2841 link_args += ['-fsanitize=fuzzer']
2842 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002843 else
2844 sources += 'src/fuzz/fuzz-main.c'
2845 endif
2846
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00002847 if want_fuzzbuzz
2848 sources += 'src/fuzz/fuzzer-entry-point.c'
2849 endif
2850
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002851 name = sources[0].split('/')[-1].split('.')[0]
2852
2853 fuzzer_exes += executable(
2854 name,
2855 sources,
2856 include_directories : [incs, include_directories('src/fuzz')],
2857 link_with : link_with,
2858 dependencies : dependencies,
2859 c_args : defs,
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002860 link_args: link_args,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002861 install : false)
2862endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002863endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002864
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01002865run_target('fuzzers',
2866 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002867 command : ['true'])
2868
2869############################################################
2870
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002871make_directive_index_py = find_program('tools/make-directive-index.py')
2872make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002873xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002874hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002875
2876subdir('units')
2877subdir('sysctl.d')
2878subdir('sysusers.d')
2879subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002880subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002881subdir('hwdb')
2882subdir('network')
2883subdir('man')
2884subdir('shell-completion/bash')
2885subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002886subdir('docs/sysvinit')
2887subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002888
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002889install_subdir('factory/etc',
2890 install_dir : factorydir)
2891
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002892install_data('xorg/50-systemd-user.sh',
2893 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002894install_data('modprobe.d/systemd.conf',
2895 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002896install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002897 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002898 'NEWS',
2899 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302900 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002901 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002902 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302903 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002904 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002905 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002906 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002907 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2908 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002909
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002910meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2911meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2912
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002913############################################################
2914
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002915meson_check_help = find_program('tools/meson-check-help.sh')
2916
2917foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002918 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002919 if want_tests != 'false'
2920 test('check-help-' + name,
2921 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002922 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002923 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002924endforeach
2925
2926############################################################
2927
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02002928check_directives_sh = find_program('tools/check-directives.sh')
2929
2930if want_tests != 'false'
2931 test('check-directives',
2932 check_directives_sh,
2933 args : project_source_root)
2934endif
2935
2936############################################################
2937
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002938# Enable tests for all supported sanitizers
2939foreach tuple : sanitizers
2940 sanitizer = tuple[0]
2941 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002942
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002943 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002944 prev = ''
2945 foreach p : fuzz_regression_tests
2946 b = p.split('/')[-2]
2947 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002948
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002949 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002950
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002951 if name != prev
2952 if want_tests == 'false'
2953 message('Not compiling @0@ because tests is set to false'.format(name))
2954 elif slow_tests
2955 exe = custom_target(
2956 name,
2957 output : name,
2958 depends : build,
2959 command : [env, 'ln', '-fs',
2960 join_paths(build.full_path(), b),
2961 '@OUTPUT@'],
2962 build_by_default : true)
2963 else
2964 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2965 endif
2966 endif
2967 prev = name
2968
2969 if want_tests != 'false' and slow_tests
2970 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2971 env,
2972 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05002973 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002974 endif
2975 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002976 endif
2977endforeach
2978
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002979
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002980############################################################
2981
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002982if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002983 all_files = run_command(
2984 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05002985 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002986 'ls-files',
2987 ':/*.[ch]'])
2988 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002989
userwithuide85a6902017-08-09 13:41:44 +00002990 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002991 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002992 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05002993 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00002994 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002995 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05002996 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002997endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002998
2999if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003000 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003001 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003002 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003003 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003004endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003005
3006if git.found()
3007 git_head = run_command(
3008 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003009 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003010 'rev-parse', 'HEAD']).stdout().strip()
3011 git_head_short = run_command(
3012 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003013 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003014 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3015
3016 run_target(
3017 'git-snapshot',
3018 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003019 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003020 git_head_short),
3021 '--prefix', 'systemd-@0@/'.format(git_head),
3022 'HEAD'])
3023endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003024
3025############################################################
3026
Lennart Poettering51b13862017-12-20 12:51:14 +01003027meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3028run_target(
3029 'check-api-docs',
3030 depends : [man, libsystemd, libudev],
3031 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3032
3033############################################################
3034
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003035status = [
3036 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3037
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003038 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003039 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003040 'prefix directory: @0@'.format(prefixdir),
3041 'rootprefix directory: @0@'.format(rootprefixdir),
3042 'sysconf directory: @0@'.format(sysconfdir),
3043 'include directory: @0@'.format(includedir),
3044 'lib directory: @0@'.format(libdir),
3045 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003046 'SysV init scripts: @0@'.format(sysvinit_path),
3047 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003048 'PAM modules directory: @0@'.format(pamlibdir),
3049 'PAM configuration directory: @0@'.format(pamconfdir),
3050 'RPM macros directory: @0@'.format(rpmmacrosdir),
3051 'modprobe.d directory: @0@'.format(modprobedir),
3052 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3053 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3054 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3055 'bash completions directory: @0@'.format(bashcompletiondir),
3056 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003057 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003058 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3059 get_option('debug-tty')),
3060 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003061 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003062 'maximum system UID: @0@'.format(system_uid_max),
3063 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003064 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3065 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3066 'minimum container UID base: @0@'.format(container_uid_base_min),
3067 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003068 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003069 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003070 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003071 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003072 'nobody user name: @0@'.format(nobody_user),
3073 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003074 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003075 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003076
3077 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003078 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003079 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003080 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003081 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
3082 'default locale: @0@'.format(default_locale)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003083
3084alt_dns_servers = '\n '.join(dns_servers.split(' '))
3085alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3086status += [
3087 'default DNS servers: @0@'.format(alt_dns_servers),
3088 'default NTP servers: @0@'.format(alt_ntp_servers)]
3089
3090alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3091 '@@0@'.format(time_epoch)).stdout().strip()
3092status += [
3093 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3094
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003095status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003096 'static libsystemd: @0@'.format(static_libsystemd),
3097 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003098
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003099# TODO:
3100# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3101# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3102# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3103
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003104if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003105 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003106
3107 if have_gnu_efi
3108 status += [
3109 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003110 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003111 'EFI lib directory: @0@'.format(efi_libdir),
3112 'EFI lds directory: @0@'.format(efi_ldsdir),
3113 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003114 endif
3115endif
3116
3117found = []
3118missing = []
3119
3120foreach tuple : [
3121 ['libcryptsetup'],
3122 ['PAM'],
3123 ['AUDIT'],
3124 ['IMA'],
3125 ['AppArmor'],
3126 ['SELinux'],
3127 ['SECCOMP'],
3128 ['SMACK'],
3129 ['zlib'],
3130 ['xz'],
3131 ['lz4'],
3132 ['bzip2'],
3133 ['ACL'],
3134 ['gcrypt'],
3135 ['qrencode'],
3136 ['microhttpd'],
3137 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003138 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003139 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003140 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003141 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003142 ['libidn'],
3143 ['libiptc'],
3144 ['elfutils'],
3145 ['binfmt'],
3146 ['vconsole'],
3147 ['quotacheck'],
3148 ['tmpfiles'],
3149 ['environment.d'],
3150 ['sysusers'],
3151 ['firstboot'],
3152 ['randomseed'],
3153 ['backlight'],
3154 ['rfkill'],
3155 ['logind'],
3156 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003157 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003158 ['importd'],
3159 ['hostnamed'],
3160 ['timedated'],
3161 ['timesyncd'],
3162 ['localed'],
3163 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003164 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003165 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3166 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003167 ['coredump'],
3168 ['polkit'],
3169 ['legacy pkla', install_polkit_pkla],
3170 ['efi'],
3171 ['gnu-efi', have_gnu_efi],
3172 ['kmod'],
3173 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003174 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003175 ['blkid'],
3176 ['dbus'],
3177 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003178 ['nss-myhostname'],
3179 ['nss-mymachines'],
3180 ['nss-resolve'],
3181 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003182 ['hwdb'],
3183 ['tpm'],
3184 ['man pages', want_man],
3185 ['html pages', want_html],
3186 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003187 ['SysV compat'],
3188 ['utmp'],
3189 ['ldconfig'],
3190 ['hibernate'],
3191 ['adm group', get_option('adm-group')],
3192 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003193 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003194 ['debug hashmap'],
3195 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003196 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003197 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003198 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003199 ['link-udev-shared', get_option('link-udev-shared')],
3200 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003201]
3202
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003203 if tuple.length() >= 2
3204 cond = tuple[1]
3205 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003206 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3207 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003208 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003209 endif
3210 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003211 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003212 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003213 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003214 endif
3215endforeach
3216
3217status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003218 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003219 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003220 '',
3221 'disabled features: @0@'.format(', '.join(missing)),
3222 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003223message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003224
3225if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003226 warning('\n' +
3227 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3228 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3229 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003230endif