blob: a97c5fcffc3f696dd779366607c1c400fa0bf041 [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'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700209conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700210conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400211conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400212conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400213conf.set_quoted('LIBDIR', libdir)
214conf.set_quoted('ROOTLIBDIR', rootlibdir)
215conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
216conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400217conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
218conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
219conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
220conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
221conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
222conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100223conf.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'true' : 'false')
Michal Koutný7f672e82018-03-09 18:27:13 +0100224conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400225
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400226substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400227substs.set('exec_prefix', prefixdir)
228substs.set('libdir', libdir)
229substs.set('rootlibdir', rootlibdir)
230substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400231substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400232substs.set('bindir', bindir)
233substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400234substs.set('rootlibexecdir', rootlibexecdir)
235substs.set('systemunitdir', systemunitdir)
236substs.set('userunitdir', userunitdir)
237substs.set('systempresetdir', systempresetdir)
238substs.set('userpresetdir', userpresetdir)
239substs.set('udevhwdbdir', udevhwdbdir)
240substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400241substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200242substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400243substs.set('catalogdir', catalogdir)
244substs.set('tmpfilesdir', tmpfilesdir)
245substs.set('sysusersdir', sysusersdir)
246substs.set('sysctldir', sysctldir)
247substs.set('binfmtdir', binfmtdir)
248substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200249substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400250substs.set('systemgeneratordir', systemgeneratordir)
251substs.set('usergeneratordir', usergeneratordir)
252substs.set('systemenvgeneratordir', systemenvgeneratordir)
253substs.set('userenvgeneratordir', userenvgeneratordir)
254substs.set('systemshutdowndir', systemshutdowndir)
255substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400256substs.set('VARLOGDIR', varlogdir)
257substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400258substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
259substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400260substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
261substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
262substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
263substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100264substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400265
266#####################################################################
267
268cc = meson.get_compiler('c')
269pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400270check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100271meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400272
Adam Duskett08318a22018-01-15 06:25:46 -0500273if get_option('tests') != 'false'
274 cxx = find_program('c++', required : false)
275 if cxx.found()
276 # Used only for tests
277 add_languages('cpp')
278 endif
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400279endif
280
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500281want_ossfuzz = get_option('oss-fuzz')
282want_libfuzzer = get_option('llvm-fuzz')
283fuzzer_build = want_ossfuzz or want_libfuzzer
284if want_ossfuzz and want_libfuzzer
285 error('only one of oss-fuzz and llvm-fuzz can be specified')
286endif
287if want_libfuzzer
288 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
289endif
290if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500291 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
292endif
293
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900294possible_cc_flags = [
295 '-Wextra',
296 '-Werror=undef',
297 '-Wlogical-op',
298 '-Wmissing-include-dirs',
299 '-Wold-style-definition',
300 '-Wpointer-arith',
301 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900302 '-Wfloat-equal',
303 '-Wsuggest-attribute=noreturn',
304 '-Werror=missing-prototypes',
305 '-Werror=implicit-function-declaration',
306 '-Werror=missing-declarations',
307 '-Werror=return-type',
308 '-Werror=incompatible-pointer-types',
309 '-Werror=format=2',
310 '-Wstrict-prototypes',
311 '-Wredundant-decls',
312 '-Wmissing-noreturn',
313 '-Wimplicit-fallthrough=5',
314 '-Wshadow',
315 '-Wendif-labels',
316 '-Wstrict-aliasing=2',
317 '-Wwrite-strings',
318 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200319 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200320 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900321 '-Wdate-time',
322 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700323
324 # negative arguments are correctly detected starting with meson 0.46.
325 '-Wno-unused-parameter',
326 '-Wno-missing-field-initializers',
327 '-Wno-unused-result',
328 '-Wno-format-signedness',
329
330 # work-around for gcc 7.1 turning this on on its own.
331 '-Wno-error=nonnull',
332
333 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
334 # optimizations enabled, producing essentially false positives.
335 '-Wno-maybe-uninitialized',
336
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900337 '-ffast-math',
338 '-fno-common',
339 '-fdiagnostics-show-option',
340 '-fno-strict-aliasing',
341 '-fvisibility=hidden',
342 '-fstack-protector',
343 '-fstack-protector-strong',
344 '--param=ssp-buffer-size=4',
345]
346
347# --as-needed and --no-undefined are provided by meson by default,
348# run mesonconf to see what is enabled
349possible_link_flags = [
350 '-Wl,-z,relro',
351 '-Wl,-z,now',
352]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400353
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500354# the oss-fuzz fuzzers are not built with -fPIE, so don't
355# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500356if not fuzzer_build
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900357 possible_cc_flags += '-fPIE'
358 possible_link_flags += '-pie'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500359endif
360
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900361if cc.get_id() == 'clang'
362 possible_cc_flags += [
363 '-Wno-typedef-redefinition',
364 '-Wno-gnu-variable-sized-type-not-at-end',
365 ]
366endif
367
368if get_option('buildtype') != 'debug'
369 possible_cc_flags += [
370 '-ffunction-sections',
371 '-fdata-sections',
372 ]
373
374 possible_link_flags += '-Wl,--gc-sections'
375endif
376
377add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900378add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900379
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800380if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400381 #include <time.h>
382 #include <inttypes.h>
383 typedef uint64_t usec_t;
384 usec_t now(clockid_t clock);
385 int main(void) {
386 struct timespec now;
387 return 0;
388 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800389''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400390 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400391endif
392
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400393cpp = ' '.join(cc.cmd_array()) + ' -E'
394
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400395#####################################################################
396# compilation result tests
397
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400398conf.set('_GNU_SOURCE', true)
399conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400400
401conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
402conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
403conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
404conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
405conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
406conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
407conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
408
409decl_headers = '''
410#include <uchar.h>
411#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000412#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100413#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400414'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400415
416foreach decl : ['char16_t',
417 'char32_t',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400418 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000419 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100420 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400421 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400422
423 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200424 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
425
426 if decl == 'struct statx'
427 if have
428 want_linux_stat_h = false
429 else
430 have = cc.sizeof(decl,
431 prefix : decl_headers + '#include <linux/stat.h>',
432 args : '-D_GNU_SOURCE') > 0
433 want_linux_stat_h = have
434 endif
435 endif
436
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200437 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400438endforeach
439
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200440conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700441
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400442foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
443 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
444 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
445 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530446 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400447 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
448 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
449 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
450 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
451 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530452 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400453 # if_tunnel.h is buggy and cannot be included on its own
454 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
455 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
456 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
457 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
458 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
459 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
460 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530461 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400462 ['NDA_IFINDEX', 'linux/neighbour.h'],
463 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000464 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400465 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530466 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Susant Sahani53cb5012018-06-03 12:37:41 +0530467 ['FOU_ATTR_REMCSUM_NOPARTIAL', 'linux/fou.h'],
468 ['FOU_CMD_GET', 'linux/fou.h'],
469 ['FOU_ENCAP_GUE', 'linux/fou.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400470 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400471 prefix = decl.length() > 2 ? decl[2] : ''
472 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200473 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400474endforeach
475
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400476foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200477 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400478endforeach
479
480foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100481 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100482 ['gettid', '''#include <sys/types.h>
483 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100484 ['pivot_root', '''#include <stdlib.h>
485 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100486 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400487 #include <sys/stat.h>
488 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100489 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100490 ['renameat2', '''#include <stdio.h>
491 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400492 ['kcmp', '''#include <linux/kcmp.h>'''],
493 ['keyctl', '''#include <sys/types.h>
494 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100495 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400496 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200497 ['bpf', '''#include <sys/syscall.h>
498 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100499 ['statx', '''#include <sys/types.h>
500 #include <sys/stat.h>
501 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100502 ['explicit_bzero' , '''#include <string.h>'''],
503 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400504]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400505
Lennart Poettering85db59b2017-12-25 12:01:14 +0100506 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200507 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400508endforeach
509
Lennart Poettering85db59b2017-12-25 12:01:14 +0100510if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200511 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200512 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400513else
514 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200515 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200516 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400517endif
518
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400519#####################################################################
520
521sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400522awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400523m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400524stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400525git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100526env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100527perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400528
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400529meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400530mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400531test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
532splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400533
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400534# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
535# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500536progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400537 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400538 ['kmod', '/usr/bin/kmod' ],
539 ['kexec', '/usr/sbin/kexec' ],
540 ['sulogin', '/usr/sbin/sulogin' ],
541 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
542 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
543 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
544 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
545 ]
546foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400547 path = get_option(prog[0] + '-path')
548 if path != ''
549 message('Using @1@ for @0@'.format(prog[0], path))
550 else
551 exe = find_program(prog[0],
552 '/usr/sbin/' + prog[0],
553 '/sbin/' + prog[0],
554 required: false)
555 path = exe.found() ? exe.path() : prog[1]
556 endif
557 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
558 conf.set_quoted(name, path)
559 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400560endforeach
561
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500562conf.set_quoted('TELINIT', get_option('telinit-path'))
563
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400564if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100565 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400566endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400567
568############################################################
569
570gperf = find_program('gperf')
571
572gperf_test_format = '''
573#include <string.h>
574const char * in_word_set(const char *, @0@);
575@1@
576'''
577gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
578gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
579gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
580if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400581 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400582else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400583 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
584 if cc.compiles(gperf_test)
585 gperf_len_type = 'unsigned'
586 else
587 error('unable to determine gperf len type')
588 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400589endif
590message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400591conf.set('GPERF_LEN_TYPE', gperf_len_type,
592 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400593
594############################################################
595
596if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400597 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400598endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100599foreach header : ['crypt.h',
600 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400601 'linux/memfd.h',
602 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200603 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400604 'valgrind/memcheck.h',
605 'valgrind/valgrind.h',
606 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400607
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200608 conf.set10('HAVE_' + header.underscorify().to_upper(),
609 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400610endforeach
611
612############################################################
613
614conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400615conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
616gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400617
618default_hierarchy = get_option('default-hierarchy')
619conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
620 description : 'default cgroup hierarchy as string')
621if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400622 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400623elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400624 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400625else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400626 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400627endif
628
629time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900630if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400631 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900632 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400633endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400634conf.set('TIME_EPOCH', time_epoch)
635
636system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900637if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400638 system_uid_max = run_command(
639 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800640 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
641 '/etc/login.defs').stdout().strip()
642 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900643 system_uid_max = 999
644 else
645 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800646 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400647endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400648conf.set('SYSTEM_UID_MAX', system_uid_max)
649substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400650
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400651system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900652if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400653 system_gid_max = run_command(
654 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800655 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
656 '/etc/login.defs').stdout().strip()
657 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900658 system_gid_max = 999
659 else
660 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800661 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400662endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400663conf.set('SYSTEM_GID_MAX', system_gid_max)
664substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400665
Yu Watanabeac093402018-05-10 16:04:16 +0900666dynamic_uid_min = get_option('dynamic-uid-min')
667dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100668conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
669conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
670substs.set('dynamicuidmin', dynamic_uid_min)
671substs.set('dynamicuidmax', dynamic_uid_max)
672
Yu Watanabeac093402018-05-10 16:04:16 +0900673container_uid_base_min = get_option('container-uid-base-min')
674container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100675conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
676conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
677substs.set('containeruidbasemin', container_uid_base_min)
678substs.set('containeruidbasemax', container_uid_base_max)
679
Lennart Poetteringafde4572017-12-05 11:00:24 +0100680nobody_user = get_option('nobody-user')
681nobody_group = get_option('nobody-group')
682
Chen Qi2484bff2018-07-23 14:53:09 +0800683if not meson.is_cross_build()
684 getent_result = run_command('getent', 'passwd', '65534')
685 if getent_result.returncode() == 0
686 name = getent_result.stdout().split(':')[0]
687 if name != nobody_user
688 warning('\n' +
689 'The local user with the UID 65534 does not match the configured user name "@0@" of the nobody user (its name is @1@).\n'.format(nobody_user, name) +
690 'Your build will result in an user table setup that is incompatible with the local system.')
691 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100692 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800693 id_result = run_command('id', '-u', nobody_user)
694 if id_result.returncode() == 0
695 id = id_result.stdout().to_int()
696 if id != 65534
697 warning('\n' +
698 'The local user with the configured user name "@0@" of the nobody user does not have UID 65534 (it has @1@).\n'.format(nobody_user, id) +
699 'Your build will result in an user table setup that is incompatible with the local system.')
700 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100701 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100702
Chen Qi2484bff2018-07-23 14:53:09 +0800703 getent_result = run_command('getent', 'group', '65534')
704 if getent_result.returncode() == 0
705 name = getent_result.stdout().split(':')[0]
706 if name != nobody_group
707 warning('\n' +
708 'The local group with the GID 65534 does not match the configured group name "@0@" of the nobody group (its name is @1@).\n'.format(nobody_group, name) +
709 'Your build will result in an group table setup that is incompatible with the local system.')
710 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100711 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800712 id_result = run_command('id', '-g', nobody_group)
713 if id_result.returncode() == 0
714 id = id_result.stdout().to_int()
715 if id != 65534
716 warning('\n' +
717 'The local group with the configured group name "@0@" of the nobody group does not have UID 65534 (it has @1@).\n'.format(nobody_group, id) +
718 'Your build will result in an group table setup that is incompatible with the local system.')
719 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100720 endif
721endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900722if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900723 warning('\n' +
724 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
725 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900726endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100727
728conf.set_quoted('NOBODY_USER_NAME', nobody_user)
729conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900730substs.set('NOBODY_USER_NAME', nobody_user)
731substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100732
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400733tty_gid = get_option('tty-gid')
734conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400735substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400736
Ikey Doherty84786b82017-12-03 12:28:23 +0000737# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900738users_gid = get_option('users-gid')
739substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000740
Yu Watanabe348b4432018-05-07 18:17:35 +0900741conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
742conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400743
Michael Bieblace5e312018-07-13 23:36:13 +0200744dev_kvm_mode = get_option('dev-kvm-mode')
745substs.set('DEV_KVM_MODE', dev_kvm_mode)
746conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Tom Stellard4e15a732017-10-31 08:46:24 -0700747substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400748
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400749kill_user_processes = get_option('default-kill-user-processes')
750conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100751conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400752substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400753
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400754dns_servers = get_option('dns-servers')
755conf.set_quoted('DNS_SERVERS', dns_servers)
756substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400757
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400758ntp_servers = get_option('ntp-servers')
759conf.set_quoted('NTP_SERVERS', ntp_servers)
760substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400761
762conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
763
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400764substs.set('SUSHELL', get_option('debug-shell'))
765substs.set('DEBUGTTY', get_option('debug-tty'))
766
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200767enable_debug_hashmap = false
768enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200769foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900770 if name == 'hashmap'
771 enable_debug_hashmap = true
772 elif name == 'mmap-cache'
773 enable_debug_mmap_cache = true
774 else
775 message('unknown debug option "@0@", ignoring'.format(name))
776 endif
777endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200778conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
779conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400780
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200781conf.set10('VALGRIND', get_option('valgrind'))
782
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400783#####################################################################
784
785threads = dependency('threads')
786librt = cc.find_library('rt')
787libm = cc.find_library('m')
788libdl = cc.find_library('dl')
789libcrypt = cc.find_library('crypt')
790
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400791libcap = dependency('libcap', required : false)
792if not libcap.found()
793 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
794 libcap = cc.find_library('cap')
795endif
796
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400797libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100798 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400799
800want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500801if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400802 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400803 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400804 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200805 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400806else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200807 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400808 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400809endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200810conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400811
812want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500813if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400814 libselinux = dependency('libselinux',
815 version : '>= 2.1.9',
816 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200817 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400818else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200819 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400820 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400821endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200822conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400823
824want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500825if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400826 libapparmor = dependency('libapparmor',
827 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200828 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400829else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200830 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400831 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200833conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400834
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400835smack_run_label = get_option('smack-run-label')
836if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400837 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400838endif
839
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400840want_polkit = get_option('polkit')
841install_polkit = false
842install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500843if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400844 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400845
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400846 libpolkit = dependency('polkit-gobject-1',
847 required : false)
848 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
849 message('Old polkit detected, will install pkla files')
850 install_polkit_pkla = true
851 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400852endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200853conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400854
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400855want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500856if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400857 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200858 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400859else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200860 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400861 libacl = []
862endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200863conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400864
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400865want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500866if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400867 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200868 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400869else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200870 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400871 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400872endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200873conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400874
875want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500876if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400877 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200878 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400879else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200880 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400881 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400882endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200883conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400884
885want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500886if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400887 libkmod = dependency('libkmod',
888 version : '>= 15',
889 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200890 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400891else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200892 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400893 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400894endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200895conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400896
897want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500898if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400899 libpam = cc.find_library('pam', required : want_pam == 'true')
900 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200901 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400902else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200903 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400904 libpam = []
905 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400906endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200907conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400908
909want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500910if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400911 libmicrohttpd = dependency('libmicrohttpd',
912 version : '>= 0.9.33',
913 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200914 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400915else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200916 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400917 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400918endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200919conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400920
921want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500922if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400923 libcryptsetup = dependency('libcryptsetup',
924 version : '>= 1.6.0',
925 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200926 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100927 have_sector = cc.has_member(
928 'struct crypt_params_plain',
929 'sector_size',
930 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400931else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200932 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100933 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400934 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400935endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200936conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100937conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400938
939want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500940if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400941 libcurl = dependency('libcurl',
942 version : '>= 7.32.0',
943 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200944 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400945else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200946 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400947 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400948endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200949conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400950
951want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400952want_libidn2 = get_option('libidn2')
953if want_libidn == 'true' and want_libidn2 == 'true'
954 error('libidn and libidn2 cannot be requested simultaneously')
955endif
956
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500957if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400958 libidn = dependency('libidn',
959 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200960 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400961else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200962 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400963 libidn = []
964endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200965conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500966if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400967 # libidn is used for both libidn and libidn2 objects
968 libidn = dependency('libidn2',
969 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200970 have = libidn.found()
971else
972 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400973endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200974conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400975
976want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500977if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400978 libiptc = dependency('libiptc',
979 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200980 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400981else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200982 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400983 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400984endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200985conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400986
987want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500988if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400989 libqrencode = dependency('libqrencode',
990 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200991 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400992else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200993 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400994 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400995endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400997
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400998want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500999if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001000 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1001 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001002 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001003else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001004 have = false
1005endif
1006if not have
1007 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001008 libgcrypt = []
1009 libgpg_error = []
1010endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001011conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001012
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001013want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001014if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001015 libgnutls = dependency('gnutls',
1016 version : '>= 3.1.4',
1017 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001018 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001019else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001020 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001021 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001022endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001023conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001024
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001025want_openssl = get_option('openssl')
1026if want_openssl != 'false' and not fuzzer_build
1027 libopenssl = dependency('openssl',
1028 version : '>= 1.1.0',
1029 required : want_openssl == 'true')
1030 have = libopenssl.found()
1031else
1032 have = false
1033 libopenssl = []
1034endif
1035conf.set10('HAVE_OPENSSL', have)
1036
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001037want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001038if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001039 libdw = dependency('libdw',
1040 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001041 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001042else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001043 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001044 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001045endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001046conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001047
1048want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001049if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001050 libz = dependency('zlib',
1051 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001052 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001053else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001054 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001055 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001056endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001057conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001058
1059want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001060if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001061 libbzip2 = cc.find_library('bz2',
1062 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001063 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001064else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001065 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001066 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001067endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001068conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001069
1070want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001071if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001072 libxz = dependency('liblzma',
1073 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001074 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001075else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001076 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001077 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001078endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001079conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001080
1081want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001082if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001083 liblz4 = dependency('liblz4',
1084 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001085 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001086else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001087 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001088 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001089endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001090conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001091
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001092want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001093if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001094 libxkbcommon = dependency('xkbcommon',
1095 version : '>= 0.3.0',
1096 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001097 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001098else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001099 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001100 libxkbcommon = []
1101endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001102conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001103
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001104want_pcre2 = get_option('pcre2')
1105if want_pcre2 != 'false'
1106 libpcre2 = dependency('libpcre2-8',
1107 required : want_pcre2 == 'true')
1108 have = libpcre2.found()
1109else
1110 have = false
1111 libpcre2 = []
1112endif
1113conf.set10('HAVE_PCRE2', have)
1114
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001115want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001116if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001117 libglib = dependency('glib-2.0',
1118 version : '>= 2.22.0',
1119 required : want_glib == 'true')
1120 libgobject = dependency('gobject-2.0',
1121 version : '>= 2.22.0',
1122 required : want_glib == 'true')
1123 libgio = dependency('gio-2.0',
1124 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001125 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001126else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001127 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001128 libglib = []
1129 libgobject = []
1130 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001131endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001132conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001133
1134want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001135if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001136 libdbus = dependency('dbus-1',
1137 version : '>= 1.3.2',
1138 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001139 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001140else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001141 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001142 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001143endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001144conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001145
Yu Watanabe42303dc2017-06-18 05:22:32 +09001146default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001147if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001148 default_dnssec = 'no'
1149endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001150if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001151 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1152 default_dnssec = 'no'
1153endif
1154conf.set('DEFAULT_DNSSEC_MODE',
1155 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1156substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1157
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001158dns_over_tls = get_option('dns-over-tls')
1159if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001160 if dns_over_tls == 'openssl'
1161 have_gnutls = false
1162 else
1163 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1164 if dns_over_tls == 'gnutls' and not have_gnutls
1165 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1166 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001167 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001168 if dns_over_tls == 'gnutls' or have_gnutls
1169 have_openssl = false
1170 else
1171 have_openssl = conf.get('HAVE_OPENSSL') == 1
1172 if dns_over_tls != 'auto' and not have_openssl
1173 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1174 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1175 endif
1176 endif
1177 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001178else
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001179 have = have_gnutls = have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001180endif
1181conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001182conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1183conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001184
Iwan Timmerc9299be2018-06-13 20:26:24 +02001185default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001186if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001187 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001188endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001189if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1190 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 +02001191 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001192endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001193conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1194 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1195substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001196
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001197want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001198if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001199 have = (conf.get('HAVE_LIBCURL') == 1 and
1200 conf.get('HAVE_ZLIB') == 1 and
1201 conf.get('HAVE_BZIP2') == 1 and
1202 conf.get('HAVE_XZ') == 1 and
1203 conf.get('HAVE_GCRYPT') == 1)
1204 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001205 error('importd support was requested, but dependencies are not available')
1206 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001207else
1208 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001209endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001210conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001211
1212want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001213if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001214 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1215 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001216 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1217 # it's possible to build one without the other. Complain only if
1218 # support was explictly requested. The auxiliary files like sysusers
1219 # config should be installed when any of the programs are built.
1220 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1221 error('remote support was requested, but dependencies are not available')
1222 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001223 have = have_deps[0] or have_deps[1]
1224else
1225 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001226endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001227conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001228
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001229foreach term : ['utmp',
1230 'hibernate',
1231 'environment-d',
1232 'binfmt',
1233 'coredump',
1234 'resolve',
1235 'logind',
1236 'hostnamed',
1237 'localed',
1238 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001239 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001240 'networkd',
1241 'timedated',
1242 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001243 'firstboot',
1244 'randomseed',
1245 'backlight',
1246 'vconsole',
1247 'quotacheck',
1248 'sysusers',
1249 'tmpfiles',
1250 'hwdb',
1251 'rfkill',
1252 'ldconfig',
1253 'efi',
1254 'tpm',
1255 'ima',
1256 'smack',
1257 'gshadow',
1258 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001259 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001260 'nss-systemd']
1261 have = get_option(term)
1262 name = 'ENABLE_' + term.underscorify().to_upper()
1263 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001264endforeach
1265
Yu Watanabe08540a92018-07-18 09:25:57 +09001266foreach tuple : [['nss-mymachines', 'machined'],
1267 ['nss-resolve', 'resolve']]
1268 want = get_option(tuple[0])
1269 if want != 'false'
1270 have = get_option(tuple[1])
1271 if want == 'true' and not have
1272 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1273 endif
1274 else
1275 have = false
1276 endif
1277 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1278 conf.set10(name, have)
1279endforeach
1280
1281enable_nss = false
1282foreach term : ['ENABLE_NSS_MYHOSTNAME',
1283 'ENABLE_NSS_MYMACHINES',
1284 'ENABLE_NSS_RESOLVE',
1285 'ENABLE_NSS_SYSTEMD']
1286 if conf.get(term) == 1
1287 enable_nss = true
1288 endif
1289endforeach
1290conf.set10('ENABLE_NSS', enable_nss)
1291
Yu Watanabe348b4432018-05-07 18:17:35 +09001292conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001293
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001294want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001295install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001296slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001297tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001298fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001299
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001300conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001301
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001302#####################################################################
1303
1304if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001305 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001306
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001307 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001308 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001309 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001310 elif efi_arch == 'x86_64'
1311 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001312 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001313 elif efi_arch == 'arm'
1314 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001315 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001316 elif efi_arch == 'aarch64'
1317 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001318 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001319 else
1320 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001321 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001322 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001323
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001324 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001325 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001326
Yu Watanabeac093402018-05-10 16:04:16 +09001327 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001328else
1329 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001330endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001331conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001332
1333#####################################################################
1334
1335config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001336 output : 'config.h',
1337 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001338
Yu Watanabe348b4432018-05-07 18:17:35 +09001339meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1340
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001341includes = include_directories('src/basic',
1342 'src/shared',
1343 'src/systemd',
1344 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001345 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001346 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001347 'src/resolve',
1348 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001349 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001350 'src/login',
1351 'src/udev',
1352 'src/libudev',
1353 'src/core',
1354 'src/libsystemd/sd-bus',
1355 'src/libsystemd/sd-device',
1356 'src/libsystemd/sd-hwdb',
1357 'src/libsystemd/sd-id128',
1358 'src/libsystemd/sd-netlink',
1359 'src/libsystemd/sd-network',
1360 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001361 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001362
1363add_project_arguments('-include', 'config.h', language : 'c')
1364
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001365subdir('po')
1366subdir('catalog')
1367subdir('src/systemd')
1368subdir('src/basic')
1369subdir('src/libsystemd')
1370subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001371subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001372subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001373
1374libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001375 'journal-core',
1376 libjournal_core_sources,
1377 journald_gperf_c,
1378 include_directories : includes,
1379 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001380
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001381libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001382libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001383 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001384 '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 +02001385 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001386 include_directories : includes,
1387 link_args : ['-shared',
1388 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001389 link_with : [libbasic,
1390 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001391 link_whole : [libsystemd_static,
1392 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001393 dependencies : [threads,
1394 librt,
1395 libxz,
1396 liblz4],
1397 link_depends : libsystemd_sym,
1398 install : true,
1399 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001400
Davide Cavalca70848ec2018-04-09 02:43:35 -07001401static_libsystemd = get_option('static-libsystemd')
1402static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1403
1404install_libsystemd_static = static_library(
1405 'systemd',
1406 libsystemd_sources,
1407 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001408 basic_sources,
1409 basic_gcrypt_sources,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001410 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001411 build_by_default : static_libsystemd != 'false',
1412 install : static_libsystemd != 'false',
1413 install_dir : rootlibdir,
1414 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1415 dependencies : [threads,
1416 librt,
1417 libxz,
1418 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001419 libcap,
1420 libblkid,
1421 libmount,
1422 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001423 libgcrypt],
1424 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1425
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001426############################################################
1427
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001428# binaries that have --help and are intended for use by humans,
1429# usually, but not always, installed in /bin.
1430public_programs = []
1431
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001432subdir('src/libudev')
1433subdir('src/shared')
1434subdir('src/core')
1435subdir('src/udev')
1436subdir('src/network')
1437
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001438subdir('src/analyze')
1439subdir('src/journal-remote')
1440subdir('src/coredump')
1441subdir('src/hostname')
1442subdir('src/import')
1443subdir('src/kernel-install')
1444subdir('src/locale')
1445subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001446subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001447subdir('src/nspawn')
1448subdir('src/resolve')
1449subdir('src/timedate')
1450subdir('src/timesync')
1451subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001452subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001453
1454subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001455subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001456subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001457subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001458
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001459############################################################
1460
1461# only static linking apart from libdl, to make sure that the
1462# module is linked to all libraries that it uses.
1463test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001464 'test-dlopen',
1465 test_dlopen_c,
1466 include_directories : includes,
1467 link_with : [libbasic],
1468 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001469
Yu Watanabe08540a92018-07-18 09:25:57 +09001470foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001471 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001472 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1473 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001474
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001475 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001476 if condition
1477 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001478
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001479 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1480 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001481
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001482 nss = shared_library(
1483 'nss_' + module,
1484 'src/nss-@0@/nss-@0@.c'.format(module),
1485 version : '2',
1486 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001487 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1488 link_args : ['-Wl,-z,nodelete',
1489 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001490 '-Wl,--version-script=' + version_script_arg,
1491 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001492 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001493 libbasic],
1494 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001495 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001496 link_depends : sym,
1497 install : true,
1498 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001499
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001500 # We cannot use shared_module because it does not support version suffix.
1501 # Unfortunately shared_library insists on creating the symlink…
1502 meson.add_install_script('sh', '-c',
1503 'rm $DESTDIR@0@/libnss_@1@.so'
1504 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001505
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001506 test('dlopen-nss_' + module,
1507 test_dlopen,
1508 args : [nss.full_path()]) # path to dlopen must include a slash
1509 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001510endforeach
1511
1512############################################################
1513
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001514executable('systemd',
1515 systemd_sources,
1516 include_directories : includes,
1517 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001518 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001519 dependencies : [threads,
1520 librt,
1521 libseccomp,
1522 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001523 libmount,
1524 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001525 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001526 install : true,
1527 install_dir : rootlibexecdir)
1528
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001529meson.add_install_script(meson_make_symlink,
1530 join_paths(rootlibexecdir, 'systemd'),
1531 join_paths(rootsbindir, 'init'))
1532
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001533exe = executable('systemd-analyze',
1534 systemd_analyze_sources,
1535 include_directories : includes,
1536 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001537 libshared],
1538 dependencies : [threads,
1539 librt,
1540 libseccomp,
1541 libselinux,
1542 libmount,
1543 libblkid],
1544 install_rpath : rootlibexecdir,
1545 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001546public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001547
1548executable('systemd-journald',
1549 systemd_journald_sources,
1550 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001551 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001552 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001553 dependencies : [threads,
1554 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001555 liblz4,
1556 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001557 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001558 install : true,
1559 install_dir : rootlibexecdir)
1560
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001561exe = executable('systemd-cat',
1562 systemd_cat_sources,
1563 include_directories : includes,
1564 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001565 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001566 dependencies : [threads],
1567 install_rpath : rootlibexecdir,
1568 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001569public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001570
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001571exe = executable('journalctl',
1572 journalctl_sources,
1573 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001574 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001575 dependencies : [threads,
1576 libqrencode,
1577 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001578 liblz4,
1579 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001580 install_rpath : rootlibexecdir,
1581 install : true,
1582 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001583public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001584
1585executable('systemd-getty-generator',
1586 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001587 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001588 link_with : [libshared],
1589 install_rpath : rootlibexecdir,
1590 install : true,
1591 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001592
1593executable('systemd-debug-generator',
1594 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001595 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001596 link_with : [libshared],
1597 install_rpath : rootlibexecdir,
1598 install : true,
1599 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001600
1601executable('systemd-fstab-generator',
1602 'src/fstab-generator/fstab-generator.c',
1603 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001604 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001605 link_with : [libshared],
1606 install_rpath : rootlibexecdir,
1607 install : true,
1608 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001609
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001610if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001611 executable('30-systemd-environment-d-generator',
1612 'src/environment-d-generator/environment-d-generator.c',
1613 include_directories : includes,
1614 link_with : [libshared],
1615 install_rpath : rootlibexecdir,
1616 install : true,
1617 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001618
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001619 meson.add_install_script(meson_make_symlink,
1620 join_paths(sysconfdir, 'environment'),
1621 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001622endif
1623
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001624if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001625 executable('systemd-hibernate-resume-generator',
1626 'src/hibernate-resume/hibernate-resume-generator.c',
1627 include_directories : includes,
1628 link_with : [libshared],
1629 install_rpath : rootlibexecdir,
1630 install : true,
1631 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001632
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001633 executable('systemd-hibernate-resume',
1634 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001635 include_directories : includes,
1636 link_with : [libshared],
1637 install_rpath : rootlibexecdir,
1638 install : true,
1639 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001640endif
1641
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001642if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001643 executable('systemd-gpt-auto-generator',
1644 'src/gpt-auto-generator/gpt-auto-generator.c',
1645 'src/basic/blkid-util.h',
1646 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001647 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001648 dependencies : libblkid,
1649 install_rpath : rootlibexecdir,
1650 install : true,
1651 install_dir : systemgeneratordir)
1652
1653 exe = executable('systemd-dissect',
1654 'src/dissect/dissect.c',
1655 include_directories : includes,
1656 link_with : [libshared],
1657 install_rpath : rootlibexecdir,
1658 install : true,
1659 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001660 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001661endif
1662
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001663if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001664 executable('systemd-resolved',
1665 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001666 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001667 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001668 libbasic_gcrypt,
1669 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001670 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001671 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001672 install : true,
1673 install_dir : rootlibexecdir)
1674
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001675 exe = executable('resolvectl',
1676 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001677 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001678 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001679 libbasic_gcrypt,
1680 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001681 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001682 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001683 libm,
1684 libidn],
1685 install_rpath : rootlibexecdir,
1686 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001687 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001688
1689 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001690 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001691 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001692
1693 meson.add_install_script(meson_make_symlink,
1694 join_paths(bindir, 'resolvectl'),
1695 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001696endif
1697
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001698if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001699 executable('systemd-logind',
1700 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001701 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001702 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001703 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001704 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001705 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001706 install_rpath : rootlibexecdir,
1707 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001708 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001709
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001710 exe = executable('loginctl',
1711 loginctl_sources,
1712 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001713 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001714 dependencies : [threads,
1715 liblz4,
1716 libxz],
1717 install_rpath : rootlibexecdir,
1718 install : true,
1719 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001720 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001721
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001722 exe = executable('systemd-inhibit',
1723 'src/login/inhibit.c',
1724 include_directories : includes,
1725 link_with : [libshared],
1726 install_rpath : rootlibexecdir,
1727 install : true,
1728 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001729 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001730
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001731 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001732 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1733 pam_systemd = shared_library(
1734 'pam_systemd',
1735 pam_systemd_c,
1736 name_prefix : '',
1737 include_directories : includes,
1738 link_args : ['-shared',
1739 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001740 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001741 libshared_static],
1742 dependencies : [threads,
1743 libpam,
1744 libpam_misc],
1745 link_depends : pam_systemd_sym,
1746 install : true,
1747 install_dir : pamlibdir)
1748
1749 test('dlopen-pam_systemd',
1750 test_dlopen,
1751 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1752 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001753endif
1754
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001755executable('systemd-user-runtime-dir',
1756 user_runtime_dir_sources,
1757 include_directories : includes,
1758 link_with : [libshared, liblogind_core],
1759 install_rpath : rootlibexecdir,
1760 install : true,
1761 install_dir : rootlibexecdir)
1762
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001763if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001764 executable('systemd-user-sessions',
1765 'src/user-sessions/user-sessions.c',
1766 include_directories : includes,
1767 link_with : [libshared],
1768 install_rpath : rootlibexecdir,
1769 install : true,
1770 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001771endif
1772
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001773if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001774 exe = executable('bootctl',
1775 'src/boot/bootctl.c',
1776 include_directories : includes,
1777 link_with : [libshared],
1778 dependencies : [libblkid],
1779 install_rpath : rootlibexecdir,
1780 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001781 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001782endif
1783
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001784exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1785 include_directories : includes,
1786 link_with : [libshared],
1787 dependencies : [threads],
1788 install_rpath : rootlibexecdir,
1789 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001790public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001791
Felipe Satelerf3794362018-05-22 15:08:57 -04001792
1793if get_option('link-systemctl-shared')
1794 systemctl_link_with = [libshared]
1795else
1796 systemctl_link_with = [libsystemd_static,
1797 libshared_static,
1798 libjournal_client,
1799 libbasic_gcrypt]
1800endif
1801
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001802exe = executable('systemctl', 'src/systemctl/systemctl.c',
1803 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001804 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001805 dependencies : [threads,
1806 libcap,
1807 libselinux,
1808 libxz,
1809 liblz4],
1810 install_rpath : rootlibexecdir,
1811 install : true,
1812 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001813public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001814
Lennart Poettering61d05782018-04-16 21:41:40 +02001815if conf.get('ENABLE_PORTABLED') == 1
1816 executable('systemd-portabled',
1817 systemd_portabled_sources,
1818 include_directories : includes,
1819 link_with : [libshared],
1820 dependencies : [threads],
1821 install_rpath : rootlibexecdir,
1822 install : true,
1823 install_dir : rootlibexecdir)
1824
1825 exe = executable('portablectl', 'src/portable/portablectl.c',
1826 include_directories : includes,
1827 link_with : [libshared],
1828 dependencies : [threads],
1829 install_rpath : rootlibexecdir,
1830 install : true,
1831 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001832 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001833endif
1834
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001835foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1836 meson.add_install_script(meson_make_symlink,
1837 join_paths(rootbindir, 'systemctl'),
1838 join_paths(rootsbindir, alias))
1839endforeach
1840
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001841if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001842 executable('systemd-backlight',
1843 'src/backlight/backlight.c',
1844 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001845 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001846 install_rpath : rootlibexecdir,
1847 install : true,
1848 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001849endif
1850
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001851if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001852 executable('systemd-rfkill',
1853 'src/rfkill/rfkill.c',
1854 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001855 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001856 install_rpath : rootlibexecdir,
1857 install : true,
1858 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001859endif
1860
1861executable('systemd-system-update-generator',
1862 'src/system-update-generator/system-update-generator.c',
1863 include_directories : includes,
1864 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001865 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001866 install : true,
1867 install_dir : systemgeneratordir)
1868
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001869if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001870 executable('systemd-cryptsetup',
1871 'src/cryptsetup/cryptsetup.c',
1872 include_directories : includes,
1873 link_with : [libshared],
1874 dependencies : [libcryptsetup],
1875 install_rpath : rootlibexecdir,
1876 install : true,
1877 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001878
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001879 executable('systemd-cryptsetup-generator',
1880 'src/cryptsetup/cryptsetup-generator.c',
1881 include_directories : includes,
1882 link_with : [libshared],
1883 dependencies : [libcryptsetup],
1884 install_rpath : rootlibexecdir,
1885 install : true,
1886 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001887
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001888 executable('systemd-veritysetup',
1889 'src/veritysetup/veritysetup.c',
1890 include_directories : includes,
1891 link_with : [libshared],
1892 dependencies : [libcryptsetup],
1893 install_rpath : rootlibexecdir,
1894 install : true,
1895 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001896
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001897 executable('systemd-veritysetup-generator',
1898 'src/veritysetup/veritysetup-generator.c',
1899 include_directories : includes,
1900 link_with : [libshared],
1901 dependencies : [libcryptsetup],
1902 install_rpath : rootlibexecdir,
1903 install : true,
1904 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001905endif
1906
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001907if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001908 executable('systemd-sysv-generator',
1909 'src/sysv-generator/sysv-generator.c',
1910 include_directories : includes,
1911 link_with : [libshared],
1912 install_rpath : rootlibexecdir,
1913 install : true,
1914 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001915
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001916 executable('systemd-rc-local-generator',
1917 'src/rc-local-generator/rc-local-generator.c',
1918 include_directories : includes,
1919 link_with : [libshared],
1920 install_rpath : rootlibexecdir,
1921 install : true,
1922 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001923endif
1924
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001925if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001926 executable('systemd-hostnamed',
1927 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001928 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001929 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001930 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001931 install : true,
1932 install_dir : rootlibexecdir)
1933
1934 exe = executable('hostnamectl',
1935 'src/hostname/hostnamectl.c',
1936 include_directories : includes,
1937 link_with : [libshared],
1938 install_rpath : rootlibexecdir,
1939 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001940 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001941endif
1942
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001943if conf.get('ENABLE_LOCALED') == 1
1944 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001945 # logind will load libxkbcommon.so dynamically on its own
1946 deps = [libdl]
1947 else
1948 deps = []
1949 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001950
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001951 executable('systemd-localed',
1952 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001953 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001954 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001955 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001956 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001957 install : true,
1958 install_dir : rootlibexecdir)
1959
1960 exe = executable('localectl',
1961 localectl_sources,
1962 include_directories : includes,
1963 link_with : [libshared],
1964 install_rpath : rootlibexecdir,
1965 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001966 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001967endif
1968
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001969if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001970 executable('systemd-timedated',
1971 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001972 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001973 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001974 install_rpath : rootlibexecdir,
1975 install : true,
1976 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09001977endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001978
Yu Watanabe6129ec82018-05-03 18:07:43 +09001979if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001980 exe = executable('timedatectl',
1981 'src/timedate/timedatectl.c',
1982 include_directories : includes,
1983 install_rpath : rootlibexecdir,
1984 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09001985 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001986 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001987 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001988endif
1989
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001990if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001991 executable('systemd-timesyncd',
1992 systemd_timesyncd_sources,
1993 include_directories : includes,
1994 link_with : [libshared],
1995 dependencies : [threads,
1996 libm],
1997 install_rpath : rootlibexecdir,
1998 install : true,
1999 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002000
2001 executable('systemd-time-wait-sync',
2002 'src/time-wait-sync/time-wait-sync.c',
2003 include_directories : includes,
2004 link_with : [libshared],
2005 install_rpath : rootlibexecdir,
2006 install : true,
2007 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002008endif
2009
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002010if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002011 executable('systemd-machined',
2012 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002013 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002014 link_with : [libmachine_core,
2015 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002016 install_rpath : rootlibexecdir,
2017 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002018 install_dir : rootlibexecdir)
2019
2020 exe = executable('machinectl',
2021 'src/machine/machinectl.c',
2022 include_directories : includes,
2023 link_with : [libshared],
2024 dependencies : [threads,
2025 libxz,
2026 liblz4],
2027 install_rpath : rootlibexecdir,
2028 install : true,
2029 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002030 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002031endif
2032
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002033if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002034 executable('systemd-importd',
2035 systemd_importd_sources,
2036 include_directories : includes,
2037 link_with : [libshared],
2038 dependencies : [threads],
2039 install_rpath : rootlibexecdir,
2040 install : true,
2041 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002042
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002043 systemd_pull = executable('systemd-pull',
2044 systemd_pull_sources,
2045 include_directories : includes,
2046 link_with : [libshared],
2047 dependencies : [libcurl,
2048 libz,
2049 libbzip2,
2050 libxz,
2051 libgcrypt],
2052 install_rpath : rootlibexecdir,
2053 install : true,
2054 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002055
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002056 systemd_import = executable('systemd-import',
2057 systemd_import_sources,
2058 include_directories : includes,
2059 link_with : [libshared],
2060 dependencies : [libcurl,
2061 libz,
2062 libbzip2,
2063 libxz],
2064 install_rpath : rootlibexecdir,
2065 install : true,
2066 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002067
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002068 systemd_export = executable('systemd-export',
2069 systemd_export_sources,
2070 include_directories : includes,
2071 link_with : [libshared],
2072 dependencies : [libcurl,
2073 libz,
2074 libbzip2,
2075 libxz],
2076 install_rpath : rootlibexecdir,
2077 install : true,
2078 install_dir : rootlibexecdir)
2079 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002080endif
2081
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002082if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002083 exe = executable('systemd-journal-upload',
2084 systemd_journal_upload_sources,
2085 include_directories : includes,
2086 link_with : [libshared],
2087 dependencies : [threads,
2088 libcurl,
2089 libgnutls,
2090 libxz,
2091 liblz4],
2092 install_rpath : rootlibexecdir,
2093 install : true,
2094 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002095 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002096endif
2097
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002098if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002099 s_j_remote = executable('systemd-journal-remote',
2100 systemd_journal_remote_sources,
2101 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002102 link_with : [libshared,
2103 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002104 dependencies : [threads,
2105 libmicrohttpd,
2106 libgnutls,
2107 libxz,
2108 liblz4],
2109 install_rpath : rootlibexecdir,
2110 install : true,
2111 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002112
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002113 s_j_gatewayd = executable('systemd-journal-gatewayd',
2114 systemd_journal_gatewayd_sources,
2115 include_directories : includes,
2116 link_with : [libshared],
2117 dependencies : [threads,
2118 libmicrohttpd,
2119 libgnutls,
2120 libxz,
2121 liblz4],
2122 install_rpath : rootlibexecdir,
2123 install : true,
2124 install_dir : rootlibexecdir)
2125 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002126endif
2127
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002128if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002129 executable('systemd-coredump',
2130 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002131 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002132 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002133 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002134 libacl,
2135 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002136 libxz,
2137 liblz4],
2138 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002139 install : true,
2140 install_dir : rootlibexecdir)
2141
2142 exe = executable('coredumpctl',
2143 coredumpctl_sources,
2144 include_directories : includes,
2145 link_with : [libshared],
2146 dependencies : [threads,
2147 libxz,
2148 liblz4],
2149 install_rpath : rootlibexecdir,
2150 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002151 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002152endif
2153
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002154if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002155 exe = executable('systemd-binfmt',
2156 'src/binfmt/binfmt.c',
2157 include_directories : includes,
2158 link_with : [libshared],
2159 install_rpath : rootlibexecdir,
2160 install : true,
2161 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002162 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002163
2164 meson.add_install_script('sh', '-c',
2165 mkdir_p.format(binfmtdir))
2166 meson.add_install_script('sh', '-c',
2167 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2168endif
2169
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002170if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002171 executable('systemd-vconsole-setup',
2172 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002173 include_directories : includes,
2174 link_with : [libshared],
2175 install_rpath : rootlibexecdir,
2176 install : true,
2177 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002178endif
2179
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002180if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002181 executable('systemd-random-seed',
2182 'src/random-seed/random-seed.c',
2183 include_directories : includes,
2184 link_with : [libshared],
2185 install_rpath : rootlibexecdir,
2186 install : true,
2187 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002188endif
2189
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002190if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002191 executable('systemd-firstboot',
2192 'src/firstboot/firstboot.c',
2193 include_directories : includes,
2194 link_with : [libshared],
2195 dependencies : [libcrypt],
2196 install_rpath : rootlibexecdir,
2197 install : true,
2198 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002199endif
2200
2201executable('systemd-remount-fs',
2202 'src/remount-fs/remount-fs.c',
2203 'src/core/mount-setup.c',
2204 'src/core/mount-setup.h',
2205 include_directories : includes,
2206 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002207 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002208 install : true,
2209 install_dir : rootlibexecdir)
2210
2211executable('systemd-machine-id-setup',
2212 'src/machine-id-setup/machine-id-setup-main.c',
2213 'src/core/machine-id-setup.c',
2214 'src/core/machine-id-setup.h',
2215 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002216 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002217 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002218 install : true,
2219 install_dir : rootbindir)
2220
2221executable('systemd-fsck',
2222 'src/fsck/fsck.c',
2223 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002224 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002225 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002226 install : true,
2227 install_dir : rootlibexecdir)
2228
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002229executable('systemd-growfs',
2230 'src/partition/growfs.c',
2231 include_directories : includes,
2232 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002233 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002234 install_rpath : rootlibexecdir,
2235 install : true,
2236 install_dir : rootlibexecdir)
2237
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002238executable('systemd-makefs',
2239 'src/partition/makefs.c',
2240 include_directories : includes,
2241 link_with : [libshared],
2242 install_rpath : rootlibexecdir,
2243 install : true,
2244 install_dir : rootlibexecdir)
2245
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002246executable('systemd-sleep',
2247 'src/sleep/sleep.c',
2248 include_directories : includes,
2249 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002250 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002251 install : true,
2252 install_dir : rootlibexecdir)
2253
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002254exe = executable('systemd-sysctl',
2255 'src/sysctl/sysctl.c',
2256 include_directories : includes,
2257 link_with : [libshared],
2258 install_rpath : rootlibexecdir,
2259 install : true,
2260 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002261public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002262
2263executable('systemd-ac-power',
2264 'src/ac-power/ac-power.c',
2265 include_directories : includes,
2266 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002267 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002268 install : true,
2269 install_dir : rootlibexecdir)
2270
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002271exe = executable('systemd-detect-virt',
2272 'src/detect-virt/detect-virt.c',
2273 include_directories : includes,
2274 link_with : [libshared],
2275 install_rpath : rootlibexecdir,
2276 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002277public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002278
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002279exe = executable('systemd-delta',
2280 'src/delta/delta.c',
2281 include_directories : includes,
2282 link_with : [libshared],
2283 install_rpath : rootlibexecdir,
2284 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002285public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002286
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002287exe = executable('systemd-escape',
2288 'src/escape/escape.c',
2289 include_directories : includes,
2290 link_with : [libshared],
2291 install_rpath : rootlibexecdir,
2292 install : true,
2293 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002294public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002295
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002296exe = executable('systemd-notify',
2297 'src/notify/notify.c',
2298 include_directories : includes,
2299 link_with : [libshared],
2300 install_rpath : rootlibexecdir,
2301 install : true,
2302 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002303public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002304
2305executable('systemd-volatile-root',
2306 'src/volatile-root/volatile-root.c',
2307 include_directories : includes,
2308 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002309 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002310 install : true,
2311 install_dir : rootlibexecdir)
2312
2313executable('systemd-cgroups-agent',
2314 'src/cgroups-agent/cgroups-agent.c',
2315 include_directories : includes,
2316 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002317 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002318 install : true,
2319 install_dir : rootlibexecdir)
2320
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002321exe = executable('systemd-path',
2322 'src/path/path.c',
2323 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002324 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002325 install_rpath : rootlibexecdir,
2326 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002327public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002328
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002329exe = executable('systemd-ask-password',
2330 'src/ask-password/ask-password.c',
2331 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002332 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002333 install_rpath : rootlibexecdir,
2334 install : true,
2335 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002336public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002337
2338executable('systemd-reply-password',
2339 'src/reply-password/reply-password.c',
2340 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002341 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002342 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002343 install : true,
2344 install_dir : rootlibexecdir)
2345
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002346exe = executable('systemd-tty-ask-password-agent',
2347 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2348 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002349 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002350 install_rpath : rootlibexecdir,
2351 install : true,
2352 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002353public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002354
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002355exe = executable('systemd-cgls',
2356 'src/cgls/cgls.c',
2357 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002358 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002359 install_rpath : rootlibexecdir,
2360 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002361public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002362
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002363exe = executable('systemd-cgtop',
2364 'src/cgtop/cgtop.c',
2365 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002366 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002367 install_rpath : rootlibexecdir,
2368 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002369public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002370
2371executable('systemd-initctl',
2372 'src/initctl/initctl.c',
2373 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002374 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002375 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002376 install : true,
2377 install_dir : rootlibexecdir)
2378
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002379exe = executable('systemd-mount',
2380 'src/mount/mount-tool.c',
2381 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002382 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002383 install_rpath : rootlibexecdir,
2384 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002385public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002386
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002387meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002388 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002389
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002390exe = executable('systemd-run',
2391 'src/run/run.c',
2392 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002393 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002394 install_rpath : rootlibexecdir,
2395 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002396public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002397
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002398exe = executable('systemd-stdio-bridge',
2399 'src/stdio-bridge/stdio-bridge.c',
2400 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002401 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002402 install_rpath : rootlibexecdir,
2403 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002404public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002405
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002406exe = executable('busctl',
2407 'src/busctl/busctl.c',
2408 'src/busctl/busctl-introspect.c',
2409 'src/busctl/busctl-introspect.h',
2410 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002411 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002412 install_rpath : rootlibexecdir,
2413 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002414public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002415
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002416if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002417 exe = executable('systemd-sysusers',
2418 'src/sysusers/sysusers.c',
2419 include_directories : includes,
2420 link_with : [libshared],
2421 install_rpath : rootlibexecdir,
2422 install : true,
2423 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002424 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002425endif
2426
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002427if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002428 exe = executable('systemd-tmpfiles',
2429 'src/tmpfiles/tmpfiles.c',
2430 include_directories : includes,
2431 link_with : [libshared],
2432 dependencies : [libacl],
2433 install_rpath : rootlibexecdir,
2434 install : true,
2435 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002436 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002437
2438 test('test-systemd-tmpfiles',
2439 test_systemd_tmpfiles_py,
2440 args : exe.full_path())
2441 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002442endif
2443
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002444if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002445 exe = executable('systemd-hwdb',
2446 'src/hwdb/hwdb.c',
2447 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2448 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002449 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002450 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002451 install : true,
2452 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002453 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002454endif
2455
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002456if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002457 executable('systemd-quotacheck',
2458 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002459 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002460 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002461 install_rpath : rootlibexecdir,
2462 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002463 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002464endif
2465
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002466exe = executable('systemd-socket-proxyd',
2467 'src/socket-proxy/socket-proxyd.c',
2468 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002469 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002470 dependencies : [threads],
2471 install_rpath : rootlibexecdir,
2472 install : true,
2473 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002474public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002475
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002476exe = executable('systemd-udevd',
2477 systemd_udevd_sources,
2478 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002479 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002480 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002481 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002482 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002483 dependencies : [threads,
2484 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002485 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002486 libacl,
2487 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002488 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002489 install : true,
2490 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002491public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002492
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002493exe = executable('udevadm',
2494 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002495 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002496 include_directories : includes,
2497 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002498 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002499 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002500 dependencies : [threads,
2501 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002502 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002503 libacl,
2504 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002505 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002506 install : true,
2507 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002508public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002509
2510executable('systemd-shutdown',
2511 systemd_shutdown_sources,
2512 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002513 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002514 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002515 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002516 install : true,
2517 install_dir : rootlibexecdir)
2518
2519executable('systemd-update-done',
2520 'src/update-done/update-done.c',
2521 include_directories : includes,
2522 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002523 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002524 install : true,
2525 install_dir : rootlibexecdir)
2526
2527executable('systemd-update-utmp',
2528 'src/update-utmp/update-utmp.c',
2529 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002530 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002531 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002532 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002533 install : true,
2534 install_dir : rootlibexecdir)
2535
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002536if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002537 executable('systemd-modules-load',
2538 'src/modules-load/modules-load.c',
2539 include_directories : includes,
2540 link_with : [libshared],
2541 dependencies : [libkmod],
2542 install_rpath : rootlibexecdir,
2543 install : true,
2544 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002545
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002546 meson.add_install_script('sh', '-c',
2547 mkdir_p.format(modulesloaddir))
2548 meson.add_install_script('sh', '-c',
2549 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002550endif
2551
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002552exe = executable('systemd-nspawn',
2553 systemd_nspawn_sources,
2554 'src/core/mount-setup.c', # FIXME: use a variable?
2555 'src/core/mount-setup.h',
2556 'src/core/loopback-setup.c',
2557 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002558 include_directories : includes,
2559 link_with : [libnspawn_core,
2560 libshared],
2561 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002562 install_rpath : rootlibexecdir,
2563 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002564public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002565
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002566if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002567 executable('systemd-networkd',
2568 systemd_networkd_sources,
2569 include_directories : includes,
2570 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002571 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002572 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002573 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002574 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002575 install_rpath : rootlibexecdir,
2576 install : true,
2577 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002578
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002579 executable('systemd-networkd-wait-online',
2580 systemd_networkd_wait_online_sources,
2581 include_directories : includes,
2582 link_with : [libnetworkd_core,
2583 libshared],
2584 install_rpath : rootlibexecdir,
2585 install : true,
2586 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002587
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002588 exe = executable('networkctl',
2589 networkctl_sources,
2590 include_directories : includes,
2591 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002592 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002593 install_rpath : rootlibexecdir,
2594 install : true,
2595 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002596 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002597endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002598
2599executable('systemd-sulogin-shell',
2600 ['src/sulogin-shell/sulogin-shell.c'],
2601 include_directories : includes,
2602 link_with : [libshared],
2603 install_rpath : rootlibexecdir,
2604 install : true,
2605 install_dir : rootlibexecdir)
2606
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002607############################################################
2608
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002609custom_target(
2610 'systemd-runtest.env',
2611 output : 'systemd-runtest.env',
2612 command : ['sh', '-c', '{ ' +
2613 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(meson.current_source_dir(), 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002614 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002615 '} >@OUTPUT@'],
2616 build_by_default : true)
2617
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002618foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002619 sources = tuple[0]
2620 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2621 dependencies = tuple[2]
2622 condition = tuple.length() >= 4 ? tuple[3] : ''
2623 type = tuple.length() >= 5 ? tuple[4] : ''
2624 defs = tuple.length() >= 6 ? tuple[5] : []
2625 incs = tuple.length() >= 7 ? tuple[6] : includes
2626 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002627
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002628 name = sources[0].split('/')[-1].split('.')[0]
2629 if type.startswith('timeout=')
2630 timeout = type.split('=')[1].to_int()
2631 type = ''
2632 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002633 if want_tests == 'false'
2634 message('Not compiling @0@ because tests is set to false'.format(name))
2635 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002636 exe = executable(
2637 name,
2638 sources,
2639 include_directories : incs,
2640 link_with : link_with,
2641 dependencies : dependencies,
2642 c_args : defs,
2643 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002644 install : install_tests,
2645 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002646
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002647 if type == 'manual'
2648 message('@0@ is a manual test'.format(name))
2649 elif type == 'unsafe' and want_tests != 'unsafe'
2650 message('@0@ is an unsafe test'.format(name))
2651 else
2652 test(name, exe,
2653 env : test_env,
2654 timeout : timeout)
2655 endif
2656 else
2657 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2658 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002659endforeach
2660
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002661exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002662 'test-libsystemd-sym',
2663 test_libsystemd_sym_c,
2664 include_directories : includes,
2665 link_with : [libsystemd],
2666 install : install_tests,
2667 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002668test('test-libsystemd-sym', exe)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002669
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002670exe = executable(
2671 'test-libsystemd-static-sym',
2672 test_libsystemd_sym_c,
2673 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002674 link_with : [install_libsystemd_static],
2675 dependencies : [threads], # threads is already included in dependencies on the library,
2676 # but does not seem to get propagated. Add here as a work-around.
Davide Cavalca20f3d322018-04-24 13:34:48 -07002677 build_by_default : static_libsystemd_pic,
2678 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002679 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002680if static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002681 test('test-libsystemd-static-sym', exe)
2682endif
2683
2684exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002685 'test-libudev-sym',
2686 test_libudev_sym_c,
2687 include_directories : includes,
2688 c_args : ['-Wno-deprecated-declarations'],
2689 link_with : [libudev],
2690 install : install_tests,
2691 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002692test('test-libudev-sym', exe)
2693
2694exe = executable(
2695 'test-libudev-static-sym',
2696 test_libudev_sym_c,
2697 include_directories : includes,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002698 c_args : ['-Wno-deprecated-declarations'],
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002699 link_with : [install_libudev_static],
Davide Cavalca20f3d322018-04-24 13:34:48 -07002700 build_by_default : static_libudev_pic,
2701 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002702 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002703if static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002704 test('test-libudev-static-sym', exe)
2705endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002706
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002707############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002708
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002709fuzzer_exes = []
2710
2711foreach tuple : fuzzers
2712 sources = tuple[0]
2713 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2714 dependencies = tuple[2]
2715 defs = tuple.length() >= 4 ? tuple[3] : []
2716 incs = tuple.length() >= 5 ? tuple[4] : includes
2717
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002718 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002719 dependencies += fuzzing_engine
2720 else
2721 sources += 'src/fuzz/fuzz-main.c'
2722 endif
2723
2724 name = sources[0].split('/')[-1].split('.')[0]
2725
2726 fuzzer_exes += executable(
2727 name,
2728 sources,
2729 include_directories : [incs, include_directories('src/fuzz')],
2730 link_with : link_with,
2731 dependencies : dependencies,
2732 c_args : defs,
2733 install : false)
2734endforeach
2735
2736run_target('fuzzers',
2737 depends : fuzzer_exes,
2738 command : ['true'])
2739
2740############################################################
2741
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002742make_directive_index_py = find_program('tools/make-directive-index.py')
2743make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002744xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002745hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002746
2747subdir('units')
2748subdir('sysctl.d')
2749subdir('sysusers.d')
2750subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002751subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002752subdir('hwdb')
2753subdir('network')
2754subdir('man')
2755subdir('shell-completion/bash')
2756subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002757subdir('docs/sysvinit')
2758subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002759
2760# FIXME: figure out if the warning is true:
2761# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2762install_subdir('factory/etc',
2763 install_dir : factorydir)
2764
2765
2766install_data('xorg/50-systemd-user.sh',
2767 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002768install_data('modprobe.d/systemd.conf',
2769 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002770install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002771 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002772 'NEWS',
2773 'README',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002774 'docs/CODING_STYLE',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002775 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002776 'docs/ENVIRONMENT.md',
2777 'docs/HACKING',
2778 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002779 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002780 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002781 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2782 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002783
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002784meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2785meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2786
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002787############################################################
2788
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002789meson_check_help = find_program('tools/meson-check-help.sh')
2790
2791foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002792 name = exec.full_path().split('/')[-1]
2793 test('check-help-' + name,
2794 meson_check_help,
2795 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002796endforeach
2797
2798############################################################
2799
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002800# Enable tests for all supported sanitizers
2801foreach tuple : sanitizers
2802 sanitizer = tuple[0]
2803 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002804
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002805 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002806 prev = ''
2807 foreach p : fuzz_regression_tests
2808 b = p.split('/')[-2]
2809 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002810
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002811 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002812
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002813 if name != prev
2814 if want_tests == 'false'
2815 message('Not compiling @0@ because tests is set to false'.format(name))
2816 elif slow_tests
2817 exe = custom_target(
2818 name,
2819 output : name,
2820 depends : build,
2821 command : [env, 'ln', '-fs',
2822 join_paths(build.full_path(), b),
2823 '@OUTPUT@'],
2824 build_by_default : true)
2825 else
2826 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2827 endif
2828 endif
2829 prev = name
2830
2831 if want_tests != 'false' and slow_tests
2832 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2833 env,
2834 args : [exe.full_path(),
2835 join_paths(meson.source_root(),
2836 'test/fuzz-regressions',
2837 p)])
2838 endif
2839 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002840 endif
2841endforeach
2842
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002843
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002844############################################################
2845
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002846if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002847 all_files = run_command(
2848 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002849 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002850 'ls-files',
2851 ':/*.[ch]'])
2852 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002853
userwithuide85a6902017-08-09 13:41:44 +00002854 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002855 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002856 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002857 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00002858 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002859 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002860 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002861endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002862
2863if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002864 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002865 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002866 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002867 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002868endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002869
2870if git.found()
2871 git_head = run_command(
2872 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002873 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002874 'rev-parse', 'HEAD']).stdout().strip()
2875 git_head_short = run_command(
2876 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002877 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002878 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2879
2880 run_target(
2881 'git-snapshot',
2882 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002883 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002884 git_head_short),
2885 '--prefix', 'systemd-@0@/'.format(git_head),
2886 'HEAD'])
2887endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002888
2889############################################################
2890
Lennart Poettering51b13862017-12-20 12:51:14 +01002891meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2892run_target(
2893 'check-api-docs',
2894 depends : [man, libsystemd, libudev],
2895 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2896
2897############################################################
2898
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002899status = [
2900 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2901
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002902 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002903 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002904 'prefix directory: @0@'.format(prefixdir),
2905 'rootprefix directory: @0@'.format(rootprefixdir),
2906 'sysconf directory: @0@'.format(sysconfdir),
2907 'include directory: @0@'.format(includedir),
2908 'lib directory: @0@'.format(libdir),
2909 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002910 'SysV init scripts: @0@'.format(sysvinit_path),
2911 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002912 'PAM modules directory: @0@'.format(pamlibdir),
2913 'PAM configuration directory: @0@'.format(pamconfdir),
2914 'RPM macros directory: @0@'.format(rpmmacrosdir),
2915 'modprobe.d directory: @0@'.format(modprobedir),
2916 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2917 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2918 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2919 'bash completions directory: @0@'.format(bashcompletiondir),
2920 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002921 'extra start script: @0@'.format(get_option('rc-local')),
2922 'extra stop script: @0@'.format(get_option('halt-local')),
2923 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2924 get_option('debug-tty')),
2925 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09002926 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002927 'maximum system UID: @0@'.format(system_uid_max),
2928 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002929 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2930 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2931 'minimum container UID base: @0@'.format(container_uid_base_min),
2932 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002933 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002934 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002935 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002936 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002937 'nobody user name: @0@'.format(nobody_user),
2938 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002939 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002940 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002941
2942 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02002943 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002944 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2945 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2946
2947alt_dns_servers = '\n '.join(dns_servers.split(' '))
2948alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2949status += [
2950 'default DNS servers: @0@'.format(alt_dns_servers),
2951 'default NTP servers: @0@'.format(alt_ntp_servers)]
2952
2953alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2954 '@@0@'.format(time_epoch)).stdout().strip()
2955status += [
2956 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2957
2958# TODO:
2959# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2960# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2961# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2962
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002963if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002964 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002965
2966 if have_gnu_efi
2967 status += [
2968 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2969 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002970 'EFI lib directory: @0@'.format(efi_libdir),
2971 'EFI lds directory: @0@'.format(efi_ldsdir),
2972 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002973 endif
2974endif
2975
2976found = []
2977missing = []
2978
2979foreach tuple : [
2980 ['libcryptsetup'],
2981 ['PAM'],
2982 ['AUDIT'],
2983 ['IMA'],
2984 ['AppArmor'],
2985 ['SELinux'],
2986 ['SECCOMP'],
2987 ['SMACK'],
2988 ['zlib'],
2989 ['xz'],
2990 ['lz4'],
2991 ['bzip2'],
2992 ['ACL'],
2993 ['gcrypt'],
2994 ['qrencode'],
2995 ['microhttpd'],
2996 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01002997 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002998 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002999 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003000 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003001 ['libidn'],
3002 ['libiptc'],
3003 ['elfutils'],
3004 ['binfmt'],
3005 ['vconsole'],
3006 ['quotacheck'],
3007 ['tmpfiles'],
3008 ['environment.d'],
3009 ['sysusers'],
3010 ['firstboot'],
3011 ['randomseed'],
3012 ['backlight'],
3013 ['rfkill'],
3014 ['logind'],
3015 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003016 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003017 ['importd'],
3018 ['hostnamed'],
3019 ['timedated'],
3020 ['timesyncd'],
3021 ['localed'],
3022 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003023 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003024 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3025 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003026 ['coredump'],
3027 ['polkit'],
3028 ['legacy pkla', install_polkit_pkla],
3029 ['efi'],
3030 ['gnu-efi', have_gnu_efi],
3031 ['kmod'],
3032 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003033 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003034 ['blkid'],
3035 ['dbus'],
3036 ['glib'],
Yu Watanabe08540a92018-07-18 09:25:57 +09003037 ['nss-myhostname', conf.get('ENABLE_NSS_MYHOSTNAME') == 1],
3038 ['nss-mymachines', conf.get('ENABLE_NSS_MYMACHINES') == 1],
3039 ['nss-resolve', conf.get('ENABLE_NSS_RESOLVE') == 1],
3040 ['nss-systemd', conf.get('ENABLE_NSS_SYSTEMD') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003041 ['hwdb'],
3042 ['tpm'],
3043 ['man pages', want_man],
3044 ['html pages', want_html],
3045 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003046 ['SysV compat'],
3047 ['utmp'],
3048 ['ldconfig'],
3049 ['hibernate'],
3050 ['adm group', get_option('adm-group')],
3051 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003052 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003053 ['debug hashmap'],
3054 ['debug mmap cache'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003055 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003056]
3057
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003058 if tuple.length() >= 2
3059 cond = tuple[1]
3060 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003061 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3062 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003063 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003064 endif
3065 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003066 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003067 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003068 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003069 endif
3070endforeach
3071
3072status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003073 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003074 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003075 '',
3076 'disabled features: @0@'.format(', '.join(missing)),
3077 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003078message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003079
3080if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003081 warning('\n' +
3082 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3083 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3084 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003085endif