blob: 3988fb76bdefb1c29fa2a77b42accbad7667e051 [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01002
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003project('systemd', 'c',
Zbigniew Jędrzejewski-Szmek7eb8a472019-04-03 10:00:14 +02004 version : '242',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04005 license : 'LGPLv2+',
6 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04007 'c_std=gnu99',
8 'prefix=/usr',
9 'sysconfdir=/etc',
10 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040011 ],
Yu Watanabe7a6397d2018-05-15 20:18:24 +090012 meson_version : '>= 0.46',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040013 )
14
Lennart Poetteringbfe6bb22019-03-27 14:23:57 +010015libsystemd_version = '0.26.0'
16libudev_version = '1.6.14'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020017
Yu Watanabe348b4432018-05-07 18:17:35 +090018# We need the same data in two different formats, ugh!
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040019# Also, for hysterical reasons, we use different variable
20# names, sometimes. Not all variables are included in every
21# set. Ugh, ugh, ugh!
22conf = configuration_data()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010023conf.set('PROJECT_VERSION', meson.project_version())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040024
25substs = configuration_data()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010026substs.set('PROJECT_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
27substs.set('PROJECT_VERSION', meson.project_version())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040028
Davide Cavalca1485aac2019-02-27 11:19:07 -050029# This is to be used instead of meson.source_root(), as the latter will return
30# the wrong result when systemd is being built as a meson subproject
31project_source_root = meson.current_source_dir()
32
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020033want_ossfuzz = get_option('oss-fuzz')
34want_libfuzzer = get_option('llvm-fuzz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +000035want_fuzzbuzz = get_option('fuzzbuzz')
36if want_ossfuzz + want_libfuzzer + want_fuzzbuzz > 1
37 error('only one of oss-fuzz, llvm-fuzz or fuzzbuzz can be specified')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020038endif
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +000039
40skip_deps = want_ossfuzz or want_libfuzzer
41fuzzer_build = want_ossfuzz or want_libfuzzer or want_fuzzbuzz
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020042
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040043#####################################################################
44
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040045# Try to install the git pre-commit hook
Davide Cavalca1485aac2019-02-27 11:19:07 -050046git_hook = run_command(join_paths(project_source_root, 'tools/add-git-hook.sh'))
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040047if git_hook.returncode() == 0
48 message(git_hook.stdout().strip())
49endif
50
51#####################################################################
52
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010053if get_option('split-usr') == 'auto'
54 split_usr = run_command('test', '-L', '/bin').returncode() != 0
55else
56 split_usr = get_option('split-usr') == 'true'
57endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010058conf.set10('HAVE_SPLIT_USR', split_usr,
59 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010060
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010061if get_option('split-bin') == 'auto'
62 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
63else
64 split_bin = get_option('split-bin') == 'true'
65endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010066conf.set10('HAVE_SPLIT_BIN', split_bin,
67 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010068
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010069rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010070# Unusual rootprefixdir values are used by some distros
71# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010072rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010073if rootprefixdir == ''
74 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010075endif
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010076rootprefixdir_noslash = rootprefixdir == '/' ? '' : rootprefixdir
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040077
78sysvinit_path = get_option('sysvinit-path')
79sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090080conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020081 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040082
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020083conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
84conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
Lennart Poettering09dad042018-11-15 09:50:42 +010085conf.set('HIGH_RLIMIT_NOFILE', 512*1024)
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020086
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010087# join_paths ignores the preceding arguments if an absolute component is
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040088# encountered, so this should canonicalize various paths when they are
89# absolute or relative.
90prefixdir = get_option('prefix')
91if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040092 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040093endif
94bindir = join_paths(prefixdir, get_option('bindir'))
95libdir = join_paths(prefixdir, get_option('libdir'))
96sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
97includedir = join_paths(prefixdir, get_option('includedir'))
98datadir = join_paths(prefixdir, get_option('datadir'))
99localstatedir = join_paths('/', get_option('localstatedir'))
100
101rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +0100102rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400103rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
104
105rootlibdir = get_option('rootlibdir')
106if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400107 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400108endif
109
110# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +0200111pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
112pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400113polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
114polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
115polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
116varlogdir = join_paths(localstatedir, 'log')
117xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900118rpmmacrosdir = get_option('rpmmacrosdir')
119if rpmmacrosdir != 'no'
120 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
121endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200122modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400123
124# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400125pkgdatadir = join_paths(datadir, 'systemd')
126environmentdir = join_paths(prefixdir, 'lib/environment.d')
127pkgsysconfdir = join_paths(sysconfdir, 'systemd')
128userunitdir = join_paths(prefixdir, 'lib/systemd/user')
129userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
130tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
131sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
132sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
133binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
134modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
135networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
136pkgincludedir = join_paths(includedir, 'systemd')
137systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
138usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
139systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
140userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
141systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
142systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
143systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
144systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
145udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400146udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
147udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
148catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
149kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
150factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400151bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
152testsdir = join_paths(prefixdir, 'lib/systemd/tests')
153systemdstatedir = join_paths(localstatedir, 'lib/systemd')
154catalogstatedir = join_paths(systemdstatedir, 'catalog')
155randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200156profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400157
tblume75aaade2018-02-01 22:46:15 +0100158docdir = get_option('docdir')
159if docdir == ''
160 docdir = join_paths(datadir, 'doc/systemd')
161endif
162
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400163dbuspolicydir = get_option('dbuspolicydir')
164if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400165 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400166endif
167
168dbussessionservicedir = get_option('dbussessionservicedir')
169if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400170 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400171endif
172
173dbussystemservicedir = get_option('dbussystemservicedir')
174if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400175 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400176endif
177
178pamlibdir = get_option('pamlibdir')
179if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400180 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400181endif
182
183pamconfdir = get_option('pamconfdir')
184if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400185 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400186endif
187
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100188memory_accounting_default = get_option('memory-accounting-default')
189
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400190conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400191conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400192conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
193conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
194conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400195conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100196
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100197conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100198
Michael Bieble17e5ba2017-04-13 10:30:56 -0400199conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400200conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
201conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400202conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
203conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
204conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
205conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100206conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100207conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400208conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
209conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
210conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
211conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
212conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100213conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400214conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400215conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
216conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400217conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
218conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
219conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
220conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
221conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
222conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400223conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
224conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700225conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700226conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400227conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400228conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400229conf.set_quoted('LIBDIR', libdir)
230conf.set_quoted('ROOTLIBDIR', rootlibdir)
231conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
232conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400233conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
234conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
Lennart Poettering1d7579c2018-10-10 21:20:08 +0200235conf.set_quoted('SYSTEMD_IMPORT_FS_PATH', join_paths(rootlibexecdir, 'systemd-import-fs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400236conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
237conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
238conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
239conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200240conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100241conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400242
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400243substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100244substs.set('rootprefix', rootprefixdir)
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +0100245substs.set('rootprefix_noslash', rootprefixdir_noslash)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400246substs.set('exec_prefix', prefixdir)
247substs.set('libdir', libdir)
248substs.set('rootlibdir', rootlibdir)
249substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100250substs.set('sysconfdir', sysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400251substs.set('bindir', bindir)
252substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400253substs.set('rootlibexecdir', rootlibexecdir)
254substs.set('systemunitdir', systemunitdir)
255substs.set('userunitdir', userunitdir)
256substs.set('systempresetdir', systempresetdir)
257substs.set('userpresetdir', userpresetdir)
258substs.set('udevhwdbdir', udevhwdbdir)
259substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400260substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200261substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400262substs.set('catalogdir', catalogdir)
263substs.set('tmpfilesdir', tmpfilesdir)
264substs.set('sysusersdir', sysusersdir)
265substs.set('sysctldir', sysctldir)
266substs.set('binfmtdir', binfmtdir)
267substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200268substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400269substs.set('systemgeneratordir', systemgeneratordir)
270substs.set('usergeneratordir', usergeneratordir)
271substs.set('systemenvgeneratordir', systemenvgeneratordir)
272substs.set('userenvgeneratordir', userenvgeneratordir)
273substs.set('systemshutdowndir', systemshutdowndir)
274substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400275substs.set('VARLOGDIR', varlogdir)
276substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400277substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
278substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400279substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
280substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
281substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100282substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200283substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmeke9bbff12019-05-09 13:23:50 +0200284substs.set('BUILD_ROOT', meson.current_build_dir())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400285
286#####################################################################
287
288cc = meson.get_compiler('c')
289pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400290check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100291meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400292
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200293want_tests = get_option('tests')
294slow_tests = want_tests != 'false' and get_option('slow-tests')
295install_tests = get_option('install-tests')
296
James Hilliard46e63a22018-12-27 09:16:20 +0800297if add_languages('cpp', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200298 # Used only for tests
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200299 cxx_cmd = ' '.join(meson.get_compiler('cpp').cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200300else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200301 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400302endif
303
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500304if want_libfuzzer
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +0200305 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer', required : false)
306 if fuzzing_engine.found()
307 add_project_arguments('-fsanitize-coverage=trace-pc-guard,trace-cmp', language : 'c')
308 elif cc.has_argument('-fsanitize=fuzzer-no-link')
309 add_project_arguments('-fsanitize=fuzzer-no-link', language : 'c')
310 else
311 error('Looks like neither libFuzzer nor -fsanitize=fuzzer-no-link is supported')
312 endif
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200313elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500314 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000315elif want_fuzzbuzz
316 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 -0500317endif
318
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900319possible_cc_flags = [
320 '-Wextra',
321 '-Werror=undef',
322 '-Wlogical-op',
323 '-Wmissing-include-dirs',
324 '-Wold-style-definition',
325 '-Wpointer-arith',
326 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900327 '-Wfloat-equal',
328 '-Wsuggest-attribute=noreturn',
329 '-Werror=missing-prototypes',
330 '-Werror=implicit-function-declaration',
331 '-Werror=missing-declarations',
332 '-Werror=return-type',
333 '-Werror=incompatible-pointer-types',
334 '-Werror=format=2',
335 '-Wstrict-prototypes',
336 '-Wredundant-decls',
337 '-Wmissing-noreturn',
338 '-Wimplicit-fallthrough=5',
339 '-Wshadow',
340 '-Wendif-labels',
341 '-Wstrict-aliasing=2',
342 '-Wwrite-strings',
343 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200344 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200345 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900346 '-Wdate-time',
347 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700348
349 # negative arguments are correctly detected starting with meson 0.46.
350 '-Wno-unused-parameter',
351 '-Wno-missing-field-initializers',
352 '-Wno-unused-result',
353 '-Wno-format-signedness',
Zbigniew Jędrzejewski-Szmekeed33622019-03-07 10:56:15 +0100354 '-Wno-error=#warnings', # clang
355 '-Wno-string-plus-int', # clang
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700356
357 # work-around for gcc 7.1 turning this on on its own.
358 '-Wno-error=nonnull',
359
360 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
361 # optimizations enabled, producing essentially false positives.
362 '-Wno-maybe-uninitialized',
363
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900364 '-ffast-math',
365 '-fno-common',
366 '-fdiagnostics-show-option',
367 '-fno-strict-aliasing',
368 '-fvisibility=hidden',
369 '-fstack-protector',
370 '-fstack-protector-strong',
371 '--param=ssp-buffer-size=4',
372]
373
374# --as-needed and --no-undefined are provided by meson by default,
375# run mesonconf to see what is enabled
376possible_link_flags = [
377 '-Wl,-z,relro',
378 '-Wl,-z,now',
379]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400380
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900381if cc.get_id() == 'clang'
382 possible_cc_flags += [
383 '-Wno-typedef-redefinition',
384 '-Wno-gnu-variable-sized-type-not-at-end',
385 ]
386endif
387
388if get_option('buildtype') != 'debug'
389 possible_cc_flags += [
390 '-ffunction-sections',
391 '-fdata-sections',
392 ]
393
394 possible_link_flags += '-Wl,--gc-sections'
395endif
396
Zbigniew Jędrzejewski-Szmeka73f6212019-03-28 09:44:02 +0100397if get_option('b_ndebug') == 'true'
398 # With asserts disabled with get a bunch of warnings about variables which
399 # are used only in the asserts. This is not useful at all, so let's just silence
400 # those warnings.
401 possible_cc_flags += [
402 '-Wno-unused-variable',
403 '-Wno-unused-but-set-variable',
404 ]
405endif
406
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900407add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900408add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900409
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800410if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400411 #include <time.h>
412 #include <inttypes.h>
413 typedef uint64_t usec_t;
414 usec_t now(clockid_t clock);
415 int main(void) {
416 struct timespec now;
417 return 0;
418 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100419''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400420 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400421endif
422
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200423cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400424
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200425has_wstringop_truncation = cc.has_argument('-Wstringop-truncation')
426
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400427#####################################################################
428# compilation result tests
429
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400430conf.set('_GNU_SOURCE', true)
431conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200432conf.set10('HAVE_WSTRINGOP_TRUNCATION', has_wstringop_truncation)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400433
434conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
435conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
436conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
437conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
438conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
439conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
440conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
441
442decl_headers = '''
443#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100444#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400445'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400446
447foreach decl : ['char16_t',
448 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100449 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400450 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400451
452 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200453 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
454
455 if decl == 'struct statx'
456 if have
457 want_linux_stat_h = false
458 else
459 have = cc.sizeof(decl,
460 prefix : decl_headers + '#include <linux/stat.h>',
461 args : '-D_GNU_SOURCE') > 0
462 want_linux_stat_h = have
463 endif
464 endif
465
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200466 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400467endforeach
468
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200469conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700470
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400471foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200472 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400473endforeach
474
475foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100476 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100477 ['gettid', '''#include <sys/types.h>
478 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100479 ['pivot_root', '''#include <stdlib.h>
480 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100481 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400482 #include <sys/stat.h>
483 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100484 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100485 ['renameat2', '''#include <stdio.h>
486 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400487 ['kcmp', '''#include <linux/kcmp.h>'''],
488 ['keyctl', '''#include <sys/types.h>
489 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100490 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400491 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200492 ['bpf', '''#include <sys/syscall.h>
493 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100494 ['statx', '''#include <sys/types.h>
495 #include <sys/stat.h>
496 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100497 ['explicit_bzero' , '''#include <string.h>'''],
498 ['reallocarray', '''#include <malloc.h>'''],
Michal Sekletarb070c7c2019-03-12 18:58:26 +0100499 ['set_mempolicy', '''#include <stdlib.h>
500 #include <unistd.h>'''],
501 ['get_mempolicy', '''#include <stdlib.h>
502 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400503]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400504
Lennart Poettering85db59b2017-12-25 12:01:14 +0100505 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200506 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400507endforeach
508
Lennart Poettering85db59b2017-12-25 12:01:14 +0100509if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200510 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200511 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400512else
513 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200514 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200515 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400516endif
517
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400518#####################################################################
519
Davide Cavalca1485aac2019-02-27 11:19:07 -0500520vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
521 project_source_root,
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100522 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100523 meson.project_version()]
524
Louis Taylord1084aa2019-01-21 21:45:36 +0000525version_h = vcs_tag(
526 input : 'src/version/version.h.in',
527 output : 'version.h',
528 command: vcs_tagger)
529
530versiondep = declare_dependency(sources: version_h)
531
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400532sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400533awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400534m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400535stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400536git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100537env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100538perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400539
Davide Cavalca1485aac2019-02-27 11:19:07 -0500540meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400541mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400542test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
543splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400544
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400545# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
546# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500547progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400548 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400549 ['kmod', '/usr/bin/kmod' ],
550 ['kexec', '/usr/sbin/kexec' ],
551 ['sulogin', '/usr/sbin/sulogin' ],
552 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
553 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
554 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
555 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
556 ]
557foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400558 path = get_option(prog[0] + '-path')
559 if path != ''
560 message('Using @1@ for @0@'.format(prog[0], path))
561 else
562 exe = find_program(prog[0],
563 '/usr/sbin/' + prog[0],
564 '/sbin/' + prog[0],
565 required: false)
566 path = exe.found() ? exe.path() : prog[1]
567 endif
568 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
569 conf.set_quoted(name, path)
570 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400571endforeach
572
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500573conf.set_quoted('TELINIT', get_option('telinit-path'))
574
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400575if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100576 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400577endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400578
579############################################################
580
581gperf = find_program('gperf')
582
583gperf_test_format = '''
584#include <string.h>
585const char * in_word_set(const char *, @0@);
586@1@
587'''
588gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
589gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
590gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
591if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400592 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400593else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400594 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
595 if cc.compiles(gperf_test)
596 gperf_len_type = 'unsigned'
597 else
598 error('unable to determine gperf len type')
599 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400600endif
601message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400602conf.set('GPERF_LEN_TYPE', gperf_len_type,
603 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400604
605############################################################
606
607if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400608 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400609endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100610foreach header : ['crypt.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400611 'linux/memfd.h',
612 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200613 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400614 'valgrind/memcheck.h',
615 'valgrind/valgrind.h',
616 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400617
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200618 conf.set10('HAVE_' + header.underscorify().to_upper(),
619 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400620endforeach
621
622############################################################
623
624conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400625conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
626gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400627
628default_hierarchy = get_option('default-hierarchy')
629conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
630 description : 'default cgroup hierarchy as string')
631if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400632 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400633elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400634 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400635else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400636 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400637endif
638
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100639default_net_naming_scheme = get_option('default-net-naming-scheme')
640conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
641
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400642time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900643if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400644 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900645 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400646endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400647conf.set('TIME_EPOCH', time_epoch)
648
649system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900650if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400651 system_uid_max = run_command(
652 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800653 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
654 '/etc/login.defs').stdout().strip()
655 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900656 system_uid_max = 999
657 else
658 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800659 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400660endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400661conf.set('SYSTEM_UID_MAX', system_uid_max)
662substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400663
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400664system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900665if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400666 system_gid_max = run_command(
667 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800668 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
669 '/etc/login.defs').stdout().strip()
670 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900671 system_gid_max = 999
672 else
673 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800674 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400675endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400676conf.set('SYSTEM_GID_MAX', system_gid_max)
677substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400678
Yu Watanabeac093402018-05-10 16:04:16 +0900679dynamic_uid_min = get_option('dynamic-uid-min')
680dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100681conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
682conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
683substs.set('dynamicuidmin', dynamic_uid_min)
684substs.set('dynamicuidmax', dynamic_uid_max)
685
Yu Watanabeac093402018-05-10 16:04:16 +0900686container_uid_base_min = get_option('container-uid-base-min')
687container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100688conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
689conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
690substs.set('containeruidbasemin', container_uid_base_min)
691substs.set('containeruidbasemax', container_uid_base_max)
692
Lennart Poetteringafde4572017-12-05 11:00:24 +0100693nobody_user = get_option('nobody-user')
694nobody_group = get_option('nobody-group')
695
Chen Qi2484bff2018-07-23 14:53:09 +0800696if not meson.is_cross_build()
697 getent_result = run_command('getent', 'passwd', '65534')
698 if getent_result.returncode() == 0
699 name = getent_result.stdout().split(':')[0]
700 if name != nobody_user
701 warning('\n' +
702 '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) +
703 'Your build will result in an user table setup that is incompatible with the local system.')
704 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100705 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800706 id_result = run_command('id', '-u', nobody_user)
707 if id_result.returncode() == 0
708 id = id_result.stdout().to_int()
709 if id != 65534
710 warning('\n' +
711 '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) +
712 'Your build will result in an user table setup that is incompatible with the local system.')
713 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100714 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100715
Chen Qi2484bff2018-07-23 14:53:09 +0800716 getent_result = run_command('getent', 'group', '65534')
717 if getent_result.returncode() == 0
718 name = getent_result.stdout().split(':')[0]
719 if name != nobody_group
720 warning('\n' +
721 '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) +
722 'Your build will result in an group table setup that is incompatible with the local system.')
723 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100724 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800725 id_result = run_command('id', '-g', nobody_group)
726 if id_result.returncode() == 0
727 id = id_result.stdout().to_int()
728 if id != 65534
729 warning('\n' +
730 '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) +
731 'Your build will result in an group table setup that is incompatible with the local system.')
732 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100733 endif
734endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900735if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900736 warning('\n' +
737 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
738 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900739endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100740
741conf.set_quoted('NOBODY_USER_NAME', nobody_user)
742conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900743substs.set('NOBODY_USER_NAME', nobody_user)
744substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100745
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400746tty_gid = get_option('tty-gid')
747conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400748substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400749
Ikey Doherty84786b82017-12-03 12:28:23 +0000750# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900751users_gid = get_option('users-gid')
752substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000753
Yu Watanabe348b4432018-05-07 18:17:35 +0900754conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
755conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400756
Michael Bieblace5e312018-07-13 23:36:13 +0200757dev_kvm_mode = get_option('dev-kvm-mode')
758substs.set('DEV_KVM_MODE', dev_kvm_mode)
759conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100760group_render_mode = get_option('group-render-mode')
761substs.set('GROUP_RENDER_MODE', group_render_mode)
762conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400763
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400764kill_user_processes = get_option('default-kill-user-processes')
765conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100766conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400767substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400768
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400769dns_servers = get_option('dns-servers')
770conf.set_quoted('DNS_SERVERS', dns_servers)
771substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400772
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400773ntp_servers = get_option('ntp-servers')
774conf.set_quoted('NTP_SERVERS', ntp_servers)
775substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400776
Dave Reisner8ca9e922018-12-28 07:38:36 -0500777default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900778if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800779 if not meson.is_cross_build()
780 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
781 default_locale = run_command(choose_default_locale_sh).stdout().strip()
782 else
783 default_locale = 'C.UTF-8'
784 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900785endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500786conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
787
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400788conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
789
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400790substs.set('SUSHELL', get_option('debug-shell'))
791substs.set('DEBUGTTY', get_option('debug-tty'))
Jan Synacek93912e82019-04-25 12:19:16 +0200792conf.set_quoted('DEBUGTTY', get_option('debug-tty'))
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400793
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200794enable_debug_hashmap = false
795enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900796enable_debug_siphash = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200797foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900798 if name == 'hashmap'
799 enable_debug_hashmap = true
800 elif name == 'mmap-cache'
801 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900802 elif name == 'siphash'
803 enable_debug_siphash = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900804 else
805 message('unknown debug option "@0@", ignoring'.format(name))
806 endif
807endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200808conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
809conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900810conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400811
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200812conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200813conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200814
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400815#####################################################################
816
817threads = dependency('threads')
818librt = cc.find_library('rt')
819libm = cc.find_library('m')
820libdl = cc.find_library('dl')
821libcrypt = cc.find_library('crypt')
822
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400823libcap = dependency('libcap', required : false)
824if not libcap.found()
825 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
826 libcap = cc.find_library('cap')
827endif
828
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400829libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100830 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400831
832want_seccomp = get_option('seccomp')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000833if want_seccomp != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400834 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400835 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400836 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200837 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400838else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200839 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400840 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400841endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200842conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400843
844want_selinux = get_option('selinux')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000845if want_selinux != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400846 libselinux = dependency('libselinux',
847 version : '>= 2.1.9',
848 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200849 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400850else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200851 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400852 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400853endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200854conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400855
856want_apparmor = get_option('apparmor')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000857if want_apparmor != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400858 libapparmor = dependency('libapparmor',
859 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200860 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400861else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200862 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400863 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400864endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200865conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400866
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400867smack_run_label = get_option('smack-run-label')
868if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400869 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400870endif
871
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400872want_polkit = get_option('polkit')
873install_polkit = false
874install_polkit_pkla = false
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000875if want_polkit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400876 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400877
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400878 libpolkit = dependency('polkit-gobject-1',
879 required : false)
880 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
881 message('Old polkit detected, will install pkla files')
882 install_polkit_pkla = true
883 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400884endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200885conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400886
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400887want_acl = get_option('acl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000888if want_acl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400889 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200890 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400891else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200892 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400893 libacl = []
894endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200895conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400896
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400897want_audit = get_option('audit')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000898if want_audit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400899 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200900 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400901else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200902 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400903 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400904endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200905conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400906
907want_blkid = get_option('blkid')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000908if want_blkid != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400909 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200910 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400911else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200912 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400913 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400914endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200915conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400916
917want_kmod = get_option('kmod')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000918if want_kmod != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400919 libkmod = dependency('libkmod',
920 version : '>= 15',
921 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400923else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200924 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400925 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400926endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200927conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400928
929want_pam = get_option('pam')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000930if want_pam != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400931 libpam = cc.find_library('pam', required : want_pam == 'true')
932 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200933 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400934else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200935 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400936 libpam = []
937 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400938endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200939conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400940
941want_microhttpd = get_option('microhttpd')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000942if want_microhttpd != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400943 libmicrohttpd = dependency('libmicrohttpd',
944 version : '>= 0.9.33',
945 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200946 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400947else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200948 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400949 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400950endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200951conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400952
953want_libcryptsetup = get_option('libcryptsetup')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000954if want_libcryptsetup != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400955 libcryptsetup = dependency('libcryptsetup',
956 version : '>= 1.6.0',
957 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200958 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100959 have_sector = cc.has_member(
960 'struct crypt_params_plain',
961 'sector_size',
962 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400963else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200964 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100965 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400966 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400967endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200968conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100969conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400970
971want_libcurl = get_option('libcurl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000972if want_libcurl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400973 libcurl = dependency('libcurl',
974 version : '>= 7.32.0',
975 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200976 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400977else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200978 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400979 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400980endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200981conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400982
983want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400984want_libidn2 = get_option('libidn2')
985if want_libidn == 'true' and want_libidn2 == 'true'
986 error('libidn and libidn2 cannot be requested simultaneously')
987endif
988
Yu Watanabe1b931392019-06-29 03:13:30 +0900989if want_libidn2 != 'false' and want_libidn != 'true' and not skip_deps
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400990 libidn = dependency('libidn2',
991 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200992 have = libidn.found()
993else
994 have = false
Yu Watanabe1b931392019-06-29 03:13:30 +0900995 libidn = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400996endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200997conf.set10('HAVE_LIBIDN2', have)
Yu Watanabe1b931392019-06-29 03:13:30 +0900998if not have and want_libidn != 'false' and not skip_deps
999 # libidn is used for both libidn and libidn2 objects
1000 libidn = dependency('libidn',
1001 required : want_libidn == 'true')
1002 have = libidn.found()
1003else
1004 have = false
1005endif
1006conf.set10('HAVE_LIBIDN', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001007
1008want_libiptc = get_option('libiptc')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001009if want_libiptc != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001010 libiptc = dependency('libiptc',
1011 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001012 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001013else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001014 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001015 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001016endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001017conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001018
1019want_qrencode = get_option('qrencode')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001020if want_qrencode != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001021 libqrencode = dependency('libqrencode',
1022 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001023 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001024else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001025 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001026 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001027endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001028conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001029
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001030want_gcrypt = get_option('gcrypt')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001031if want_gcrypt != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001032 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1033 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001034 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001035else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001036 have = false
1037endif
1038if not have
1039 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001040 libgcrypt = []
1041 libgpg_error = []
1042endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001043conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001044
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001045want_gnutls = get_option('gnutls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001046if want_gnutls != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001047 libgnutls = dependency('gnutls',
1048 version : '>= 3.1.4',
1049 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001050 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001051else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001052 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001053 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001054endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001055conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001056
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001057want_openssl = get_option('openssl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001058if want_openssl != 'false' and not skip_deps
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001059 libopenssl = dependency('openssl',
1060 version : '>= 1.1.0',
1061 required : want_openssl == 'true')
1062 have = libopenssl.found()
1063else
1064 have = false
1065 libopenssl = []
1066endif
1067conf.set10('HAVE_OPENSSL', have)
1068
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001069want_elfutils = get_option('elfutils')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001070if want_elfutils != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001071 libdw = dependency('libdw',
1072 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001073 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001074else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001075 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001076 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001077endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001079
1080want_zlib = get_option('zlib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001081if want_zlib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001082 libz = dependency('zlib',
1083 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001084 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001085else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001086 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001087 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001088endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001089conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001090
1091want_bzip2 = get_option('bzip2')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001092if want_bzip2 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001093 libbzip2 = cc.find_library('bz2',
1094 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001095 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001096else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001097 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001098 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001099endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001100conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001101
1102want_xz = get_option('xz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001103if want_xz != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001104 libxz = dependency('liblzma',
1105 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001106 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001107else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001108 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001109 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001110endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001111conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001112
1113want_lz4 = get_option('lz4')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001114if want_lz4 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001115 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001116 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001117 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001118 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001119else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001120 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001121 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001122endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001123conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001124
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001125want_xkbcommon = get_option('xkbcommon')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001126if want_xkbcommon != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001127 libxkbcommon = dependency('xkbcommon',
1128 version : '>= 0.3.0',
1129 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001130 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001131else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001132 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001133 libxkbcommon = []
1134endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001135conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001136
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001137want_pcre2 = get_option('pcre2')
1138if want_pcre2 != 'false'
1139 libpcre2 = dependency('libpcre2-8',
1140 required : want_pcre2 == 'true')
1141 have = libpcre2.found()
1142else
1143 have = false
1144 libpcre2 = []
1145endif
1146conf.set10('HAVE_PCRE2', have)
1147
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001148want_glib = get_option('glib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001149if want_glib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001150 libglib = dependency('glib-2.0',
1151 version : '>= 2.22.0',
1152 required : want_glib == 'true')
1153 libgobject = dependency('gobject-2.0',
1154 version : '>= 2.22.0',
1155 required : want_glib == 'true')
1156 libgio = dependency('gio-2.0',
1157 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001158 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001159else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001160 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001161 libglib = []
1162 libgobject = []
1163 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001164endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001165conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001166
1167want_dbus = get_option('dbus')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001168if want_dbus != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001169 libdbus = dependency('dbus-1',
1170 version : '>= 1.3.2',
1171 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001172 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001173else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001174 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001175 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001176endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001177conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001178
Yu Watanabe42303dc2017-06-18 05:22:32 +09001179default_dnssec = get_option('default-dnssec')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001180if skip_deps
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001181 default_dnssec = 'no'
1182endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001183if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001184 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1185 default_dnssec = 'no'
1186endif
1187conf.set('DEFAULT_DNSSEC_MODE',
1188 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1189substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1190
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001191dns_over_tls = get_option('dns-over-tls')
1192if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001193 if dns_over_tls == 'openssl'
1194 have_gnutls = false
1195 else
1196 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1197 if dns_over_tls == 'gnutls' and not have_gnutls
1198 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1199 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001200 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001201 if dns_over_tls == 'gnutls' or have_gnutls
1202 have_openssl = false
1203 else
1204 have_openssl = conf.get('HAVE_OPENSSL') == 1
1205 if dns_over_tls != 'auto' and not have_openssl
1206 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
Yu Watanabeb349bc52019-06-17 10:22:54 +09001207 error('DNS-over-TLS support was requested@0@, but dependencies are not available'.format(str))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001208 endif
1209 endif
1210 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001211else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001212 have = false
1213 have_gnutls = false
1214 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001215endif
1216conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001217conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1218conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001219
Iwan Timmerc9299be2018-06-13 20:26:24 +02001220default_dns_over_tls = get_option('default-dns-over-tls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001221if skip_deps
Iwan Timmerc9299be2018-06-13 20:26:24 +02001222 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001223endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001224if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
Iwan Timmer4310bfc2019-02-18 20:41:46 +01001225 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 +02001226 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001227endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001228conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1229 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1230substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001231
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001232want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001233if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001234 have = (conf.get('HAVE_LIBCURL') == 1 and
1235 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001236 conf.get('HAVE_XZ') == 1 and
1237 conf.get('HAVE_GCRYPT') == 1)
1238 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001239 error('importd support was requested, but dependencies are not available')
1240 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001241else
1242 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001243endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001244conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001245
1246want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001247if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001248 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1249 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001250 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1251 # it's possible to build one without the other. Complain only if
Ben Boeckel5238e952019-04-26 20:22:40 -04001252 # support was explicitly requested. The auxiliary files like sysusers
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001253 # config should be installed when any of the programs are built.
1254 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1255 error('remote support was requested, but dependencies are not available')
1256 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001257 have = have_deps[0] or have_deps[1]
1258else
1259 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001260endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001261conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001262
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001263foreach term : ['utmp',
1264 'hibernate',
1265 'environment-d',
1266 'binfmt',
1267 'coredump',
1268 'resolve',
1269 'logind',
1270 'hostnamed',
1271 'localed',
1272 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001273 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001274 'networkd',
1275 'timedated',
1276 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001277 'firstboot',
1278 'randomseed',
1279 'backlight',
1280 'vconsole',
1281 'quotacheck',
1282 'sysusers',
1283 'tmpfiles',
1284 'hwdb',
1285 'rfkill',
1286 'ldconfig',
1287 'efi',
1288 'tpm',
1289 'ima',
1290 'smack',
1291 'gshadow',
1292 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001293 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001294 'nss-systemd']
1295 have = get_option(term)
1296 name = 'ENABLE_' + term.underscorify().to_upper()
1297 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001298endforeach
1299
Yu Watanabe08540a92018-07-18 09:25:57 +09001300foreach tuple : [['nss-mymachines', 'machined'],
1301 ['nss-resolve', 'resolve']]
1302 want = get_option(tuple[0])
1303 if want != 'false'
1304 have = get_option(tuple[1])
1305 if want == 'true' and not have
1306 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1307 endif
1308 else
1309 have = false
1310 endif
1311 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1312 conf.set10(name, have)
1313endforeach
1314
1315enable_nss = false
1316foreach term : ['ENABLE_NSS_MYHOSTNAME',
1317 'ENABLE_NSS_MYMACHINES',
1318 'ENABLE_NSS_RESOLVE',
1319 'ENABLE_NSS_SYSTEMD']
1320 if conf.get(term) == 1
1321 enable_nss = true
1322 endif
1323endforeach
1324conf.set10('ENABLE_NSS', enable_nss)
1325
Yu Watanabe348b4432018-05-07 18:17:35 +09001326conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001327
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001328tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001329fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001330
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001331conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001332
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001333#####################################################################
1334
1335if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001336 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001337
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001338 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001339 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001340 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001341 elif efi_arch == 'x86_64'
1342 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001343 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001344 elif efi_arch == 'arm'
1345 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001346 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001347 elif efi_arch == 'aarch64'
1348 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001349 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001350 else
1351 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001352 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001353 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001354
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001355 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001356 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001357
Yu Watanabeac093402018-05-10 16:04:16 +09001358 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001359else
1360 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001361endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001362conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001363
1364#####################################################################
1365
1366config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001367 output : 'config.h',
1368 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001369
Yu Watanabe348b4432018-05-07 18:17:35 +09001370meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1371
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001372includes = include_directories('src/basic',
1373 'src/shared',
1374 'src/systemd',
1375 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001376 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001377 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001378 'src/resolve',
1379 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001380 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001381 'src/login',
1382 'src/udev',
1383 'src/libudev',
1384 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001385 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001386 'src/libsystemd/sd-bus',
1387 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001388 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001389 'src/libsystemd/sd-hwdb',
1390 'src/libsystemd/sd-id128',
1391 'src/libsystemd/sd-netlink',
1392 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001393 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001394 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001395 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001396
1397add_project_arguments('-include', 'config.h', language : 'c')
1398
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001399generate_gperfs = find_program('tools/generate-gperfs.py')
1400
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001401subdir('po')
1402subdir('catalog')
1403subdir('src/systemd')
1404subdir('src/basic')
1405subdir('src/libsystemd')
1406subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001407subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001408subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001409
1410libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001411 'journal-core',
1412 libjournal_core_sources,
1413 journald_gperf_c,
1414 include_directories : includes,
1415 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001416
Davide Cavalca1485aac2019-02-27 11:19:07 -05001417libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001418libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001419 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001420 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001421 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001422 include_directories : includes,
1423 link_args : ['-shared',
1424 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001425 link_with : [libbasic,
1426 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001427 link_whole : [libsystemd_static,
1428 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001429 dependencies : [threads,
1430 librt,
1431 libxz,
1432 liblz4],
1433 link_depends : libsystemd_sym,
1434 install : true,
1435 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001436
Davide Cavalca70848ec2018-04-09 02:43:35 -07001437static_libsystemd = get_option('static-libsystemd')
1438static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1439
1440install_libsystemd_static = static_library(
1441 'systemd',
1442 libsystemd_sources,
1443 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001444 basic_sources,
1445 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001446 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001447 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001448 build_by_default : static_libsystemd != 'false',
1449 install : static_libsystemd != 'false',
1450 install_dir : rootlibdir,
1451 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1452 dependencies : [threads,
1453 librt,
1454 libxz,
1455 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001456 libcap,
1457 libblkid,
1458 libmount,
1459 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001460 libgcrypt],
1461 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1462
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001463############################################################
1464
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001465# binaries that have --help and are intended for use by humans,
1466# usually, but not always, installed in /bin.
1467public_programs = []
1468
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001469subdir('src/libudev')
1470subdir('src/shared')
1471subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001472subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001473subdir('src/udev')
1474subdir('src/network')
1475
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001476subdir('src/analyze')
1477subdir('src/journal-remote')
1478subdir('src/coredump')
1479subdir('src/hostname')
1480subdir('src/import')
1481subdir('src/kernel-install')
1482subdir('src/locale')
1483subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001484subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001485subdir('src/nspawn')
1486subdir('src/resolve')
1487subdir('src/timedate')
1488subdir('src/timesync')
1489subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001490subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001491
1492subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001493subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001494subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001495subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001496
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001497############################################################
1498
1499# only static linking apart from libdl, to make sure that the
1500# module is linked to all libraries that it uses.
1501test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001502 'test-dlopen',
1503 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001504 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001505 include_directories : includes,
1506 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001507 dependencies : [libdl],
1508 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001509
Yu Watanabe08540a92018-07-18 09:25:57 +09001510foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001511 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001512 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1513 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001514
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001515 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001516 if condition
1517 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001518
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001519 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001520 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001521
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001522 nss = shared_library(
1523 'nss_' + module,
1524 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001525 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001526 version : '2',
1527 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001528 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1529 link_args : ['-Wl,-z,nodelete',
1530 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001531 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001532 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001533 libbasic],
1534 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001535 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001536 link_depends : sym,
1537 install : true,
1538 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001539
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001540 # We cannot use shared_module because it does not support version suffix.
1541 # Unfortunately shared_library insists on creating the symlink…
1542 meson.add_install_script('sh', '-c',
1543 'rm $DESTDIR@0@/libnss_@1@.so'
1544 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001545
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001546 if want_tests != 'false'
1547 test('dlopen-nss_' + module,
1548 test_dlopen,
1549 # path to dlopen must include a slash
1550 args : nss.full_path())
1551 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001552 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001553endforeach
1554
1555############################################################
1556
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001557executable('systemd',
1558 systemd_sources,
1559 include_directories : includes,
1560 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001561 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001562 dependencies : [versiondep,
1563 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001564 librt,
1565 libseccomp,
1566 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001567 libmount,
1568 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001569 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001570 install : true,
1571 install_dir : rootlibexecdir)
1572
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001573meson.add_install_script(meson_make_symlink,
1574 join_paths(rootlibexecdir, 'systemd'),
1575 join_paths(rootsbindir, 'init'))
1576
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001577exe = executable('systemd-analyze',
1578 systemd_analyze_sources,
1579 include_directories : includes,
1580 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001581 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001582 dependencies : [versiondep,
1583 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001584 librt,
1585 libseccomp,
1586 libselinux,
1587 libmount,
1588 libblkid],
1589 install_rpath : rootlibexecdir,
1590 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001591public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001592
1593executable('systemd-journald',
1594 systemd_journald_sources,
1595 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001596 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001597 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001598 dependencies : [threads,
1599 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001600 liblz4,
1601 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001602 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001603 install : true,
1604 install_dir : rootlibexecdir)
1605
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001606exe = executable('systemd-cat',
1607 systemd_cat_sources,
1608 include_directories : includes,
1609 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001610 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001611 dependencies : [threads],
1612 install_rpath : rootlibexecdir,
1613 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001614public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001615
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001616exe = executable('journalctl',
1617 journalctl_sources,
1618 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001619 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001620 dependencies : [threads,
1621 libqrencode,
1622 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001623 liblz4,
1624 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001625 install_rpath : rootlibexecdir,
1626 install : true,
1627 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001628public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001629
1630executable('systemd-getty-generator',
1631 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001632 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001633 link_with : [libshared],
1634 install_rpath : rootlibexecdir,
1635 install : true,
1636 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001637
1638executable('systemd-debug-generator',
1639 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001640 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001641 link_with : [libshared],
1642 install_rpath : rootlibexecdir,
1643 install : true,
1644 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001645
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001646executable('systemd-run-generator',
1647 'src/run-generator/run-generator.c',
1648 include_directories : includes,
1649 link_with : [libshared],
1650 install_rpath : rootlibexecdir,
1651 install : true,
1652 install_dir : systemgeneratordir)
1653
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001654executable('systemd-fstab-generator',
1655 'src/fstab-generator/fstab-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001656 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01001657 link_with : [libcore_shared,
1658 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001659 install_rpath : rootlibexecdir,
1660 install : true,
1661 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001662
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001663if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001664 executable('30-systemd-environment-d-generator',
1665 'src/environment-d-generator/environment-d-generator.c',
1666 include_directories : includes,
1667 link_with : [libshared],
1668 install_rpath : rootlibexecdir,
1669 install : true,
1670 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001671
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001672 meson.add_install_script(meson_make_symlink,
1673 join_paths(sysconfdir, 'environment'),
1674 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001675endif
1676
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001677if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001678 executable('systemd-hibernate-resume-generator',
1679 'src/hibernate-resume/hibernate-resume-generator.c',
1680 include_directories : includes,
1681 link_with : [libshared],
1682 install_rpath : rootlibexecdir,
1683 install : true,
1684 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001685
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001686 executable('systemd-hibernate-resume',
1687 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001688 include_directories : includes,
1689 link_with : [libshared],
1690 install_rpath : rootlibexecdir,
1691 install : true,
1692 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001693endif
1694
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001695if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001696 executable('systemd-gpt-auto-generator',
1697 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001698 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001699 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001700 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001701 dependencies : libblkid,
1702 install_rpath : rootlibexecdir,
1703 install : true,
1704 install_dir : systemgeneratordir)
1705
1706 exe = executable('systemd-dissect',
1707 'src/dissect/dissect.c',
1708 include_directories : includes,
1709 link_with : [libshared],
1710 install_rpath : rootlibexecdir,
1711 install : true,
1712 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001713 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001714endif
1715
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001716if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001717 executable('systemd-resolved',
1718 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001719 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001720 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001721 libbasic_gcrypt,
1722 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001723 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001724 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001725 install : true,
1726 install_dir : rootlibexecdir)
1727
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001728 exe = executable('resolvectl',
1729 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001730 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001731 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001732 libbasic_gcrypt,
1733 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001734 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001735 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001736 libm,
1737 libidn],
1738 install_rpath : rootlibexecdir,
1739 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001740 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001741
1742 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001743 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001744 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001745
1746 meson.add_install_script(meson_make_symlink,
1747 join_paths(bindir, 'resolvectl'),
1748 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001749endif
1750
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001751if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001752 executable('systemd-logind',
1753 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001754 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001755 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001756 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001757 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001758 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001759 install_rpath : rootlibexecdir,
1760 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001761 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001762
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001763 exe = executable('loginctl',
1764 loginctl_sources,
1765 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001766 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001767 dependencies : [threads,
1768 liblz4,
1769 libxz],
1770 install_rpath : rootlibexecdir,
1771 install : true,
1772 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001773 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001774
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001775 exe = executable('systemd-inhibit',
1776 'src/login/inhibit.c',
1777 include_directories : includes,
1778 link_with : [libshared],
1779 install_rpath : rootlibexecdir,
1780 install : true,
1781 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001782 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001783
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001784 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001785 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001786 pam_systemd = shared_library(
1787 'pam_systemd',
1788 pam_systemd_c,
1789 name_prefix : '',
1790 include_directories : includes,
1791 link_args : ['-shared',
1792 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001793 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001794 libshared_static],
1795 dependencies : [threads,
1796 libpam,
1797 libpam_misc],
1798 link_depends : pam_systemd_sym,
1799 install : true,
1800 install_dir : pamlibdir)
1801
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001802 if want_tests != 'false'
1803 test('dlopen-pam_systemd',
1804 test_dlopen,
1805 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001806 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001807 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001808 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001809
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001810 executable('systemd-user-runtime-dir',
1811 user_runtime_dir_sources,
1812 include_directories : includes,
1813 link_with : [libshared],
1814 install_rpath : rootlibexecdir,
1815 install : true,
1816 install_dir : rootlibexecdir)
1817endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001818
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001819if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001820 executable('systemd-user-sessions',
1821 'src/user-sessions/user-sessions.c',
1822 include_directories : includes,
1823 link_with : [libshared],
1824 install_rpath : rootlibexecdir,
1825 install : true,
1826 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001827endif
1828
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001829if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001830 exe = executable('bootctl',
1831 'src/boot/bootctl.c',
1832 include_directories : includes,
1833 link_with : [libshared],
1834 dependencies : [libblkid],
1835 install_rpath : rootlibexecdir,
1836 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001837 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001838
1839 executable('systemd-bless-boot',
1840 'src/boot/bless-boot.c',
1841 include_directories : includes,
1842 link_with : [libshared],
1843 dependencies : [libblkid],
1844 install_rpath : rootlibexecdir,
1845 install : true,
1846 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001847
1848 executable('systemd-bless-boot-generator',
1849 'src/boot/bless-boot-generator.c',
1850 include_directories : includes,
1851 link_with : [libshared],
1852 install_rpath : rootlibexecdir,
1853 install : true,
1854 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001855endif
1856
Lennart Poetteringf876f532018-06-25 16:07:33 +02001857executable('systemd-boot-check-no-failures',
1858 'src/boot/boot-check-no-failures.c',
1859 include_directories : includes,
1860 link_with : [libshared],
1861 dependencies : [libblkid],
1862 install_rpath : rootlibexecdir,
1863 install : true,
1864 install_dir : rootlibexecdir)
1865
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001866exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1867 include_directories : includes,
1868 link_with : [libshared],
1869 dependencies : [threads],
1870 install_rpath : rootlibexecdir,
1871 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001872public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001873
Felipe Satelerf3794362018-05-22 15:08:57 -04001874
1875if get_option('link-systemctl-shared')
1876 systemctl_link_with = [libshared]
1877else
1878 systemctl_link_with = [libsystemd_static,
1879 libshared_static,
1880 libjournal_client,
1881 libbasic_gcrypt]
1882endif
1883
Lennart Poettering63a3b3c2019-03-22 20:05:08 +01001884exe = executable('systemctl',
1885 'src/systemctl/systemctl.c',
1886 'src/systemctl/sysv-compat.h',
1887 'src/systemctl/sysv-compat.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001888 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001889 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001890 dependencies : [threads,
1891 libcap,
1892 libselinux,
1893 libxz,
1894 liblz4],
1895 install_rpath : rootlibexecdir,
1896 install : true,
1897 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001898public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001899
Lennart Poettering61d05782018-04-16 21:41:40 +02001900if conf.get('ENABLE_PORTABLED') == 1
1901 executable('systemd-portabled',
1902 systemd_portabled_sources,
1903 include_directories : includes,
1904 link_with : [libshared],
1905 dependencies : [threads],
1906 install_rpath : rootlibexecdir,
1907 install : true,
1908 install_dir : rootlibexecdir)
1909
1910 exe = executable('portablectl', 'src/portable/portablectl.c',
1911 include_directories : includes,
1912 link_with : [libshared],
1913 dependencies : [threads],
1914 install_rpath : rootlibexecdir,
1915 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001916 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001917 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001918endif
1919
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001920foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1921 meson.add_install_script(meson_make_symlink,
1922 join_paths(rootbindir, 'systemctl'),
1923 join_paths(rootsbindir, alias))
1924endforeach
1925
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001926if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001927 executable('systemd-backlight',
1928 'src/backlight/backlight.c',
1929 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001930 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001931 install_rpath : rootlibexecdir,
1932 install : true,
1933 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001934endif
1935
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001936if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001937 executable('systemd-rfkill',
1938 'src/rfkill/rfkill.c',
1939 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001940 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001941 install_rpath : rootlibexecdir,
1942 install : true,
1943 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001944endif
1945
1946executable('systemd-system-update-generator',
1947 'src/system-update-generator/system-update-generator.c',
1948 include_directories : includes,
1949 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001950 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001951 install : true,
1952 install_dir : systemgeneratordir)
1953
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001954if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001955 executable('systemd-cryptsetup',
1956 'src/cryptsetup/cryptsetup.c',
1957 include_directories : includes,
1958 link_with : [libshared],
1959 dependencies : [libcryptsetup],
1960 install_rpath : rootlibexecdir,
1961 install : true,
1962 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001963
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001964 executable('systemd-cryptsetup-generator',
1965 'src/cryptsetup/cryptsetup-generator.c',
1966 include_directories : includes,
1967 link_with : [libshared],
1968 dependencies : [libcryptsetup],
1969 install_rpath : rootlibexecdir,
1970 install : true,
1971 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001972
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001973 executable('systemd-veritysetup',
1974 'src/veritysetup/veritysetup.c',
1975 include_directories : includes,
1976 link_with : [libshared],
1977 dependencies : [libcryptsetup],
1978 install_rpath : rootlibexecdir,
1979 install : true,
1980 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001981
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001982 executable('systemd-veritysetup-generator',
1983 'src/veritysetup/veritysetup-generator.c',
1984 include_directories : includes,
1985 link_with : [libshared],
1986 dependencies : [libcryptsetup],
1987 install_rpath : rootlibexecdir,
1988 install : true,
1989 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001990endif
1991
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001992if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001993 executable('systemd-sysv-generator',
1994 'src/sysv-generator/sysv-generator.c',
1995 include_directories : includes,
1996 link_with : [libshared],
1997 install_rpath : rootlibexecdir,
1998 install : true,
1999 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002000
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002001 executable('systemd-rc-local-generator',
2002 'src/rc-local-generator/rc-local-generator.c',
2003 include_directories : includes,
2004 link_with : [libshared],
2005 install_rpath : rootlibexecdir,
2006 install : true,
2007 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002008endif
2009
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002010if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002011 executable('systemd-hostnamed',
2012 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002013 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002014 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002015 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002016 install : true,
2017 install_dir : rootlibexecdir)
2018
2019 exe = executable('hostnamectl',
2020 'src/hostname/hostnamectl.c',
2021 include_directories : includes,
2022 link_with : [libshared],
2023 install_rpath : rootlibexecdir,
2024 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002025 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002026endif
2027
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002028if conf.get('ENABLE_LOCALED') == 1
2029 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002030 # logind will load libxkbcommon.so dynamically on its own
2031 deps = [libdl]
2032 else
2033 deps = []
2034 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002035
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002036 executable('systemd-localed',
2037 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002038 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002039 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002040 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002041 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002042 install : true,
2043 install_dir : rootlibexecdir)
2044
2045 exe = executable('localectl',
2046 localectl_sources,
2047 include_directories : includes,
2048 link_with : [libshared],
2049 install_rpath : rootlibexecdir,
2050 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002051 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002052endif
2053
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002054if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002055 executable('systemd-timedated',
2056 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002057 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002058 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002059 install_rpath : rootlibexecdir,
2060 install : true,
2061 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002062endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002063
Yu Watanabe6129ec82018-05-03 18:07:43 +09002064if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002065 exe = executable('timedatectl',
2066 'src/timedate/timedatectl.c',
2067 include_directories : includes,
2068 install_rpath : rootlibexecdir,
2069 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002070 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002071 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002072 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002073endif
2074
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002075if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002076 executable('systemd-timesyncd',
2077 systemd_timesyncd_sources,
2078 include_directories : includes,
2079 link_with : [libshared],
2080 dependencies : [threads,
2081 libm],
2082 install_rpath : rootlibexecdir,
2083 install : true,
2084 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002085
2086 executable('systemd-time-wait-sync',
2087 'src/time-wait-sync/time-wait-sync.c',
2088 include_directories : includes,
2089 link_with : [libshared],
2090 install_rpath : rootlibexecdir,
2091 install : true,
2092 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002093endif
2094
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002095if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002096 executable('systemd-machined',
2097 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002098 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002099 link_with : [libmachine_core,
2100 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002101 install_rpath : rootlibexecdir,
2102 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002103 install_dir : rootlibexecdir)
2104
2105 exe = executable('machinectl',
2106 'src/machine/machinectl.c',
2107 include_directories : includes,
2108 link_with : [libshared],
2109 dependencies : [threads,
2110 libxz,
2111 liblz4],
2112 install_rpath : rootlibexecdir,
2113 install : true,
2114 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002115 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002116endif
2117
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002118if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002119 executable('systemd-importd',
2120 systemd_importd_sources,
2121 include_directories : includes,
2122 link_with : [libshared],
2123 dependencies : [threads],
2124 install_rpath : rootlibexecdir,
2125 install : true,
2126 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002127
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002128 systemd_pull = executable('systemd-pull',
2129 systemd_pull_sources,
2130 include_directories : includes,
2131 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002132 dependencies : [versiondep,
2133 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002134 libz,
2135 libbzip2,
2136 libxz,
2137 libgcrypt],
2138 install_rpath : rootlibexecdir,
2139 install : true,
2140 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002141
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002142 systemd_import = executable('systemd-import',
2143 systemd_import_sources,
2144 include_directories : includes,
2145 link_with : [libshared],
2146 dependencies : [libcurl,
2147 libz,
2148 libbzip2,
2149 libxz],
2150 install_rpath : rootlibexecdir,
2151 install : true,
2152 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002153
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002154 systemd_import_fs = executable('systemd-import-fs',
2155 systemd_import_fs_sources,
2156 include_directories : includes,
2157 link_with : [libshared],
2158 install_rpath : rootlibexecdir,
2159 install : true,
2160 install_dir : rootlibexecdir)
2161
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002162 systemd_export = executable('systemd-export',
2163 systemd_export_sources,
2164 include_directories : includes,
2165 link_with : [libshared],
2166 dependencies : [libcurl,
2167 libz,
2168 libbzip2,
2169 libxz],
2170 install_rpath : rootlibexecdir,
2171 install : true,
2172 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002173
2174 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002175endif
2176
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002177if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002178 exe = executable('systemd-journal-upload',
2179 systemd_journal_upload_sources,
2180 include_directories : includes,
2181 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002182 dependencies : [versiondep,
2183 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002184 libcurl,
2185 libgnutls,
2186 libxz,
2187 liblz4],
2188 install_rpath : rootlibexecdir,
2189 install : true,
2190 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002191 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002192endif
2193
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002194if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002195 s_j_remote = executable('systemd-journal-remote',
2196 systemd_journal_remote_sources,
2197 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002198 link_with : [libshared,
2199 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002200 dependencies : [threads,
2201 libmicrohttpd,
2202 libgnutls,
2203 libxz,
2204 liblz4],
2205 install_rpath : rootlibexecdir,
2206 install : true,
2207 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002208
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002209 s_j_gatewayd = executable('systemd-journal-gatewayd',
2210 systemd_journal_gatewayd_sources,
2211 include_directories : includes,
2212 link_with : [libshared],
2213 dependencies : [threads,
2214 libmicrohttpd,
2215 libgnutls,
2216 libxz,
2217 liblz4],
2218 install_rpath : rootlibexecdir,
2219 install : true,
2220 install_dir : rootlibexecdir)
2221 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002222endif
2223
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002224if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002225 executable('systemd-coredump',
2226 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002227 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002228 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002229 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002230 libacl,
2231 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002232 libxz,
2233 liblz4],
2234 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002235 install : true,
2236 install_dir : rootlibexecdir)
2237
2238 exe = executable('coredumpctl',
2239 coredumpctl_sources,
2240 include_directories : includes,
2241 link_with : [libshared],
2242 dependencies : [threads,
2243 libxz,
2244 liblz4],
2245 install_rpath : rootlibexecdir,
2246 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002247 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002248endif
2249
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002250if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002251 exe = executable('systemd-binfmt',
2252 'src/binfmt/binfmt.c',
2253 include_directories : includes,
2254 link_with : [libshared],
2255 install_rpath : rootlibexecdir,
2256 install : true,
2257 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002258 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002259
2260 meson.add_install_script('sh', '-c',
2261 mkdir_p.format(binfmtdir))
2262 meson.add_install_script('sh', '-c',
2263 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2264endif
2265
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002266if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002267 executable('systemd-vconsole-setup',
2268 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002269 include_directories : includes,
2270 link_with : [libshared],
2271 install_rpath : rootlibexecdir,
2272 install : true,
2273 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002274endif
2275
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002276if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002277 executable('systemd-random-seed',
2278 'src/random-seed/random-seed.c',
2279 include_directories : includes,
2280 link_with : [libshared],
2281 install_rpath : rootlibexecdir,
2282 install : true,
2283 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002284endif
2285
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002286if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002287 executable('systemd-firstboot',
2288 'src/firstboot/firstboot.c',
2289 include_directories : includes,
2290 link_with : [libshared],
2291 dependencies : [libcrypt],
2292 install_rpath : rootlibexecdir,
2293 install : true,
2294 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002295endif
2296
2297executable('systemd-remount-fs',
2298 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002299 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002300 link_with : [libcore_shared,
2301 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002302 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002303 install : true,
2304 install_dir : rootlibexecdir)
2305
2306executable('systemd-machine-id-setup',
2307 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002308 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002309 link_with : [libcore_shared,
2310 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002311 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002312 install : true,
2313 install_dir : rootbindir)
2314
2315executable('systemd-fsck',
2316 'src/fsck/fsck.c',
2317 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002318 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002319 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002320 install : true,
2321 install_dir : rootlibexecdir)
2322
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002323executable('systemd-growfs',
2324 'src/partition/growfs.c',
2325 include_directories : includes,
2326 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002327 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002328 install_rpath : rootlibexecdir,
2329 install : true,
2330 install_dir : rootlibexecdir)
2331
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002332executable('systemd-makefs',
2333 'src/partition/makefs.c',
2334 include_directories : includes,
2335 link_with : [libshared],
2336 install_rpath : rootlibexecdir,
2337 install : true,
2338 install_dir : rootlibexecdir)
2339
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002340executable('systemd-sleep',
2341 'src/sleep/sleep.c',
2342 include_directories : includes,
2343 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002344 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002345 install : true,
2346 install_dir : rootlibexecdir)
2347
Yu Watanabed25e1272019-01-03 02:32:57 +09002348install_data('src/sleep/sleep.conf',
2349 install_dir : pkgsysconfdir)
2350
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002351exe = executable('systemd-sysctl',
2352 'src/sysctl/sysctl.c',
2353 include_directories : includes,
2354 link_with : [libshared],
2355 install_rpath : rootlibexecdir,
2356 install : true,
2357 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002358public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002359
2360executable('systemd-ac-power',
2361 'src/ac-power/ac-power.c',
2362 include_directories : includes,
2363 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002364 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002365 install : true,
2366 install_dir : rootlibexecdir)
2367
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002368exe = executable('systemd-detect-virt',
2369 'src/detect-virt/detect-virt.c',
2370 include_directories : includes,
2371 link_with : [libshared],
2372 install_rpath : rootlibexecdir,
2373 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002374public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002375
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002376exe = executable('systemd-delta',
2377 'src/delta/delta.c',
2378 include_directories : includes,
2379 link_with : [libshared],
2380 install_rpath : rootlibexecdir,
2381 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002382public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002383
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002384exe = executable('systemd-escape',
2385 'src/escape/escape.c',
2386 include_directories : includes,
2387 link_with : [libshared],
2388 install_rpath : rootlibexecdir,
2389 install : true,
2390 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002391public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002392
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002393exe = executable('systemd-notify',
2394 'src/notify/notify.c',
2395 include_directories : includes,
2396 link_with : [libshared],
2397 install_rpath : rootlibexecdir,
2398 install : true,
2399 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002400public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002401
2402executable('systemd-volatile-root',
2403 'src/volatile-root/volatile-root.c',
2404 include_directories : includes,
2405 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002406 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002407 install : true,
2408 install_dir : rootlibexecdir)
2409
2410executable('systemd-cgroups-agent',
2411 'src/cgroups-agent/cgroups-agent.c',
2412 include_directories : includes,
2413 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002414 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002415 install : true,
2416 install_dir : rootlibexecdir)
2417
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002418exe = executable('systemd-id128',
2419 'src/id128/id128.c',
2420 include_directories : includes,
2421 link_with : [libshared],
2422 install_rpath : rootlibexecdir,
2423 install : true)
2424public_programs += exe
2425
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002426exe = executable('systemd-path',
2427 'src/path/path.c',
2428 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002429 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002430 install_rpath : rootlibexecdir,
2431 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002432public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002433
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002434exe = executable('systemd-ask-password',
2435 'src/ask-password/ask-password.c',
2436 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002437 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002438 install_rpath : rootlibexecdir,
2439 install : true,
2440 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002441public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002442
2443executable('systemd-reply-password',
2444 'src/reply-password/reply-password.c',
2445 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002446 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002447 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002448 install : true,
2449 install_dir : rootlibexecdir)
2450
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002451exe = executable('systemd-tty-ask-password-agent',
2452 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2453 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002454 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002455 install_rpath : rootlibexecdir,
2456 install : true,
2457 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002458public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002459
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002460exe = executable('systemd-cgls',
2461 'src/cgls/cgls.c',
2462 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002463 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002464 install_rpath : rootlibexecdir,
2465 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002466public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002467
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002468exe = executable('systemd-cgtop',
2469 'src/cgtop/cgtop.c',
2470 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002471 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002472 install_rpath : rootlibexecdir,
2473 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002474public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002475
2476executable('systemd-initctl',
2477 'src/initctl/initctl.c',
2478 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002479 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002480 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002481 install : true,
2482 install_dir : rootlibexecdir)
2483
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002484exe = executable('systemd-mount',
2485 'src/mount/mount-tool.c',
2486 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002487 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek7d991d42019-04-04 13:41:47 +02002488 dependencies: [libmount],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002489 install_rpath : rootlibexecdir,
2490 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002491public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002492
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002493meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002494 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002495
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002496exe = executable('systemd-run',
2497 'src/run/run.c',
2498 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002499 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002500 install_rpath : rootlibexecdir,
2501 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002502public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002503
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002504exe = executable('systemd-stdio-bridge',
2505 'src/stdio-bridge/stdio-bridge.c',
2506 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002507 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002508 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002509 install_rpath : rootlibexecdir,
2510 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002511public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002512
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002513exe = executable('busctl',
2514 'src/busctl/busctl.c',
2515 'src/busctl/busctl-introspect.c',
2516 'src/busctl/busctl-introspect.h',
2517 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002518 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002519 install_rpath : rootlibexecdir,
2520 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002521public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002522
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002523if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002524 exe = executable('systemd-sysusers',
2525 'src/sysusers/sysusers.c',
2526 include_directories : includes,
2527 link_with : [libshared],
2528 install_rpath : rootlibexecdir,
2529 install : true,
2530 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002531 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002532endif
2533
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002534if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002535 exe = executable('systemd-tmpfiles',
2536 'src/tmpfiles/tmpfiles.c',
2537 include_directories : includes,
2538 link_with : [libshared],
2539 dependencies : [libacl],
2540 install_rpath : rootlibexecdir,
2541 install : true,
2542 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002543 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002544
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002545 if want_tests != 'false'
2546 test('test-systemd-tmpfiles',
2547 test_systemd_tmpfiles_py,
2548 # https://github.com/mesonbuild/meson/issues/2681
2549 args : exe.full_path())
2550 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002551endif
2552
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002553if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002554 exe = executable('systemd-hwdb',
2555 'src/hwdb/hwdb.c',
2556 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2557 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002558 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002559 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002560 install : true,
2561 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002562 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002563endif
2564
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002565if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002566 executable('systemd-quotacheck',
2567 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002568 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002569 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002570 install_rpath : rootlibexecdir,
2571 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002572 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002573endif
2574
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002575exe = executable('systemd-socket-proxyd',
2576 'src/socket-proxy/socket-proxyd.c',
2577 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002578 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002579 dependencies : [threads],
2580 install_rpath : rootlibexecdir,
2581 install : true,
2582 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002583public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002584
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002585exe = executable('systemd-udevd',
2586 systemd_udevd_sources,
2587 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002588 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002589 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002590 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002591 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002592 dependencies : [versiondep,
2593 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002594 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002595 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002596 libacl,
2597 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002598 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002599 install : true,
2600 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002601public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002602
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002603exe = executable('udevadm',
2604 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002605 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002606 include_directories : includes,
2607 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002608 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002609 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002610 dependencies : [versiondep,
2611 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002612 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002613 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002614 libacl,
2615 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002616 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002617 install : true,
2618 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002619public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002620
2621executable('systemd-shutdown',
2622 systemd_shutdown_sources,
2623 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002624 link_with : [libcore_shared,
2625 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002626 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002627 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002628 install : true,
2629 install_dir : rootlibexecdir)
2630
2631executable('systemd-update-done',
2632 'src/update-done/update-done.c',
2633 include_directories : includes,
2634 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002635 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002636 install : true,
2637 install_dir : rootlibexecdir)
2638
2639executable('systemd-update-utmp',
2640 'src/update-utmp/update-utmp.c',
2641 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002642 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002643 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002644 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002645 install : true,
2646 install_dir : rootlibexecdir)
2647
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002648if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002649 executable('systemd-modules-load',
2650 'src/modules-load/modules-load.c',
2651 include_directories : includes,
2652 link_with : [libshared],
2653 dependencies : [libkmod],
2654 install_rpath : rootlibexecdir,
2655 install : true,
2656 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002657
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002658 meson.add_install_script('sh', '-c',
2659 mkdir_p.format(modulesloaddir))
2660 meson.add_install_script('sh', '-c',
2661 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002662endif
2663
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002664exe = executable('systemd-nspawn',
2665 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002666 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002667 link_with : [libcore_shared,
2668 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002669 libshared],
Franck Bui82384232019-03-22 11:09:08 +01002670 dependencies : [libblkid,
2671 libseccomp],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002672 install_rpath : rootlibexecdir,
2673 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002674public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002675
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002676if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002677 executable('systemd-networkd',
2678 systemd_networkd_sources,
2679 include_directories : includes,
2680 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002681 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002682 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002683 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002684 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002685 install_rpath : rootlibexecdir,
2686 install : true,
2687 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002688
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002689 executable('systemd-networkd-wait-online',
2690 systemd_networkd_wait_online_sources,
2691 include_directories : includes,
2692 link_with : [libnetworkd_core,
2693 libshared],
2694 install_rpath : rootlibexecdir,
2695 install : true,
2696 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002697
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002698 exe = executable('networkctl',
2699 networkctl_sources,
2700 include_directories : includes,
2701 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002702 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002703 install_rpath : rootlibexecdir,
2704 install : true,
2705 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002706 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002707endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002708
2709executable('systemd-sulogin-shell',
2710 ['src/sulogin-shell/sulogin-shell.c'],
2711 include_directories : includes,
2712 link_with : [libshared],
2713 install_rpath : rootlibexecdir,
2714 install : true,
2715 install_dir : rootlibexecdir)
2716
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002717############################################################
2718
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002719custom_target(
2720 'systemd-runtest.env',
2721 output : 'systemd-runtest.env',
2722 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05002723 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002724 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002725 '} >@OUTPUT@'],
2726 build_by_default : true)
2727
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002728foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002729 sources = tuple[0]
2730 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2731 dependencies = tuple[2]
2732 condition = tuple.length() >= 4 ? tuple[3] : ''
2733 type = tuple.length() >= 5 ? tuple[4] : ''
2734 defs = tuple.length() >= 6 ? tuple[5] : []
2735 incs = tuple.length() >= 7 ? tuple[6] : includes
2736 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002737
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002738 name = sources[0].split('/')[-1].split('.')[0]
2739 if type.startswith('timeout=')
2740 timeout = type.split('=')[1].to_int()
2741 type = ''
2742 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002743
2744 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002745 exe = executable(
2746 name,
2747 sources,
2748 include_directories : incs,
2749 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002750 dependencies : [versiondep,
2751 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002752 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002753 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002754 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002755 install : install_tests,
2756 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002757
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002758 if type == 'manual'
2759 message('@0@ is a manual test'.format(name))
2760 elif type == 'unsafe' and want_tests != 'unsafe'
2761 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002762 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002763 test(name, exe,
2764 env : test_env,
2765 timeout : timeout)
2766 endif
2767 else
2768 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2769 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002770endforeach
2771
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002772exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002773 'test-libsystemd-sym',
2774 test_libsystemd_sym_c,
2775 include_directories : includes,
2776 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002777 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002778 install : install_tests,
2779 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002780if want_tests != 'false'
2781 test('test-libsystemd-sym', exe)
2782endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002783
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002784exe = executable(
2785 'test-libsystemd-static-sym',
2786 test_libsystemd_sym_c,
2787 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002788 link_with : [install_libsystemd_static],
2789 dependencies : [threads], # threads is already included in dependencies on the library,
2790 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002791 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002792 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002793 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002794if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002795 test('test-libsystemd-static-sym', exe)
2796endif
2797
2798exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002799 'test-libudev-sym',
2800 test_libudev_sym_c,
2801 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002802 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002803 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002804 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002805 install : install_tests,
2806 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002807if want_tests != 'false'
2808 test('test-libudev-sym', exe)
2809endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002810
2811exe = executable(
2812 'test-libudev-static-sym',
2813 test_libudev_sym_c,
2814 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002815 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002816 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002817 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002818 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002819 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002820if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002821 test('test-libudev-static-sym', exe)
2822endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002823
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002824############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002825
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002826fuzzer_exes = []
2827
Michael Olbrich59967402018-11-11 11:27:35 +01002828if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002829foreach tuple : fuzzers
2830 sources = tuple[0]
2831 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2832 dependencies = tuple[2]
2833 defs = tuple.length() >= 4 ? tuple[3] : []
2834 incs = tuple.length() >= 5 ? tuple[4] : includes
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002835 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002836
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002837 if want_ossfuzz or want_fuzzbuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002838 dependencies += fuzzing_engine
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002839 elif want_libfuzzer
2840 if fuzzing_engine.found()
2841 dependencies += fuzzing_engine
2842 else
2843 link_args += ['-fsanitize=fuzzer']
2844 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002845 else
2846 sources += 'src/fuzz/fuzz-main.c'
2847 endif
2848
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00002849 if want_fuzzbuzz
2850 sources += 'src/fuzz/fuzzer-entry-point.c'
2851 endif
2852
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002853 name = sources[0].split('/')[-1].split('.')[0]
2854
2855 fuzzer_exes += executable(
2856 name,
2857 sources,
2858 include_directories : [incs, include_directories('src/fuzz')],
2859 link_with : link_with,
2860 dependencies : dependencies,
2861 c_args : defs,
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002862 link_args: link_args,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002863 install : false)
2864endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002865endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002866
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01002867run_target('fuzzers',
2868 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002869 command : ['true'])
2870
2871############################################################
2872
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002873make_directive_index_py = find_program('tools/make-directive-index.py')
2874make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002875xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002876hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002877
2878subdir('units')
2879subdir('sysctl.d')
2880subdir('sysusers.d')
2881subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002882subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002883subdir('hwdb')
2884subdir('network')
2885subdir('man')
2886subdir('shell-completion/bash')
2887subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002888subdir('docs/sysvinit')
2889subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002890
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002891install_subdir('factory/etc',
2892 install_dir : factorydir)
2893
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002894install_data('xorg/50-systemd-user.sh',
2895 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002896install_data('modprobe.d/systemd.conf',
2897 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002898install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002899 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002900 'NEWS',
2901 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302902 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002903 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002904 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302905 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002906 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002907 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002908 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002909 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2910 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002911
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002912meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2913meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2914
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002915############################################################
2916
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002917meson_check_help = find_program('tools/meson-check-help.sh')
2918
2919foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002920 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002921 if want_tests != 'false'
2922 test('check-help-' + name,
2923 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002924 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002925 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002926endforeach
2927
2928############################################################
2929
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02002930check_directives_sh = find_program('tools/check-directives.sh')
2931
2932if want_tests != 'false'
2933 test('check-directives',
2934 check_directives_sh,
2935 args : project_source_root)
2936endif
2937
2938############################################################
2939
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002940# Enable tests for all supported sanitizers
2941foreach tuple : sanitizers
2942 sanitizer = tuple[0]
2943 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002944
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002945 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002946 prev = ''
2947 foreach p : fuzz_regression_tests
2948 b = p.split('/')[-2]
2949 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002950
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002951 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002952
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002953 if name != prev
2954 if want_tests == 'false'
2955 message('Not compiling @0@ because tests is set to false'.format(name))
2956 elif slow_tests
2957 exe = custom_target(
2958 name,
2959 output : name,
2960 depends : build,
2961 command : [env, 'ln', '-fs',
2962 join_paths(build.full_path(), b),
2963 '@OUTPUT@'],
2964 build_by_default : true)
2965 else
2966 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2967 endif
2968 endif
2969 prev = name
2970
2971 if want_tests != 'false' and slow_tests
2972 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2973 env,
2974 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05002975 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002976 endif
2977 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002978 endif
2979endforeach
2980
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002981
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002982############################################################
2983
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002984if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002985 all_files = run_command(
2986 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05002987 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002988 'ls-files',
2989 ':/*.[ch]'])
2990 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002991
userwithuide85a6902017-08-09 13:41:44 +00002992 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002993 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002994 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05002995 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00002996 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002997 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05002998 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002999endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003000
3001if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003002 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003003 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003004 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003005 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003006endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003007
3008if git.found()
3009 git_head = run_command(
3010 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003011 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003012 'rev-parse', 'HEAD']).stdout().strip()
3013 git_head_short = run_command(
3014 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003015 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003016 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3017
3018 run_target(
3019 'git-snapshot',
3020 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003021 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003022 git_head_short),
3023 '--prefix', 'systemd-@0@/'.format(git_head),
3024 'HEAD'])
3025endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003026
3027############################################################
3028
Lennart Poettering51b13862017-12-20 12:51:14 +01003029meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3030run_target(
3031 'check-api-docs',
3032 depends : [man, libsystemd, libudev],
3033 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3034
3035############################################################
3036
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003037status = [
3038 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3039
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003040 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003041 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003042 'prefix directory: @0@'.format(prefixdir),
3043 'rootprefix directory: @0@'.format(rootprefixdir),
3044 'sysconf directory: @0@'.format(sysconfdir),
3045 'include directory: @0@'.format(includedir),
3046 'lib directory: @0@'.format(libdir),
3047 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003048 'SysV init scripts: @0@'.format(sysvinit_path),
3049 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003050 'PAM modules directory: @0@'.format(pamlibdir),
3051 'PAM configuration directory: @0@'.format(pamconfdir),
3052 'RPM macros directory: @0@'.format(rpmmacrosdir),
3053 'modprobe.d directory: @0@'.format(modprobedir),
3054 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3055 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3056 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3057 'bash completions directory: @0@'.format(bashcompletiondir),
3058 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003059 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003060 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3061 get_option('debug-tty')),
3062 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003063 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003064 'maximum system UID: @0@'.format(system_uid_max),
3065 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003066 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3067 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3068 'minimum container UID base: @0@'.format(container_uid_base_min),
3069 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003070 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003071 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003072 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003073 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003074 'nobody user name: @0@'.format(nobody_user),
3075 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003076 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003077 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003078
3079 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003080 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003081 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003082 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003083 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
3084 'default locale: @0@'.format(default_locale)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003085
3086alt_dns_servers = '\n '.join(dns_servers.split(' '))
3087alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3088status += [
3089 'default DNS servers: @0@'.format(alt_dns_servers),
3090 'default NTP servers: @0@'.format(alt_ntp_servers)]
3091
3092alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3093 '@@0@'.format(time_epoch)).stdout().strip()
3094status += [
3095 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3096
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003097status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003098 'static libsystemd: @0@'.format(static_libsystemd),
3099 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003100
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003101# TODO:
3102# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3103# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3104# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3105
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003106if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003107 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003108
3109 if have_gnu_efi
3110 status += [
3111 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003112 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003113 'EFI lib directory: @0@'.format(efi_libdir),
3114 'EFI lds directory: @0@'.format(efi_ldsdir),
3115 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003116 endif
3117endif
3118
3119found = []
3120missing = []
3121
3122foreach tuple : [
3123 ['libcryptsetup'],
3124 ['PAM'],
3125 ['AUDIT'],
3126 ['IMA'],
3127 ['AppArmor'],
3128 ['SELinux'],
3129 ['SECCOMP'],
3130 ['SMACK'],
3131 ['zlib'],
3132 ['xz'],
3133 ['lz4'],
3134 ['bzip2'],
3135 ['ACL'],
3136 ['gcrypt'],
3137 ['qrencode'],
3138 ['microhttpd'],
3139 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003140 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003141 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003142 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003143 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003144 ['libidn'],
3145 ['libiptc'],
3146 ['elfutils'],
3147 ['binfmt'],
3148 ['vconsole'],
3149 ['quotacheck'],
3150 ['tmpfiles'],
3151 ['environment.d'],
3152 ['sysusers'],
3153 ['firstboot'],
3154 ['randomseed'],
3155 ['backlight'],
3156 ['rfkill'],
3157 ['logind'],
3158 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003159 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003160 ['importd'],
3161 ['hostnamed'],
3162 ['timedated'],
3163 ['timesyncd'],
3164 ['localed'],
3165 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003166 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003167 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3168 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003169 ['coredump'],
3170 ['polkit'],
3171 ['legacy pkla', install_polkit_pkla],
3172 ['efi'],
3173 ['gnu-efi', have_gnu_efi],
3174 ['kmod'],
3175 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003176 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003177 ['blkid'],
3178 ['dbus'],
3179 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003180 ['nss-myhostname'],
3181 ['nss-mymachines'],
3182 ['nss-resolve'],
3183 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003184 ['hwdb'],
3185 ['tpm'],
3186 ['man pages', want_man],
3187 ['html pages', want_html],
3188 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003189 ['SysV compat'],
3190 ['utmp'],
3191 ['ldconfig'],
3192 ['hibernate'],
3193 ['adm group', get_option('adm-group')],
3194 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003195 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003196 ['debug hashmap'],
3197 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003198 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003199 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003200 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003201 ['link-udev-shared', get_option('link-udev-shared')],
3202 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003203]
3204
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003205 if tuple.length() >= 2
3206 cond = tuple[1]
3207 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003208 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3209 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003210 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003211 endif
3212 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003213 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003214 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003215 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003216 endif
3217endforeach
3218
3219status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003220 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003221 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003222 '',
3223 'disabled features: @0@'.format(', '.join(missing)),
3224 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003225message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003226
3227if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003228 warning('\n' +
3229 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3230 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3231 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003232endif