blob: 3003eb3dc4165c458822edb8ef7b5928fda8330e [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01002
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003project('systemd', 'c',
Lennart Poetteringde7436b2018-06-22 13:03:47 +02004 version : '239',
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 Poetteringde7436b2018-06-22 13:03:47 +020015libsystemd_version = '0.23.0'
16libudev_version = '1.6.11'
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()
23conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
24conf.set_quoted('PACKAGE_VERSION', meson.project_version())
25
26substs = configuration_data()
27substs.set('PACKAGE_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
28substs.set('PACKAGE_VERSION', meson.project_version())
29
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040030#####################################################################
31
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040032# Try to install the git pre-commit hook
33git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
34if git_hook.returncode() == 0
35 message(git_hook.stdout().strip())
36endif
37
38#####################################################################
39
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010040if get_option('split-usr') == 'auto'
41 split_usr = run_command('test', '-L', '/bin').returncode() != 0
42else
43 split_usr = get_option('split-usr') == 'true'
44endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010045conf.set10('HAVE_SPLIT_USR', split_usr,
46 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010047
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010048if get_option('split-bin') == 'auto'
49 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
50else
51 split_bin = get_option('split-bin') == 'true'
52endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010053conf.set10('HAVE_SPLIT_BIN', split_bin,
54 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010055
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010056rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010057# Unusual rootprefixdir values are used by some distros
58# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010059rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010060if rootprefixdir == ''
61 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010062endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040063
64sysvinit_path = get_option('sysvinit-path')
65sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090066conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020067 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040068
69# join_paths ignore the preceding arguments if an absolute component is
70# encountered, so this should canonicalize various paths when they are
71# absolute or relative.
72prefixdir = get_option('prefix')
73if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040074 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040075endif
76bindir = join_paths(prefixdir, get_option('bindir'))
77libdir = join_paths(prefixdir, get_option('libdir'))
78sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
79includedir = join_paths(prefixdir, get_option('includedir'))
80datadir = join_paths(prefixdir, get_option('datadir'))
81localstatedir = join_paths('/', get_option('localstatedir'))
82
83rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010084rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040085rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
86
87rootlibdir = get_option('rootlibdir')
88if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040089 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040090endif
91
92# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +020093pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
94pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -040095polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
96polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
97polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
98varlogdir = join_paths(localstatedir, 'log')
99xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900100rpmmacrosdir = get_option('rpmmacrosdir')
101if rpmmacrosdir != 'no'
102 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
103endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200104modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400105
106# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400107pkgdatadir = join_paths(datadir, 'systemd')
108environmentdir = join_paths(prefixdir, 'lib/environment.d')
109pkgsysconfdir = join_paths(sysconfdir, 'systemd')
110userunitdir = join_paths(prefixdir, 'lib/systemd/user')
111userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
112tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
113sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
114sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
115binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
116modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
117networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
118pkgincludedir = join_paths(includedir, 'systemd')
119systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
120usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
121systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
122userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
123systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
124systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
125systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
126systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
127udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
128udevhomedir = udevlibexecdir
129udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
130udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
131catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
132kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
133factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400134bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
135testsdir = join_paths(prefixdir, 'lib/systemd/tests')
136systemdstatedir = join_paths(localstatedir, 'lib/systemd')
137catalogstatedir = join_paths(systemdstatedir, 'catalog')
138randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200139profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400140
tblume75aaade2018-02-01 22:46:15 +0100141docdir = get_option('docdir')
142if docdir == ''
143 docdir = join_paths(datadir, 'doc/systemd')
144endif
145
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400146dbuspolicydir = get_option('dbuspolicydir')
147if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400148 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400149endif
150
151dbussessionservicedir = get_option('dbussessionservicedir')
152if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400153 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400154endif
155
156dbussystemservicedir = get_option('dbussystemservicedir')
157if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400158 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400159endif
160
161pamlibdir = get_option('pamlibdir')
162if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400163 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400164endif
165
166pamconfdir = get_option('pamconfdir')
167if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400168 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400169endif
170
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100171memory_accounting_default = get_option('memory-accounting-default')
172
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400173conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400174conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400175conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
176conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
177conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400178conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
179conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100180
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100181conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100182
Michael Bieble17e5ba2017-04-13 10:30:56 -0400183conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400184conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
185conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400186conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
187conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
188conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
189conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100190conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100191conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400192conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
193conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
194conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
195conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
196conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100197conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400198conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400199conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
200conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400201conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
202conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
203conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
204conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
205conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
206conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400207conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
208conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400209conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400210conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400211conf.set_quoted('LIBDIR', libdir)
212conf.set_quoted('ROOTLIBDIR', rootlibdir)
213conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
214conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400215conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
216conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
217conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
218conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
219conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
220conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100221conf.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'true' : 'false')
Michal Koutný7f672e82018-03-09 18:27:13 +0100222conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400223
224conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
225conf.set_quoted('ABS_SRC_DIR', meson.source_root())
226
227substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400228substs.set('exec_prefix', prefixdir)
229substs.set('libdir', libdir)
230substs.set('rootlibdir', rootlibdir)
231substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400232substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400233substs.set('bindir', bindir)
234substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400235substs.set('rootlibexecdir', rootlibexecdir)
236substs.set('systemunitdir', systemunitdir)
237substs.set('userunitdir', userunitdir)
238substs.set('systempresetdir', systempresetdir)
239substs.set('userpresetdir', userpresetdir)
240substs.set('udevhwdbdir', udevhwdbdir)
241substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400242substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200243substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400244substs.set('catalogdir', catalogdir)
245substs.set('tmpfilesdir', tmpfilesdir)
246substs.set('sysusersdir', sysusersdir)
247substs.set('sysctldir', sysctldir)
248substs.set('binfmtdir', binfmtdir)
249substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200250substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400251substs.set('systemgeneratordir', systemgeneratordir)
252substs.set('usergeneratordir', usergeneratordir)
253substs.set('systemenvgeneratordir', systemenvgeneratordir)
254substs.set('userenvgeneratordir', userenvgeneratordir)
255substs.set('systemshutdowndir', systemshutdowndir)
256substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400257substs.set('VARLOGDIR', varlogdir)
258substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400259substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
260substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400261substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
262substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
263substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
264substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100265substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400266
267#####################################################################
268
269cc = meson.get_compiler('c')
270pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400271check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100272meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400273
Adam Duskett08318a22018-01-15 06:25:46 -0500274if get_option('tests') != 'false'
275 cxx = find_program('c++', required : false)
276 if cxx.found()
277 # Used only for tests
278 add_languages('cpp')
279 endif
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400280endif
281
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500282want_ossfuzz = get_option('oss-fuzz')
283want_libfuzzer = get_option('llvm-fuzz')
284fuzzer_build = want_ossfuzz or want_libfuzzer
285if want_ossfuzz and want_libfuzzer
286 error('only one of oss-fuzz and llvm-fuzz can be specified')
287endif
288if want_libfuzzer
289 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
290endif
291if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500292 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
293endif
294
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900295possible_cc_flags = [
296 '-Wextra',
297 '-Werror=undef',
298 '-Wlogical-op',
299 '-Wmissing-include-dirs',
300 '-Wold-style-definition',
301 '-Wpointer-arith',
302 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900303 '-Wfloat-equal',
304 '-Wsuggest-attribute=noreturn',
305 '-Werror=missing-prototypes',
306 '-Werror=implicit-function-declaration',
307 '-Werror=missing-declarations',
308 '-Werror=return-type',
309 '-Werror=incompatible-pointer-types',
310 '-Werror=format=2',
311 '-Wstrict-prototypes',
312 '-Wredundant-decls',
313 '-Wmissing-noreturn',
314 '-Wimplicit-fallthrough=5',
315 '-Wshadow',
316 '-Wendif-labels',
317 '-Wstrict-aliasing=2',
318 '-Wwrite-strings',
319 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200320 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200321 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900322 '-Wdate-time',
323 '-Wnested-externs',
324 '-ffast-math',
325 '-fno-common',
326 '-fdiagnostics-show-option',
327 '-fno-strict-aliasing',
328 '-fvisibility=hidden',
329 '-fstack-protector',
330 '-fstack-protector-strong',
331 '--param=ssp-buffer-size=4',
332]
333
334# --as-needed and --no-undefined are provided by meson by default,
335# run mesonconf to see what is enabled
336possible_link_flags = [
337 '-Wl,-z,relro',
338 '-Wl,-z,now',
339]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400340
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500341# the oss-fuzz fuzzers are not built with -fPIE, so don't
342# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500343if not fuzzer_build
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900344 possible_cc_flags += '-fPIE'
345 possible_link_flags += '-pie'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500346endif
347
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900348if cc.get_id() == 'clang'
349 possible_cc_flags += [
350 '-Wno-typedef-redefinition',
351 '-Wno-gnu-variable-sized-type-not-at-end',
352 ]
353endif
354
355if get_option('buildtype') != 'debug'
356 possible_cc_flags += [
357 '-ffunction-sections',
358 '-fdata-sections',
359 ]
360
361 possible_link_flags += '-Wl,--gc-sections'
362endif
363
364add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900365add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900366
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400367# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
Zbigniew Jędrzejewski-Szmekd40f5cc2018-06-07 15:08:02 +0200368# arguments, just emits a warning. So test for the "positive" version instead.
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400369foreach arg : ['unused-parameter',
370 'missing-field-initializers',
371 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300372 'format-signedness',
373 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
Filipe Brandenburger87941642018-09-06 12:34:24 -0700374
375 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
376 # optimizations enabled, producing essentially false positives.
377 'maybe-uninitialized',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300378 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400379 if cc.has_argument('-W' + arg)
380 add_project_arguments('-Wno-' + arg, language : 'c')
381 endif
382endforeach
383
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800384if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400385 #include <time.h>
386 #include <inttypes.h>
387 typedef uint64_t usec_t;
388 usec_t now(clockid_t clock);
389 int main(void) {
390 struct timespec now;
391 return 0;
392 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800393''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400394 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400395endif
396
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400397cpp = ' '.join(cc.cmd_array()) + ' -E'
398
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400399#####################################################################
400# compilation result tests
401
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400402conf.set('_GNU_SOURCE', true)
403conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400404
405conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
406conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
407conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
408conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
409conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
410conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
411conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
412
413decl_headers = '''
414#include <uchar.h>
415#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000416#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100417#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400418'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400419
420foreach decl : ['char16_t',
421 'char32_t',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400422 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000423 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100424 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400425 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400426
427 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200428 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
429
430 if decl == 'struct statx'
431 if have
432 want_linux_stat_h = false
433 else
434 have = cc.sizeof(decl,
435 prefix : decl_headers + '#include <linux/stat.h>',
436 args : '-D_GNU_SOURCE') > 0
437 want_linux_stat_h = have
438 endif
439 endif
440
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200441 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400442endforeach
443
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200444conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700445
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400446foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
447 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
448 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
449 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530450 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400451 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
452 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
453 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
454 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
455 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530456 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400457 # if_tunnel.h is buggy and cannot be included on its own
458 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
459 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
460 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
461 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
462 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
463 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
464 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530465 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400466 ['NDA_IFINDEX', 'linux/neighbour.h'],
467 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000468 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400469 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530470 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Susant Sahani53cb5012018-06-03 12:37:41 +0530471 ['FOU_ATTR_REMCSUM_NOPARTIAL', 'linux/fou.h'],
472 ['FOU_CMD_GET', 'linux/fou.h'],
473 ['FOU_ENCAP_GUE', 'linux/fou.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400474 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400475 prefix = decl.length() > 2 ? decl[2] : ''
476 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200477 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400478endforeach
479
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400480foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200481 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400482endforeach
483
484foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100485 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100486 ['gettid', '''#include <sys/types.h>
487 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100488 ['pivot_root', '''#include <stdlib.h>
489 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100490 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400491 #include <sys/stat.h>
492 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100493 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100494 ['renameat2', '''#include <stdio.h>
495 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400496 ['kcmp', '''#include <linux/kcmp.h>'''],
497 ['keyctl', '''#include <sys/types.h>
498 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100499 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400500 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200501 ['bpf', '''#include <sys/syscall.h>
502 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100503 ['statx', '''#include <sys/types.h>
504 #include <sys/stat.h>
505 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100506 ['explicit_bzero' , '''#include <string.h>'''],
507 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400508]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400509
Lennart Poettering85db59b2017-12-25 12:01:14 +0100510 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200511 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400512endforeach
513
Lennart Poettering85db59b2017-12-25 12:01:14 +0100514if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200515 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200516 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400517else
518 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200519 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200520 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400521endif
522
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400523#####################################################################
524
525sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400526awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400527m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400528stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400529git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100530env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100531perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400532
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400533meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400534mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400535test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
536splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400537
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400538# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
539# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500540progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400541 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400542 ['kmod', '/usr/bin/kmod' ],
543 ['kexec', '/usr/sbin/kexec' ],
544 ['sulogin', '/usr/sbin/sulogin' ],
545 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
546 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
547 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
548 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
549 ]
550foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400551 path = get_option(prog[0] + '-path')
552 if path != ''
553 message('Using @1@ for @0@'.format(prog[0], path))
554 else
555 exe = find_program(prog[0],
556 '/usr/sbin/' + prog[0],
557 '/sbin/' + prog[0],
558 required: false)
559 path = exe.found() ? exe.path() : prog[1]
560 endif
561 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
562 conf.set_quoted(name, path)
563 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400564endforeach
565
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500566conf.set_quoted('TELINIT', get_option('telinit-path'))
567
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400568if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100569 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400570endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400571
572############################################################
573
574gperf = find_program('gperf')
575
576gperf_test_format = '''
577#include <string.h>
578const char * in_word_set(const char *, @0@);
579@1@
580'''
581gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
582gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
583gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
584if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400585 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400586else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400587 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
588 if cc.compiles(gperf_test)
589 gperf_len_type = 'unsigned'
590 else
591 error('unable to determine gperf len type')
592 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400593endif
594message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400595conf.set('GPERF_LEN_TYPE', gperf_len_type,
596 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400597
598############################################################
599
600if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400601 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400602endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100603foreach header : ['crypt.h',
604 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400605 'linux/memfd.h',
606 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200607 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400608 'valgrind/memcheck.h',
609 'valgrind/valgrind.h',
610 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400611
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200612 conf.set10('HAVE_' + header.underscorify().to_upper(),
613 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400614endforeach
615
616############################################################
617
618conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400619conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
620gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400621
622default_hierarchy = get_option('default-hierarchy')
623conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
624 description : 'default cgroup hierarchy as string')
625if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400626 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400627elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400628 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400629else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400630 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400631endif
632
633time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900634if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400635 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900636 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400637endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400638conf.set('TIME_EPOCH', time_epoch)
639
640system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900641if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400642 system_uid_max = run_command(
643 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800644 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
645 '/etc/login.defs').stdout().strip()
646 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900647 system_uid_max = 999
648 else
649 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800650 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400651endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400652conf.set('SYSTEM_UID_MAX', system_uid_max)
653substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400654
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400655system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900656if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400657 system_gid_max = run_command(
658 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800659 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
660 '/etc/login.defs').stdout().strip()
661 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900662 system_gid_max = 999
663 else
664 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800665 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400666endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400667conf.set('SYSTEM_GID_MAX', system_gid_max)
668substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400669
Yu Watanabeac093402018-05-10 16:04:16 +0900670dynamic_uid_min = get_option('dynamic-uid-min')
671dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100672conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
673conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
674substs.set('dynamicuidmin', dynamic_uid_min)
675substs.set('dynamicuidmax', dynamic_uid_max)
676
Yu Watanabeac093402018-05-10 16:04:16 +0900677container_uid_base_min = get_option('container-uid-base-min')
678container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100679conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
680conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
681substs.set('containeruidbasemin', container_uid_base_min)
682substs.set('containeruidbasemax', container_uid_base_max)
683
Lennart Poetteringafde4572017-12-05 11:00:24 +0100684nobody_user = get_option('nobody-user')
685nobody_group = get_option('nobody-group')
686
Chen Qi2484bff2018-07-23 14:53:09 +0800687if not meson.is_cross_build()
688 getent_result = run_command('getent', 'passwd', '65534')
689 if getent_result.returncode() == 0
690 name = getent_result.stdout().split(':')[0]
691 if name != nobody_user
692 warning('\n' +
693 'The local user with the UID 65534 does not match the configured user name "@0@" of the nobody user (its name is @1@).\n'.format(nobody_user, name) +
694 'Your build will result in an user table setup that is incompatible with the local system.')
695 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100696 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800697 id_result = run_command('id', '-u', nobody_user)
698 if id_result.returncode() == 0
699 id = id_result.stdout().to_int()
700 if id != 65534
701 warning('\n' +
702 'The local user with the configured user name "@0@" of the nobody user does not have UID 65534 (it has @1@).\n'.format(nobody_user, id) +
703 'Your build will result in an user table setup that is incompatible with the local system.')
704 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100705 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100706
Chen Qi2484bff2018-07-23 14:53:09 +0800707 getent_result = run_command('getent', 'group', '65534')
708 if getent_result.returncode() == 0
709 name = getent_result.stdout().split(':')[0]
710 if name != nobody_group
711 warning('\n' +
712 'The local group with the GID 65534 does not match the configured group name "@0@" of the nobody group (its name is @1@).\n'.format(nobody_group, name) +
713 'Your build will result in an group table setup that is incompatible with the local system.')
714 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100715 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800716 id_result = run_command('id', '-g', nobody_group)
717 if id_result.returncode() == 0
718 id = id_result.stdout().to_int()
719 if id != 65534
720 warning('\n' +
721 'The local group with the configured group name "@0@" of the nobody group does not have UID 65534 (it has @1@).\n'.format(nobody_group, id) +
722 'Your build will result in an group table setup that is incompatible with the local system.')
723 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100724 endif
725endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900726if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900727 warning('\n' +
728 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
729 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900730endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100731
732conf.set_quoted('NOBODY_USER_NAME', nobody_user)
733conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900734substs.set('NOBODY_USER_NAME', nobody_user)
735substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100736
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400737tty_gid = get_option('tty-gid')
738conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400739substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400740
Ikey Doherty84786b82017-12-03 12:28:23 +0000741# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900742users_gid = get_option('users-gid')
743substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000744
Yu Watanabe348b4432018-05-07 18:17:35 +0900745conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
746conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400747
Michael Bieblace5e312018-07-13 23:36:13 +0200748dev_kvm_mode = get_option('dev-kvm-mode')
749substs.set('DEV_KVM_MODE', dev_kvm_mode)
750conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Tom Stellard4e15a732017-10-31 08:46:24 -0700751substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400752
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400753kill_user_processes = get_option('default-kill-user-processes')
754conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100755conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400756substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400757
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400758dns_servers = get_option('dns-servers')
759conf.set_quoted('DNS_SERVERS', dns_servers)
760substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400761
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400762ntp_servers = get_option('ntp-servers')
763conf.set_quoted('NTP_SERVERS', ntp_servers)
764substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400765
766conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
767
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400768substs.set('SUSHELL', get_option('debug-shell'))
769substs.set('DEBUGTTY', get_option('debug-tty'))
770
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200771enable_debug_hashmap = false
772enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200773foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900774 if name == 'hashmap'
775 enable_debug_hashmap = true
776 elif name == 'mmap-cache'
777 enable_debug_mmap_cache = true
778 else
779 message('unknown debug option "@0@", ignoring'.format(name))
780 endif
781endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200782conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
783conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400784
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200785conf.set10('VALGRIND', get_option('valgrind'))
786
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400787#####################################################################
788
789threads = dependency('threads')
790librt = cc.find_library('rt')
791libm = cc.find_library('m')
792libdl = cc.find_library('dl')
793libcrypt = cc.find_library('crypt')
794
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400795libcap = dependency('libcap', required : false)
796if not libcap.found()
797 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
798 libcap = cc.find_library('cap')
799endif
800
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400801libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100802 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400803
804want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500805if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400806 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400807 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400808 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200809 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400810else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200811 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400812 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400813endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200814conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400815
816want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500817if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400818 libselinux = dependency('libselinux',
819 version : '>= 2.1.9',
820 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200821 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400822else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200823 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400824 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400825endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200826conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400827
828want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500829if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400830 libapparmor = dependency('libapparmor',
831 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200832 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400833else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200834 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400835 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400836endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200837conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400838
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400839smack_run_label = get_option('smack-run-label')
840if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400841 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400842endif
843
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400844want_polkit = get_option('polkit')
845install_polkit = false
846install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500847if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400848 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400849
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400850 libpolkit = dependency('polkit-gobject-1',
851 required : false)
852 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
853 message('Old polkit detected, will install pkla files')
854 install_polkit_pkla = true
855 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400856endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200857conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400858
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400859want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500860if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400861 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200862 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400863else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200864 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400865 libacl = []
866endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200867conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400868
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400869want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500870if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400871 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200872 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400873else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200874 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400875 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400876endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200877conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400878
879want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500880if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400881 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200882 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400883else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200884 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400885 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400886endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200887conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400888
889want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500890if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400891 libkmod = dependency('libkmod',
892 version : '>= 15',
893 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200894 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400895else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200896 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400897 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400898endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400900
901want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500902if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400903 libpam = cc.find_library('pam', required : want_pam == 'true')
904 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200905 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400906else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200907 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400908 libpam = []
909 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400910endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200911conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400912
913want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500914if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400915 libmicrohttpd = dependency('libmicrohttpd',
916 version : '>= 0.9.33',
917 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200918 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400919else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200920 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400921 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400922endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200923conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400924
925want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500926if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400927 libcryptsetup = dependency('libcryptsetup',
928 version : '>= 1.6.0',
929 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200930 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100931 have_sector = cc.has_member(
932 'struct crypt_params_plain',
933 'sector_size',
934 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400935else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200936 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100937 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400938 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400939endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200940conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100941conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400942
943want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500944if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400945 libcurl = dependency('libcurl',
946 version : '>= 7.32.0',
947 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200948 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400949else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200950 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400951 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400952endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200953conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400954
955want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400956want_libidn2 = get_option('libidn2')
957if want_libidn == 'true' and want_libidn2 == 'true'
958 error('libidn and libidn2 cannot be requested simultaneously')
959endif
960
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500961if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400962 libidn = dependency('libidn',
963 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200964 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400965else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200966 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400967 libidn = []
968endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200969conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500970if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400971 # libidn is used for both libidn and libidn2 objects
972 libidn = dependency('libidn2',
973 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200974 have = libidn.found()
975else
976 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400977endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200978conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400979
980want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500981if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400982 libiptc = dependency('libiptc',
983 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200984 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400985else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200986 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400987 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400988endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200989conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400990
991want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500992if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400993 libqrencode = dependency('libqrencode',
994 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200995 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400996else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200997 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400998 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400999endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001000conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001001
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001002want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001003if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001004 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1005 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001006 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001007else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001008 have = false
1009endif
1010if not have
1011 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001012 libgcrypt = []
1013 libgpg_error = []
1014endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001015conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001016
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001017want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001018if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001019 libgnutls = dependency('gnutls',
1020 version : '>= 3.1.4',
1021 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001022 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001023else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001024 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001025 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001026endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001027conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001028
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001029want_openssl = get_option('openssl')
1030if want_openssl != 'false' and not fuzzer_build
1031 libopenssl = dependency('openssl',
1032 version : '>= 1.1.0',
1033 required : want_openssl == 'true')
1034 have = libopenssl.found()
1035else
1036 have = false
1037 libopenssl = []
1038endif
1039conf.set10('HAVE_OPENSSL', have)
1040
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001041want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001042if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001043 libdw = dependency('libdw',
1044 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001045 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001046else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001047 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001048 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001049endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001050conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001051
1052want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001053if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001054 libz = dependency('zlib',
1055 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001056 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001057else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001058 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001059 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001060endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001061conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001062
1063want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001064if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001065 libbzip2 = cc.find_library('bz2',
1066 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001067 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001068else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001069 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001070 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001071endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001072conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001073
1074want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001075if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001076 libxz = dependency('liblzma',
1077 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001079else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001081 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001082endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001083conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001084
1085want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001086if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001087 liblz4 = dependency('liblz4',
1088 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001089 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001090else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001091 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001092 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001093endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001094conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001095
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001096want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001097if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001098 libxkbcommon = dependency('xkbcommon',
1099 version : '>= 0.3.0',
1100 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001101 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001102else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001103 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001104 libxkbcommon = []
1105endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001106conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001107
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001108want_pcre2 = get_option('pcre2')
1109if want_pcre2 != 'false'
1110 libpcre2 = dependency('libpcre2-8',
1111 required : want_pcre2 == 'true')
1112 have = libpcre2.found()
1113else
1114 have = false
1115 libpcre2 = []
1116endif
1117conf.set10('HAVE_PCRE2', have)
1118
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001119want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001120if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001121 libglib = dependency('glib-2.0',
1122 version : '>= 2.22.0',
1123 required : want_glib == 'true')
1124 libgobject = dependency('gobject-2.0',
1125 version : '>= 2.22.0',
1126 required : want_glib == 'true')
1127 libgio = dependency('gio-2.0',
1128 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001129 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001130else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001131 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001132 libglib = []
1133 libgobject = []
1134 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001135endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001136conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001137
1138want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001139if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001140 libdbus = dependency('dbus-1',
1141 version : '>= 1.3.2',
1142 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001143 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001144else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001145 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001146 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001147endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001148conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001149
Yu Watanabe42303dc2017-06-18 05:22:32 +09001150default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001151if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001152 default_dnssec = 'no'
1153endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001154if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001155 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1156 default_dnssec = 'no'
1157endif
1158conf.set('DEFAULT_DNSSEC_MODE',
1159 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1160substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1161
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001162dns_over_tls = get_option('dns-over-tls')
1163if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001164 if dns_over_tls == 'openssl'
1165 have_gnutls = false
1166 else
1167 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1168 if dns_over_tls == 'gnutls' and not have_gnutls
1169 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1170 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001171 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001172 if dns_over_tls == 'gnutls' or have_gnutls
1173 have_openssl = false
1174 else
1175 have_openssl = conf.get('HAVE_OPENSSL') == 1
1176 if dns_over_tls != 'auto' and not have_openssl
1177 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1178 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1179 endif
1180 endif
1181 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001182else
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001183 have = have_gnutls = have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001184endif
1185conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001186conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1187conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001188
Iwan Timmerc9299be2018-06-13 20:26:24 +02001189default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001190if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001191 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001192endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001193if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1194 message('default-dns-over-tls cannot be set to opportunistic when DNS-over-TLS support is disabled. Setting default-dns-over-tls to no.')
Iwan Timmerc9299be2018-06-13 20:26:24 +02001195 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001196endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001197conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1198 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1199substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001200
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001201want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001202if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001203 have = (conf.get('HAVE_LIBCURL') == 1 and
1204 conf.get('HAVE_ZLIB') == 1 and
1205 conf.get('HAVE_BZIP2') == 1 and
1206 conf.get('HAVE_XZ') == 1 and
1207 conf.get('HAVE_GCRYPT') == 1)
1208 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001209 error('importd support was requested, but dependencies are not available')
1210 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001211else
1212 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001213endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001214conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001215
1216want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001217if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001218 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1219 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001220 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1221 # it's possible to build one without the other. Complain only if
1222 # support was explictly requested. The auxiliary files like sysusers
1223 # config should be installed when any of the programs are built.
1224 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1225 error('remote support was requested, but dependencies are not available')
1226 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001227 have = have_deps[0] or have_deps[1]
1228else
1229 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001230endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001231conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001232
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001233foreach term : ['utmp',
1234 'hibernate',
1235 'environment-d',
1236 'binfmt',
1237 'coredump',
1238 'resolve',
1239 'logind',
1240 'hostnamed',
1241 'localed',
1242 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001243 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001244 'networkd',
1245 'timedated',
1246 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001247 'firstboot',
1248 'randomseed',
1249 'backlight',
1250 'vconsole',
1251 'quotacheck',
1252 'sysusers',
1253 'tmpfiles',
1254 'hwdb',
1255 'rfkill',
1256 'ldconfig',
1257 'efi',
1258 'tpm',
1259 'ima',
1260 'smack',
1261 'gshadow',
1262 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001263 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001264 'nss-systemd']
1265 have = get_option(term)
1266 name = 'ENABLE_' + term.underscorify().to_upper()
1267 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001268endforeach
1269
Yu Watanabe08540a92018-07-18 09:25:57 +09001270foreach tuple : [['nss-mymachines', 'machined'],
1271 ['nss-resolve', 'resolve']]
1272 want = get_option(tuple[0])
1273 if want != 'false'
1274 have = get_option(tuple[1])
1275 if want == 'true' and not have
1276 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1277 endif
1278 else
1279 have = false
1280 endif
1281 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1282 conf.set10(name, have)
1283endforeach
1284
1285enable_nss = false
1286foreach term : ['ENABLE_NSS_MYHOSTNAME',
1287 'ENABLE_NSS_MYMACHINES',
1288 'ENABLE_NSS_RESOLVE',
1289 'ENABLE_NSS_SYSTEMD']
1290 if conf.get(term) == 1
1291 enable_nss = true
1292 endif
1293endforeach
1294conf.set10('ENABLE_NSS', enable_nss)
1295
Yu Watanabe348b4432018-05-07 18:17:35 +09001296conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001297
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001298want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001299install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001300slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001301tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001302fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001303
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001304conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001305
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001306#####################################################################
1307
1308if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001309 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001310
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001311 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001312 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001313 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001314 elif efi_arch == 'x86_64'
1315 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001316 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001317 elif efi_arch == 'arm'
1318 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001319 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001320 elif efi_arch == 'aarch64'
1321 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001322 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001323 else
1324 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001325 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001326 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001327
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001328 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001329 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001330
Yu Watanabeac093402018-05-10 16:04:16 +09001331 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001332else
1333 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001334endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001335conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001336
1337#####################################################################
1338
1339config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001340 output : 'config.h',
1341 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001342
Yu Watanabe348b4432018-05-07 18:17:35 +09001343meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1344
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001345includes = include_directories('src/basic',
1346 'src/shared',
1347 'src/systemd',
1348 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001349 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001350 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001351 'src/resolve',
1352 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001353 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001354 'src/login',
1355 'src/udev',
1356 'src/libudev',
1357 'src/core',
1358 'src/libsystemd/sd-bus',
1359 'src/libsystemd/sd-device',
1360 'src/libsystemd/sd-hwdb',
1361 'src/libsystemd/sd-id128',
1362 'src/libsystemd/sd-netlink',
1363 'src/libsystemd/sd-network',
1364 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001365 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001366
1367add_project_arguments('-include', 'config.h', language : 'c')
1368
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001369subdir('po')
1370subdir('catalog')
1371subdir('src/systemd')
1372subdir('src/basic')
1373subdir('src/libsystemd')
1374subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001375subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001376subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001377
1378libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001379 'journal-core',
1380 libjournal_core_sources,
1381 journald_gperf_c,
1382 include_directories : includes,
1383 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001384
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001385libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001386libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001387 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001388 'src/systemd/sd-id128.h', # pick a header file at random to work around old meson bug
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001389 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001390 include_directories : includes,
1391 link_args : ['-shared',
1392 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001393 link_with : [libbasic,
1394 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001395 link_whole : [libsystemd_static,
1396 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001397 dependencies : [threads,
1398 librt,
1399 libxz,
1400 liblz4],
1401 link_depends : libsystemd_sym,
1402 install : true,
1403 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001404
Davide Cavalca70848ec2018-04-09 02:43:35 -07001405static_libsystemd = get_option('static-libsystemd')
1406static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1407
1408install_libsystemd_static = static_library(
1409 'systemd',
1410 libsystemd_sources,
1411 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001412 basic_sources,
1413 basic_gcrypt_sources,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001414 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001415 build_by_default : static_libsystemd != 'false',
1416 install : static_libsystemd != 'false',
1417 install_dir : rootlibdir,
1418 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1419 dependencies : [threads,
1420 librt,
1421 libxz,
1422 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001423 libcap,
1424 libblkid,
1425 libmount,
1426 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001427 libgcrypt],
1428 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1429
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001430############################################################
1431
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001432# binaries that have --help and are intended for use by humans,
1433# usually, but not always, installed in /bin.
1434public_programs = []
1435
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001436subdir('src/libudev')
1437subdir('src/shared')
1438subdir('src/core')
1439subdir('src/udev')
1440subdir('src/network')
1441
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001442subdir('src/analyze')
1443subdir('src/journal-remote')
1444subdir('src/coredump')
1445subdir('src/hostname')
1446subdir('src/import')
1447subdir('src/kernel-install')
1448subdir('src/locale')
1449subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001450subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001451subdir('src/nspawn')
1452subdir('src/resolve')
1453subdir('src/timedate')
1454subdir('src/timesync')
1455subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001456subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001457
1458subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001459subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001460subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001461subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001462
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001463############################################################
1464
1465# only static linking apart from libdl, to make sure that the
1466# module is linked to all libraries that it uses.
1467test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001468 'test-dlopen',
1469 test_dlopen_c,
1470 include_directories : includes,
1471 link_with : [libbasic],
1472 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001473
Yu Watanabe08540a92018-07-18 09:25:57 +09001474foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001475 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001476 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1477 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001478
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001479 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001480 if condition
1481 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001482
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001483 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1484 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001485
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001486 nss = shared_library(
1487 'nss_' + module,
1488 'src/nss-@0@/nss-@0@.c'.format(module),
1489 version : '2',
1490 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001491 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1492 link_args : ['-Wl,-z,nodelete',
1493 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001494 '-Wl,--version-script=' + version_script_arg,
1495 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001496 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001497 libbasic],
1498 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001499 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001500 link_depends : sym,
1501 install : true,
1502 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001503
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001504 # We cannot use shared_module because it does not support version suffix.
1505 # Unfortunately shared_library insists on creating the symlink…
1506 meson.add_install_script('sh', '-c',
1507 'rm $DESTDIR@0@/libnss_@1@.so'
1508 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001509
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001510 test('dlopen-nss_' + module,
1511 test_dlopen,
1512 args : [nss.full_path()]) # path to dlopen must include a slash
1513 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001514endforeach
1515
1516############################################################
1517
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001518executable('systemd',
1519 systemd_sources,
1520 include_directories : includes,
1521 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001522 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001523 dependencies : [threads,
1524 librt,
1525 libseccomp,
1526 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001527 libmount,
1528 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001529 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001530 install : true,
1531 install_dir : rootlibexecdir)
1532
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001533meson.add_install_script(meson_make_symlink,
1534 join_paths(rootlibexecdir, 'systemd'),
1535 join_paths(rootsbindir, 'init'))
1536
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001537exe = executable('systemd-analyze',
1538 systemd_analyze_sources,
1539 include_directories : includes,
1540 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001541 libshared],
1542 dependencies : [threads,
1543 librt,
1544 libseccomp,
1545 libselinux,
1546 libmount,
1547 libblkid],
1548 install_rpath : rootlibexecdir,
1549 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001550public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001551
1552executable('systemd-journald',
1553 systemd_journald_sources,
1554 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001555 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001556 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001557 dependencies : [threads,
1558 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001559 liblz4,
1560 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001561 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001562 install : true,
1563 install_dir : rootlibexecdir)
1564
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001565exe = executable('systemd-cat',
1566 systemd_cat_sources,
1567 include_directories : includes,
1568 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001569 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001570 dependencies : [threads],
1571 install_rpath : rootlibexecdir,
1572 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001573public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001574
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001575exe = executable('journalctl',
1576 journalctl_sources,
1577 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001578 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001579 dependencies : [threads,
1580 libqrencode,
1581 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001582 liblz4,
1583 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001584 install_rpath : rootlibexecdir,
1585 install : true,
1586 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001587public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001588
1589executable('systemd-getty-generator',
1590 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001591 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001592 link_with : [libshared],
1593 install_rpath : rootlibexecdir,
1594 install : true,
1595 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001596
1597executable('systemd-debug-generator',
1598 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001599 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001600 link_with : [libshared],
1601 install_rpath : rootlibexecdir,
1602 install : true,
1603 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001604
1605executable('systemd-fstab-generator',
1606 'src/fstab-generator/fstab-generator.c',
1607 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001608 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001609 link_with : [libshared],
1610 install_rpath : rootlibexecdir,
1611 install : true,
1612 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001613
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001614if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001615 executable('30-systemd-environment-d-generator',
1616 'src/environment-d-generator/environment-d-generator.c',
1617 include_directories : includes,
1618 link_with : [libshared],
1619 install_rpath : rootlibexecdir,
1620 install : true,
1621 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001622
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001623 meson.add_install_script(meson_make_symlink,
1624 join_paths(sysconfdir, 'environment'),
1625 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001626endif
1627
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001628if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001629 executable('systemd-hibernate-resume-generator',
1630 'src/hibernate-resume/hibernate-resume-generator.c',
1631 include_directories : includes,
1632 link_with : [libshared],
1633 install_rpath : rootlibexecdir,
1634 install : true,
1635 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001636
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001637 executable('systemd-hibernate-resume',
1638 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001639 include_directories : includes,
1640 link_with : [libshared],
1641 install_rpath : rootlibexecdir,
1642 install : true,
1643 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001644endif
1645
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001646if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001647 executable('systemd-gpt-auto-generator',
1648 'src/gpt-auto-generator/gpt-auto-generator.c',
1649 'src/basic/blkid-util.h',
1650 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001651 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001652 dependencies : libblkid,
1653 install_rpath : rootlibexecdir,
1654 install : true,
1655 install_dir : systemgeneratordir)
1656
1657 exe = executable('systemd-dissect',
1658 'src/dissect/dissect.c',
1659 include_directories : includes,
1660 link_with : [libshared],
1661 install_rpath : rootlibexecdir,
1662 install : true,
1663 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001664 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001665endif
1666
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001667if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001668 executable('systemd-resolved',
1669 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001670 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001671 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001672 libbasic_gcrypt,
1673 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001674 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001675 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001676 install : true,
1677 install_dir : rootlibexecdir)
1678
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001679 exe = executable('resolvectl',
1680 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001681 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001682 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001683 libbasic_gcrypt,
1684 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001685 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001686 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001687 libm,
1688 libidn],
1689 install_rpath : rootlibexecdir,
1690 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001691 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001692
1693 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001694 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001695 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001696
1697 meson.add_install_script(meson_make_symlink,
1698 join_paths(bindir, 'resolvectl'),
1699 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001700endif
1701
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001702if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001703 executable('systemd-logind',
1704 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001705 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001706 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001707 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001708 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001709 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001710 install_rpath : rootlibexecdir,
1711 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001712 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001713
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001714 exe = executable('loginctl',
1715 loginctl_sources,
1716 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001717 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001718 dependencies : [threads,
1719 liblz4,
1720 libxz],
1721 install_rpath : rootlibexecdir,
1722 install : true,
1723 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001724 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001725
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001726 exe = executable('systemd-inhibit',
1727 'src/login/inhibit.c',
1728 include_directories : includes,
1729 link_with : [libshared],
1730 install_rpath : rootlibexecdir,
1731 install : true,
1732 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001733 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001734
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001735 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001736 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1737 pam_systemd = shared_library(
1738 'pam_systemd',
1739 pam_systemd_c,
1740 name_prefix : '',
1741 include_directories : includes,
1742 link_args : ['-shared',
1743 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001744 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001745 libshared_static],
1746 dependencies : [threads,
1747 libpam,
1748 libpam_misc],
1749 link_depends : pam_systemd_sym,
1750 install : true,
1751 install_dir : pamlibdir)
1752
1753 test('dlopen-pam_systemd',
1754 test_dlopen,
1755 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1756 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001757endif
1758
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001759executable('systemd-user-runtime-dir',
1760 user_runtime_dir_sources,
1761 include_directories : includes,
1762 link_with : [libshared, liblogind_core],
1763 install_rpath : rootlibexecdir,
1764 install : true,
1765 install_dir : rootlibexecdir)
1766
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001767if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001768 executable('systemd-user-sessions',
1769 'src/user-sessions/user-sessions.c',
1770 include_directories : includes,
1771 link_with : [libshared],
1772 install_rpath : rootlibexecdir,
1773 install : true,
1774 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001775endif
1776
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001777if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001778 exe = executable('bootctl',
1779 'src/boot/bootctl.c',
1780 include_directories : includes,
1781 link_with : [libshared],
1782 dependencies : [libblkid],
1783 install_rpath : rootlibexecdir,
1784 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001785 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001786endif
1787
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001788exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1789 include_directories : includes,
1790 link_with : [libshared],
1791 dependencies : [threads],
1792 install_rpath : rootlibexecdir,
1793 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001794public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001795
Felipe Satelerf3794362018-05-22 15:08:57 -04001796
1797if get_option('link-systemctl-shared')
1798 systemctl_link_with = [libshared]
1799else
1800 systemctl_link_with = [libsystemd_static,
1801 libshared_static,
1802 libjournal_client,
1803 libbasic_gcrypt]
1804endif
1805
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001806exe = executable('systemctl', 'src/systemctl/systemctl.c',
1807 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001808 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001809 dependencies : [threads,
1810 libcap,
1811 libselinux,
1812 libxz,
1813 liblz4],
1814 install_rpath : rootlibexecdir,
1815 install : true,
1816 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001817public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001818
Lennart Poettering61d05782018-04-16 21:41:40 +02001819if conf.get('ENABLE_PORTABLED') == 1
1820 executable('systemd-portabled',
1821 systemd_portabled_sources,
1822 include_directories : includes,
1823 link_with : [libshared],
1824 dependencies : [threads],
1825 install_rpath : rootlibexecdir,
1826 install : true,
1827 install_dir : rootlibexecdir)
1828
1829 exe = executable('portablectl', 'src/portable/portablectl.c',
1830 include_directories : includes,
1831 link_with : [libshared],
1832 dependencies : [threads],
1833 install_rpath : rootlibexecdir,
1834 install : true,
1835 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001836 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001837endif
1838
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001839foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1840 meson.add_install_script(meson_make_symlink,
1841 join_paths(rootbindir, 'systemctl'),
1842 join_paths(rootsbindir, alias))
1843endforeach
1844
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001845if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001846 executable('systemd-backlight',
1847 'src/backlight/backlight.c',
1848 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001849 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001850 install_rpath : rootlibexecdir,
1851 install : true,
1852 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001853endif
1854
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001855if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001856 executable('systemd-rfkill',
1857 'src/rfkill/rfkill.c',
1858 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001859 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001860 install_rpath : rootlibexecdir,
1861 install : true,
1862 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001863endif
1864
1865executable('systemd-system-update-generator',
1866 'src/system-update-generator/system-update-generator.c',
1867 include_directories : includes,
1868 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001869 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001870 install : true,
1871 install_dir : systemgeneratordir)
1872
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001873if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001874 executable('systemd-cryptsetup',
1875 'src/cryptsetup/cryptsetup.c',
1876 include_directories : includes,
1877 link_with : [libshared],
1878 dependencies : [libcryptsetup],
1879 install_rpath : rootlibexecdir,
1880 install : true,
1881 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001882
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001883 executable('systemd-cryptsetup-generator',
1884 'src/cryptsetup/cryptsetup-generator.c',
1885 include_directories : includes,
1886 link_with : [libshared],
1887 dependencies : [libcryptsetup],
1888 install_rpath : rootlibexecdir,
1889 install : true,
1890 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001891
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001892 executable('systemd-veritysetup',
1893 'src/veritysetup/veritysetup.c',
1894 include_directories : includes,
1895 link_with : [libshared],
1896 dependencies : [libcryptsetup],
1897 install_rpath : rootlibexecdir,
1898 install : true,
1899 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001900
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001901 executable('systemd-veritysetup-generator',
1902 'src/veritysetup/veritysetup-generator.c',
1903 include_directories : includes,
1904 link_with : [libshared],
1905 dependencies : [libcryptsetup],
1906 install_rpath : rootlibexecdir,
1907 install : true,
1908 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001909endif
1910
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001911if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001912 executable('systemd-sysv-generator',
1913 'src/sysv-generator/sysv-generator.c',
1914 include_directories : includes,
1915 link_with : [libshared],
1916 install_rpath : rootlibexecdir,
1917 install : true,
1918 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001919
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001920 executable('systemd-rc-local-generator',
1921 'src/rc-local-generator/rc-local-generator.c',
1922 include_directories : includes,
1923 link_with : [libshared],
1924 install_rpath : rootlibexecdir,
1925 install : true,
1926 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001927endif
1928
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001929if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001930 executable('systemd-hostnamed',
1931 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001932 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001933 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001934 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001935 install : true,
1936 install_dir : rootlibexecdir)
1937
1938 exe = executable('hostnamectl',
1939 'src/hostname/hostnamectl.c',
1940 include_directories : includes,
1941 link_with : [libshared],
1942 install_rpath : rootlibexecdir,
1943 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001944 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001945endif
1946
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001947if conf.get('ENABLE_LOCALED') == 1
1948 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001949 # logind will load libxkbcommon.so dynamically on its own
1950 deps = [libdl]
1951 else
1952 deps = []
1953 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001954
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001955 executable('systemd-localed',
1956 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001957 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001958 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001959 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001960 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001961 install : true,
1962 install_dir : rootlibexecdir)
1963
1964 exe = executable('localectl',
1965 localectl_sources,
1966 include_directories : includes,
1967 link_with : [libshared],
1968 install_rpath : rootlibexecdir,
1969 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001970 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001971endif
1972
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001973if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001974 executable('systemd-timedated',
1975 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001976 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001977 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001978 install_rpath : rootlibexecdir,
1979 install : true,
1980 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09001981endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001982
Yu Watanabe6129ec82018-05-03 18:07:43 +09001983if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001984 exe = executable('timedatectl',
1985 'src/timedate/timedatectl.c',
1986 include_directories : includes,
1987 install_rpath : rootlibexecdir,
1988 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09001989 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001990 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001991 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001992endif
1993
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001994if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001995 executable('systemd-timesyncd',
1996 systemd_timesyncd_sources,
1997 include_directories : includes,
1998 link_with : [libshared],
1999 dependencies : [threads,
2000 libm],
2001 install_rpath : rootlibexecdir,
2002 install : true,
2003 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002004
2005 executable('systemd-time-wait-sync',
2006 'src/time-wait-sync/time-wait-sync.c',
2007 include_directories : includes,
2008 link_with : [libshared],
2009 install_rpath : rootlibexecdir,
2010 install : true,
2011 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002012endif
2013
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002014if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002015 executable('systemd-machined',
2016 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002017 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002018 link_with : [libmachine_core,
2019 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002020 install_rpath : rootlibexecdir,
2021 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002022 install_dir : rootlibexecdir)
2023
2024 exe = executable('machinectl',
2025 'src/machine/machinectl.c',
2026 include_directories : includes,
2027 link_with : [libshared],
2028 dependencies : [threads,
2029 libxz,
2030 liblz4],
2031 install_rpath : rootlibexecdir,
2032 install : true,
2033 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002034 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002035endif
2036
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002037if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002038 executable('systemd-importd',
2039 systemd_importd_sources,
2040 include_directories : includes,
2041 link_with : [libshared],
2042 dependencies : [threads],
2043 install_rpath : rootlibexecdir,
2044 install : true,
2045 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002046
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002047 systemd_pull = executable('systemd-pull',
2048 systemd_pull_sources,
2049 include_directories : includes,
2050 link_with : [libshared],
2051 dependencies : [libcurl,
2052 libz,
2053 libbzip2,
2054 libxz,
2055 libgcrypt],
2056 install_rpath : rootlibexecdir,
2057 install : true,
2058 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002059
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002060 systemd_import = executable('systemd-import',
2061 systemd_import_sources,
2062 include_directories : includes,
2063 link_with : [libshared],
2064 dependencies : [libcurl,
2065 libz,
2066 libbzip2,
2067 libxz],
2068 install_rpath : rootlibexecdir,
2069 install : true,
2070 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002071
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002072 systemd_export = executable('systemd-export',
2073 systemd_export_sources,
2074 include_directories : includes,
2075 link_with : [libshared],
2076 dependencies : [libcurl,
2077 libz,
2078 libbzip2,
2079 libxz],
2080 install_rpath : rootlibexecdir,
2081 install : true,
2082 install_dir : rootlibexecdir)
2083 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002084endif
2085
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002086if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002087 exe = executable('systemd-journal-upload',
2088 systemd_journal_upload_sources,
2089 include_directories : includes,
2090 link_with : [libshared],
2091 dependencies : [threads,
2092 libcurl,
2093 libgnutls,
2094 libxz,
2095 liblz4],
2096 install_rpath : rootlibexecdir,
2097 install : true,
2098 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002099 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002100endif
2101
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002102if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002103 s_j_remote = executable('systemd-journal-remote',
2104 systemd_journal_remote_sources,
2105 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002106 link_with : [libshared,
2107 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002108 dependencies : [threads,
2109 libmicrohttpd,
2110 libgnutls,
2111 libxz,
2112 liblz4],
2113 install_rpath : rootlibexecdir,
2114 install : true,
2115 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002116
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002117 s_j_gatewayd = executable('systemd-journal-gatewayd',
2118 systemd_journal_gatewayd_sources,
2119 include_directories : includes,
2120 link_with : [libshared],
2121 dependencies : [threads,
2122 libmicrohttpd,
2123 libgnutls,
2124 libxz,
2125 liblz4],
2126 install_rpath : rootlibexecdir,
2127 install : true,
2128 install_dir : rootlibexecdir)
2129 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002130endif
2131
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002132if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002133 executable('systemd-coredump',
2134 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002135 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002136 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002137 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002138 libacl,
2139 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002140 libxz,
2141 liblz4],
2142 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002143 install : true,
2144 install_dir : rootlibexecdir)
2145
2146 exe = executable('coredumpctl',
2147 coredumpctl_sources,
2148 include_directories : includes,
2149 link_with : [libshared],
2150 dependencies : [threads,
2151 libxz,
2152 liblz4],
2153 install_rpath : rootlibexecdir,
2154 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002155 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002156endif
2157
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002158if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002159 exe = executable('systemd-binfmt',
2160 'src/binfmt/binfmt.c',
2161 include_directories : includes,
2162 link_with : [libshared],
2163 install_rpath : rootlibexecdir,
2164 install : true,
2165 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002166 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002167
2168 meson.add_install_script('sh', '-c',
2169 mkdir_p.format(binfmtdir))
2170 meson.add_install_script('sh', '-c',
2171 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2172endif
2173
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002174if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002175 executable('systemd-vconsole-setup',
2176 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002177 include_directories : includes,
2178 link_with : [libshared],
2179 install_rpath : rootlibexecdir,
2180 install : true,
2181 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002182endif
2183
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002184if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002185 executable('systemd-random-seed',
2186 'src/random-seed/random-seed.c',
2187 include_directories : includes,
2188 link_with : [libshared],
2189 install_rpath : rootlibexecdir,
2190 install : true,
2191 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002192endif
2193
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002194if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002195 executable('systemd-firstboot',
2196 'src/firstboot/firstboot.c',
2197 include_directories : includes,
2198 link_with : [libshared],
2199 dependencies : [libcrypt],
2200 install_rpath : rootlibexecdir,
2201 install : true,
2202 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002203endif
2204
2205executable('systemd-remount-fs',
2206 'src/remount-fs/remount-fs.c',
2207 'src/core/mount-setup.c',
2208 'src/core/mount-setup.h',
2209 include_directories : includes,
2210 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002211 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002212 install : true,
2213 install_dir : rootlibexecdir)
2214
2215executable('systemd-machine-id-setup',
2216 'src/machine-id-setup/machine-id-setup-main.c',
2217 'src/core/machine-id-setup.c',
2218 'src/core/machine-id-setup.h',
2219 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002220 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002221 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002222 install : true,
2223 install_dir : rootbindir)
2224
2225executable('systemd-fsck',
2226 'src/fsck/fsck.c',
2227 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002228 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002229 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002230 install : true,
2231 install_dir : rootlibexecdir)
2232
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002233executable('systemd-growfs',
2234 'src/partition/growfs.c',
2235 include_directories : includes,
2236 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002237 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002238 install_rpath : rootlibexecdir,
2239 install : true,
2240 install_dir : rootlibexecdir)
2241
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002242executable('systemd-makefs',
2243 'src/partition/makefs.c',
2244 include_directories : includes,
2245 link_with : [libshared],
2246 install_rpath : rootlibexecdir,
2247 install : true,
2248 install_dir : rootlibexecdir)
2249
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002250executable('systemd-sleep',
2251 'src/sleep/sleep.c',
2252 include_directories : includes,
2253 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002254 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002255 install : true,
2256 install_dir : rootlibexecdir)
2257
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002258exe = executable('systemd-sysctl',
2259 'src/sysctl/sysctl.c',
2260 include_directories : includes,
2261 link_with : [libshared],
2262 install_rpath : rootlibexecdir,
2263 install : true,
2264 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002265public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002266
2267executable('systemd-ac-power',
2268 'src/ac-power/ac-power.c',
2269 include_directories : includes,
2270 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002271 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002272 install : true,
2273 install_dir : rootlibexecdir)
2274
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002275exe = executable('systemd-detect-virt',
2276 'src/detect-virt/detect-virt.c',
2277 include_directories : includes,
2278 link_with : [libshared],
2279 install_rpath : rootlibexecdir,
2280 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002281public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002282
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002283exe = executable('systemd-delta',
2284 'src/delta/delta.c',
2285 include_directories : includes,
2286 link_with : [libshared],
2287 install_rpath : rootlibexecdir,
2288 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002289public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002290
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002291exe = executable('systemd-escape',
2292 'src/escape/escape.c',
2293 include_directories : includes,
2294 link_with : [libshared],
2295 install_rpath : rootlibexecdir,
2296 install : true,
2297 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002298public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002299
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002300exe = executable('systemd-notify',
2301 'src/notify/notify.c',
2302 include_directories : includes,
2303 link_with : [libshared],
2304 install_rpath : rootlibexecdir,
2305 install : true,
2306 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002307public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002308
2309executable('systemd-volatile-root',
2310 'src/volatile-root/volatile-root.c',
2311 include_directories : includes,
2312 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002313 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002314 install : true,
2315 install_dir : rootlibexecdir)
2316
2317executable('systemd-cgroups-agent',
2318 'src/cgroups-agent/cgroups-agent.c',
2319 include_directories : includes,
2320 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002321 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002322 install : true,
2323 install_dir : rootlibexecdir)
2324
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002325exe = executable('systemd-path',
2326 'src/path/path.c',
2327 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002328 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002329 install_rpath : rootlibexecdir,
2330 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002331public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002332
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002333exe = executable('systemd-ask-password',
2334 'src/ask-password/ask-password.c',
2335 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002336 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002337 install_rpath : rootlibexecdir,
2338 install : true,
2339 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002340public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002341
2342executable('systemd-reply-password',
2343 'src/reply-password/reply-password.c',
2344 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002345 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002346 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002347 install : true,
2348 install_dir : rootlibexecdir)
2349
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002350exe = executable('systemd-tty-ask-password-agent',
2351 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2352 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002353 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002354 install_rpath : rootlibexecdir,
2355 install : true,
2356 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002357public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002358
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002359exe = executable('systemd-cgls',
2360 'src/cgls/cgls.c',
2361 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002362 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002363 install_rpath : rootlibexecdir,
2364 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002365public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002366
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002367exe = executable('systemd-cgtop',
2368 'src/cgtop/cgtop.c',
2369 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002370 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002371 install_rpath : rootlibexecdir,
2372 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002373public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002374
2375executable('systemd-initctl',
2376 'src/initctl/initctl.c',
2377 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002378 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002379 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002380 install : true,
2381 install_dir : rootlibexecdir)
2382
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002383exe = executable('systemd-mount',
2384 'src/mount/mount-tool.c',
2385 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002386 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002387 install_rpath : rootlibexecdir,
2388 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002389public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002390
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002391meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002392 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002393
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002394exe = executable('systemd-run',
2395 'src/run/run.c',
2396 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002397 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002398 install_rpath : rootlibexecdir,
2399 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002400public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002401
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002402exe = executable('systemd-stdio-bridge',
2403 'src/stdio-bridge/stdio-bridge.c',
2404 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002405 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002406 install_rpath : rootlibexecdir,
2407 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002408public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002409
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002410exe = executable('busctl',
2411 'src/busctl/busctl.c',
2412 'src/busctl/busctl-introspect.c',
2413 'src/busctl/busctl-introspect.h',
2414 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002415 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002416 install_rpath : rootlibexecdir,
2417 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002418public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002419
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002420if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002421 exe = executable('systemd-sysusers',
2422 'src/sysusers/sysusers.c',
2423 include_directories : includes,
2424 link_with : [libshared],
2425 install_rpath : rootlibexecdir,
2426 install : true,
2427 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002428 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002429endif
2430
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002431if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002432 exe = executable('systemd-tmpfiles',
2433 'src/tmpfiles/tmpfiles.c',
2434 include_directories : includes,
2435 link_with : [libshared],
2436 dependencies : [libacl],
2437 install_rpath : rootlibexecdir,
2438 install : true,
2439 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002440 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002441
2442 test('test-systemd-tmpfiles',
2443 test_systemd_tmpfiles_py,
2444 args : exe.full_path())
2445 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002446endif
2447
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002448if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002449 exe = executable('systemd-hwdb',
2450 'src/hwdb/hwdb.c',
2451 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2452 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002453 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002454 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002455 install : true,
2456 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002457 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002458endif
2459
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002460if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002461 executable('systemd-quotacheck',
2462 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002463 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002464 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002465 install_rpath : rootlibexecdir,
2466 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002467 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002468endif
2469
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002470exe = executable('systemd-socket-proxyd',
2471 'src/socket-proxy/socket-proxyd.c',
2472 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002473 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002474 dependencies : [threads],
2475 install_rpath : rootlibexecdir,
2476 install : true,
2477 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002478public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002479
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002480exe = executable('systemd-udevd',
2481 systemd_udevd_sources,
2482 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002483 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002484 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002485 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002486 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002487 dependencies : [threads,
2488 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002489 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002490 libacl,
2491 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002492 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002493 install : true,
2494 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002495public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002496
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002497exe = executable('udevadm',
2498 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002499 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002500 include_directories : includes,
2501 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002502 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002503 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002504 dependencies : [threads,
2505 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002506 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002507 libacl,
2508 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002509 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002510 install : true,
2511 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002512public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002513
2514executable('systemd-shutdown',
2515 systemd_shutdown_sources,
2516 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002517 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002518 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002519 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002520 install : true,
2521 install_dir : rootlibexecdir)
2522
2523executable('systemd-update-done',
2524 'src/update-done/update-done.c',
2525 include_directories : includes,
2526 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002527 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002528 install : true,
2529 install_dir : rootlibexecdir)
2530
2531executable('systemd-update-utmp',
2532 'src/update-utmp/update-utmp.c',
2533 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002534 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002535 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002536 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002537 install : true,
2538 install_dir : rootlibexecdir)
2539
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002540if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002541 executable('systemd-modules-load',
2542 'src/modules-load/modules-load.c',
2543 include_directories : includes,
2544 link_with : [libshared],
2545 dependencies : [libkmod],
2546 install_rpath : rootlibexecdir,
2547 install : true,
2548 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002549
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002550 meson.add_install_script('sh', '-c',
2551 mkdir_p.format(modulesloaddir))
2552 meson.add_install_script('sh', '-c',
2553 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002554endif
2555
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002556exe = executable('systemd-nspawn',
2557 systemd_nspawn_sources,
2558 'src/core/mount-setup.c', # FIXME: use a variable?
2559 'src/core/mount-setup.h',
2560 'src/core/loopback-setup.c',
2561 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002562 include_directories : includes,
2563 link_with : [libnspawn_core,
2564 libshared],
2565 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002566 install_rpath : rootlibexecdir,
2567 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002568public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002569
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002570if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002571 executable('systemd-networkd',
2572 systemd_networkd_sources,
2573 include_directories : includes,
2574 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002575 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002576 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002577 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002578 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002579 install_rpath : rootlibexecdir,
2580 install : true,
2581 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002582
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002583 executable('systemd-networkd-wait-online',
2584 systemd_networkd_wait_online_sources,
2585 include_directories : includes,
2586 link_with : [libnetworkd_core,
2587 libshared],
2588 install_rpath : rootlibexecdir,
2589 install : true,
2590 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002591
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002592 exe = executable('networkctl',
2593 networkctl_sources,
2594 include_directories : includes,
2595 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002596 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002597 install_rpath : rootlibexecdir,
2598 install : true,
2599 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002600 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002601endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002602
2603executable('systemd-sulogin-shell',
2604 ['src/sulogin-shell/sulogin-shell.c'],
2605 include_directories : includes,
2606 link_with : [libshared],
2607 install_rpath : rootlibexecdir,
2608 install : true,
2609 install_dir : rootlibexecdir)
2610
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002611############################################################
2612
2613foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002614 sources = tuple[0]
2615 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2616 dependencies = tuple[2]
2617 condition = tuple.length() >= 4 ? tuple[3] : ''
2618 type = tuple.length() >= 5 ? tuple[4] : ''
2619 defs = tuple.length() >= 6 ? tuple[5] : []
2620 incs = tuple.length() >= 7 ? tuple[6] : includes
2621 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002622
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002623 name = sources[0].split('/')[-1].split('.')[0]
2624 if type.startswith('timeout=')
2625 timeout = type.split('=')[1].to_int()
2626 type = ''
2627 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002628 if want_tests == 'false'
2629 message('Not compiling @0@ because tests is set to false'.format(name))
2630 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002631 exe = executable(
2632 name,
2633 sources,
2634 include_directories : incs,
2635 link_with : link_with,
2636 dependencies : dependencies,
2637 c_args : defs,
2638 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002639 install : install_tests,
2640 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002641
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002642 if type == 'manual'
2643 message('@0@ is a manual test'.format(name))
2644 elif type == 'unsafe' and want_tests != 'unsafe'
2645 message('@0@ is an unsafe test'.format(name))
2646 else
2647 test(name, exe,
2648 env : test_env,
2649 timeout : timeout)
2650 endif
2651 else
2652 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2653 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002654endforeach
2655
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002656exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002657 'test-libsystemd-sym',
2658 test_libsystemd_sym_c,
2659 include_directories : includes,
2660 link_with : [libsystemd],
2661 install : install_tests,
2662 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002663test('test-libsystemd-sym', exe)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002664
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002665exe = executable(
2666 'test-libsystemd-static-sym',
2667 test_libsystemd_sym_c,
2668 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002669 link_with : [install_libsystemd_static],
2670 dependencies : [threads], # threads is already included in dependencies on the library,
2671 # but does not seem to get propagated. Add here as a work-around.
Davide Cavalca20f3d322018-04-24 13:34:48 -07002672 build_by_default : static_libsystemd_pic,
2673 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002674 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002675if static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002676 test('test-libsystemd-static-sym', exe)
2677endif
2678
2679exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002680 'test-libudev-sym',
2681 test_libudev_sym_c,
2682 include_directories : includes,
2683 c_args : ['-Wno-deprecated-declarations'],
2684 link_with : [libudev],
2685 install : install_tests,
2686 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002687test('test-libudev-sym', exe)
2688
2689exe = executable(
2690 'test-libudev-static-sym',
2691 test_libudev_sym_c,
2692 include_directories : includes,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002693 c_args : ['-Wno-deprecated-declarations'],
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002694 link_with : [install_libudev_static],
Davide Cavalca20f3d322018-04-24 13:34:48 -07002695 build_by_default : static_libudev_pic,
2696 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002697 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002698if static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002699 test('test-libudev-static-sym', exe)
2700endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002701
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002702############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002703
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002704fuzzer_exes = []
2705
2706foreach tuple : fuzzers
2707 sources = tuple[0]
2708 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2709 dependencies = tuple[2]
2710 defs = tuple.length() >= 4 ? tuple[3] : []
2711 incs = tuple.length() >= 5 ? tuple[4] : includes
2712
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002713 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002714 dependencies += fuzzing_engine
2715 else
2716 sources += 'src/fuzz/fuzz-main.c'
2717 endif
2718
2719 name = sources[0].split('/')[-1].split('.')[0]
2720
2721 fuzzer_exes += executable(
2722 name,
2723 sources,
2724 include_directories : [incs, include_directories('src/fuzz')],
2725 link_with : link_with,
2726 dependencies : dependencies,
2727 c_args : defs,
2728 install : false)
2729endforeach
2730
2731run_target('fuzzers',
2732 depends : fuzzer_exes,
2733 command : ['true'])
2734
2735############################################################
2736
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002737make_directive_index_py = find_program('tools/make-directive-index.py')
2738make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002739xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002740hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002741
2742subdir('units')
2743subdir('sysctl.d')
2744subdir('sysusers.d')
2745subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002746subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002747subdir('hwdb')
2748subdir('network')
2749subdir('man')
2750subdir('shell-completion/bash')
2751subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002752subdir('docs/sysvinit')
2753subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002754
2755# FIXME: figure out if the warning is true:
2756# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2757install_subdir('factory/etc',
2758 install_dir : factorydir)
2759
2760
2761install_data('xorg/50-systemd-user.sh',
2762 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002763install_data('modprobe.d/systemd.conf',
2764 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002765install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002766 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002767 'NEWS',
2768 'README',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002769 'docs/CODING_STYLE',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002770 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002771 'docs/ENVIRONMENT.md',
2772 'docs/HACKING',
2773 'docs/TRANSIENT-SETTINGS.md',
2774 'docs/TRANSLATORS',
2775 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002776 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2777 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002778
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002779meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2780meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2781
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002782############################################################
2783
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002784meson_check_help = find_program('tools/meson-check-help.sh')
2785
2786foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002787 name = exec.full_path().split('/')[-1]
2788 test('check-help-' + name,
2789 meson_check_help,
2790 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002791endforeach
2792
2793############################################################
2794
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002795# Enable tests for all supported sanitizers
2796foreach tuple : sanitizers
2797 sanitizer = tuple[0]
2798 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002799
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002800 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002801 prev = ''
2802 foreach p : fuzz_regression_tests
2803 b = p.split('/')[-2]
2804 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002805
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002806 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002807
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002808 if name != prev
2809 if want_tests == 'false'
2810 message('Not compiling @0@ because tests is set to false'.format(name))
2811 elif slow_tests
2812 exe = custom_target(
2813 name,
2814 output : name,
2815 depends : build,
2816 command : [env, 'ln', '-fs',
2817 join_paths(build.full_path(), b),
2818 '@OUTPUT@'],
2819 build_by_default : true)
2820 else
2821 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2822 endif
2823 endif
2824 prev = name
2825
2826 if want_tests != 'false' and slow_tests
2827 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2828 env,
2829 args : [exe.full_path(),
2830 join_paths(meson.source_root(),
2831 'test/fuzz-regressions',
2832 p)])
2833 endif
2834 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002835 endif
2836endforeach
2837
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002838
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002839############################################################
2840
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002841if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002842 all_files = run_command(
2843 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002844 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002845 'ls-files',
2846 ':/*.[ch]'])
2847 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002848
userwithuide85a6902017-08-09 13:41:44 +00002849 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002850 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002851 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002852 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00002853 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002854 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002855 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002856endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002857
2858if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002859 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002860 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002861 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002862 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002863endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002864
2865if git.found()
2866 git_head = run_command(
2867 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002868 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002869 'rev-parse', 'HEAD']).stdout().strip()
2870 git_head_short = run_command(
2871 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002872 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002873 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2874
2875 run_target(
2876 'git-snapshot',
2877 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002878 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002879 git_head_short),
2880 '--prefix', 'systemd-@0@/'.format(git_head),
2881 'HEAD'])
2882endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002883
2884############################################################
2885
Lennart Poettering51b13862017-12-20 12:51:14 +01002886meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2887run_target(
2888 'check-api-docs',
2889 depends : [man, libsystemd, libudev],
2890 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2891
2892############################################################
2893
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002894status = [
2895 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2896
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002897 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002898 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002899 'prefix directory: @0@'.format(prefixdir),
2900 'rootprefix directory: @0@'.format(rootprefixdir),
2901 'sysconf directory: @0@'.format(sysconfdir),
2902 'include directory: @0@'.format(includedir),
2903 'lib directory: @0@'.format(libdir),
2904 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002905 'SysV init scripts: @0@'.format(sysvinit_path),
2906 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002907 'PAM modules directory: @0@'.format(pamlibdir),
2908 'PAM configuration directory: @0@'.format(pamconfdir),
2909 'RPM macros directory: @0@'.format(rpmmacrosdir),
2910 'modprobe.d directory: @0@'.format(modprobedir),
2911 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2912 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2913 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2914 'bash completions directory: @0@'.format(bashcompletiondir),
2915 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002916 'extra start script: @0@'.format(get_option('rc-local')),
2917 'extra stop script: @0@'.format(get_option('halt-local')),
2918 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2919 get_option('debug-tty')),
2920 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09002921 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002922 'maximum system UID: @0@'.format(system_uid_max),
2923 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002924 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2925 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2926 'minimum container UID base: @0@'.format(container_uid_base_min),
2927 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002928 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002929 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002930 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002931 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002932 'nobody user name: @0@'.format(nobody_user),
2933 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002934 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002935 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002936
2937 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02002938 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002939 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2940 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2941
2942alt_dns_servers = '\n '.join(dns_servers.split(' '))
2943alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2944status += [
2945 'default DNS servers: @0@'.format(alt_dns_servers),
2946 'default NTP servers: @0@'.format(alt_ntp_servers)]
2947
2948alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2949 '@@0@'.format(time_epoch)).stdout().strip()
2950status += [
2951 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2952
2953# TODO:
2954# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2955# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2956# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2957
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002958if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002959 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002960
2961 if have_gnu_efi
2962 status += [
2963 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2964 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002965 'EFI lib directory: @0@'.format(efi_libdir),
2966 'EFI lds directory: @0@'.format(efi_ldsdir),
2967 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002968 endif
2969endif
2970
2971found = []
2972missing = []
2973
2974foreach tuple : [
2975 ['libcryptsetup'],
2976 ['PAM'],
2977 ['AUDIT'],
2978 ['IMA'],
2979 ['AppArmor'],
2980 ['SELinux'],
2981 ['SECCOMP'],
2982 ['SMACK'],
2983 ['zlib'],
2984 ['xz'],
2985 ['lz4'],
2986 ['bzip2'],
2987 ['ACL'],
2988 ['gcrypt'],
2989 ['qrencode'],
2990 ['microhttpd'],
2991 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01002992 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002993 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002994 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002995 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002996 ['libidn'],
2997 ['libiptc'],
2998 ['elfutils'],
2999 ['binfmt'],
3000 ['vconsole'],
3001 ['quotacheck'],
3002 ['tmpfiles'],
3003 ['environment.d'],
3004 ['sysusers'],
3005 ['firstboot'],
3006 ['randomseed'],
3007 ['backlight'],
3008 ['rfkill'],
3009 ['logind'],
3010 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003011 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003012 ['importd'],
3013 ['hostnamed'],
3014 ['timedated'],
3015 ['timesyncd'],
3016 ['localed'],
3017 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003018 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003019 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3020 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003021 ['coredump'],
3022 ['polkit'],
3023 ['legacy pkla', install_polkit_pkla],
3024 ['efi'],
3025 ['gnu-efi', have_gnu_efi],
3026 ['kmod'],
3027 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003028 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003029 ['blkid'],
3030 ['dbus'],
3031 ['glib'],
Yu Watanabe08540a92018-07-18 09:25:57 +09003032 ['nss-myhostname', conf.get('ENABLE_NSS_MYHOSTNAME') == 1],
3033 ['nss-mymachines', conf.get('ENABLE_NSS_MYMACHINES') == 1],
3034 ['nss-resolve', conf.get('ENABLE_NSS_RESOLVE') == 1],
3035 ['nss-systemd', conf.get('ENABLE_NSS_SYSTEMD') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003036 ['hwdb'],
3037 ['tpm'],
3038 ['man pages', want_man],
3039 ['html pages', want_html],
3040 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003041 ['SysV compat'],
3042 ['utmp'],
3043 ['ldconfig'],
3044 ['hibernate'],
3045 ['adm group', get_option('adm-group')],
3046 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003047 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003048 ['debug hashmap'],
3049 ['debug mmap cache'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003050 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003051]
3052
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003053 if tuple.length() >= 2
3054 cond = tuple[1]
3055 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003056 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3057 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003058 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003059 endif
3060 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003061 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003062 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003063 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003064 endif
3065endforeach
3066
3067status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003068 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003069 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003070 '',
3071 'disabled features: @0@'.format(', '.join(missing)),
3072 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003073message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003074
3075if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003076 warning('\n' +
3077 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3078 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3079 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003080endif