blob: 28fd4da3650e4c9e09bea70fdf42c82c767d3fcf [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
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200273want_tests = get_option('tests')
274slow_tests = want_tests != 'false' and get_option('slow-tests')
275install_tests = get_option('install-tests')
276
277if want_tests != 'false'
Adam Duskett08318a22018-01-15 06:25:46 -0500278 cxx = find_program('c++', required : false)
279 if cxx.found()
280 # Used only for tests
281 add_languages('cpp')
282 endif
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400283endif
284
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500285want_ossfuzz = get_option('oss-fuzz')
286want_libfuzzer = get_option('llvm-fuzz')
287fuzzer_build = want_ossfuzz or want_libfuzzer
288if want_ossfuzz and want_libfuzzer
289 error('only one of oss-fuzz and llvm-fuzz can be specified')
290endif
291if want_libfuzzer
292 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
293endif
294if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500295 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
296endif
297
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900298possible_cc_flags = [
299 '-Wextra',
300 '-Werror=undef',
301 '-Wlogical-op',
302 '-Wmissing-include-dirs',
303 '-Wold-style-definition',
304 '-Wpointer-arith',
305 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900306 '-Wfloat-equal',
307 '-Wsuggest-attribute=noreturn',
308 '-Werror=missing-prototypes',
309 '-Werror=implicit-function-declaration',
310 '-Werror=missing-declarations',
311 '-Werror=return-type',
312 '-Werror=incompatible-pointer-types',
313 '-Werror=format=2',
314 '-Wstrict-prototypes',
315 '-Wredundant-decls',
316 '-Wmissing-noreturn',
317 '-Wimplicit-fallthrough=5',
318 '-Wshadow',
319 '-Wendif-labels',
320 '-Wstrict-aliasing=2',
321 '-Wwrite-strings',
322 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200323 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200324 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900325 '-Wdate-time',
326 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700327
328 # negative arguments are correctly detected starting with meson 0.46.
329 '-Wno-unused-parameter',
330 '-Wno-missing-field-initializers',
331 '-Wno-unused-result',
332 '-Wno-format-signedness',
333
334 # work-around for gcc 7.1 turning this on on its own.
335 '-Wno-error=nonnull',
336
337 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
338 # optimizations enabled, producing essentially false positives.
339 '-Wno-maybe-uninitialized',
340
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900341 '-ffast-math',
342 '-fno-common',
343 '-fdiagnostics-show-option',
344 '-fno-strict-aliasing',
345 '-fvisibility=hidden',
346 '-fstack-protector',
347 '-fstack-protector-strong',
348 '--param=ssp-buffer-size=4',
349]
350
351# --as-needed and --no-undefined are provided by meson by default,
352# run mesonconf to see what is enabled
353possible_link_flags = [
354 '-Wl,-z,relro',
355 '-Wl,-z,now',
356]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400357
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500358# the oss-fuzz fuzzers are not built with -fPIE, so don't
359# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500360if not fuzzer_build
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900361 possible_cc_flags += '-fPIE'
362 possible_link_flags += '-pie'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500363endif
364
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900365if cc.get_id() == 'clang'
366 possible_cc_flags += [
367 '-Wno-typedef-redefinition',
368 '-Wno-gnu-variable-sized-type-not-at-end',
369 ]
370endif
371
372if get_option('buildtype') != 'debug'
373 possible_cc_flags += [
374 '-ffunction-sections',
375 '-fdata-sections',
376 ]
377
378 possible_link_flags += '-Wl,--gc-sections'
379endif
380
381add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900382add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900383
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800384if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400385 #include <time.h>
386 #include <inttypes.h>
387 typedef uint64_t usec_t;
388 usec_t now(clockid_t clock);
389 int main(void) {
390 struct timespec now;
391 return 0;
392 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800393''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400394 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400395endif
396
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400397cpp = ' '.join(cc.cmd_array()) + ' -E'
398
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400399#####################################################################
400# compilation result tests
401
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400402conf.set('_GNU_SOURCE', true)
403conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400404
405conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
406conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
407conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
408conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
409conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
410conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
411conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
412
413decl_headers = '''
414#include <uchar.h>
415#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000416#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100417#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400418'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400419
420foreach decl : ['char16_t',
421 'char32_t',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400422 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000423 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100424 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400425 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400426
427 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200428 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
429
430 if decl == 'struct statx'
431 if have
432 want_linux_stat_h = false
433 else
434 have = cc.sizeof(decl,
435 prefix : decl_headers + '#include <linux/stat.h>',
436 args : '-D_GNU_SOURCE') > 0
437 want_linux_stat_h = have
438 endif
439 endif
440
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200441 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400442endforeach
443
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200444conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700445
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400446foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
447 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
448 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
449 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530450 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400451 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
452 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
453 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
454 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
455 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530456 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400457 # if_tunnel.h is buggy and cannot be included on its own
458 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
459 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
460 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
461 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
462 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
463 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
464 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530465 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400466 ['NDA_IFINDEX', 'linux/neighbour.h'],
467 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000468 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400469 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530470 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Susant Sahani53cb5012018-06-03 12:37:41 +0530471 ['FOU_ATTR_REMCSUM_NOPARTIAL', 'linux/fou.h'],
472 ['FOU_CMD_GET', 'linux/fou.h'],
473 ['FOU_ENCAP_GUE', 'linux/fou.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400474 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400475 prefix = decl.length() > 2 ? decl[2] : ''
476 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200477 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400478endforeach
479
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400480foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200481 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400482endforeach
483
484foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100485 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100486 ['gettid', '''#include <sys/types.h>
487 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100488 ['pivot_root', '''#include <stdlib.h>
489 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100490 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400491 #include <sys/stat.h>
492 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100493 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100494 ['renameat2', '''#include <stdio.h>
495 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400496 ['kcmp', '''#include <linux/kcmp.h>'''],
497 ['keyctl', '''#include <sys/types.h>
498 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100499 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400500 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200501 ['bpf', '''#include <sys/syscall.h>
502 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100503 ['statx', '''#include <sys/types.h>
504 #include <sys/stat.h>
505 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100506 ['explicit_bzero' , '''#include <string.h>'''],
507 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400508]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400509
Lennart Poettering85db59b2017-12-25 12:01:14 +0100510 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200511 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400512endforeach
513
Lennart Poettering85db59b2017-12-25 12:01:14 +0100514if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200515 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200516 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400517else
518 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200519 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200520 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400521endif
522
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400523#####################################################################
524
525sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400526awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400527m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400528stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400529git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100530env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100531perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400532
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400533meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400534mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400535test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
536splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400537
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400538# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
539# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500540progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400541 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400542 ['kmod', '/usr/bin/kmod' ],
543 ['kexec', '/usr/sbin/kexec' ],
544 ['sulogin', '/usr/sbin/sulogin' ],
545 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
546 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
547 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
548 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
549 ]
550foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400551 path = get_option(prog[0] + '-path')
552 if path != ''
553 message('Using @1@ for @0@'.format(prog[0], path))
554 else
555 exe = find_program(prog[0],
556 '/usr/sbin/' + prog[0],
557 '/sbin/' + prog[0],
558 required: false)
559 path = exe.found() ? exe.path() : prog[1]
560 endif
561 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
562 conf.set_quoted(name, path)
563 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400564endforeach
565
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500566conf.set_quoted('TELINIT', get_option('telinit-path'))
567
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400568if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100569 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400570endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400571
572############################################################
573
574gperf = find_program('gperf')
575
576gperf_test_format = '''
577#include <string.h>
578const char * in_word_set(const char *, @0@);
579@1@
580'''
581gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
582gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
583gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
584if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400585 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400586else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400587 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
588 if cc.compiles(gperf_test)
589 gperf_len_type = 'unsigned'
590 else
591 error('unable to determine gperf len type')
592 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400593endif
594message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400595conf.set('GPERF_LEN_TYPE', gperf_len_type,
596 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400597
598############################################################
599
600if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400601 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400602endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100603foreach header : ['crypt.h',
604 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400605 'linux/memfd.h',
606 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200607 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400608 'valgrind/memcheck.h',
609 'valgrind/valgrind.h',
610 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400611
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200612 conf.set10('HAVE_' + header.underscorify().to_upper(),
613 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400614endforeach
615
616############################################################
617
618conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400619conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
620gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400621
622default_hierarchy = get_option('default-hierarchy')
623conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
624 description : 'default cgroup hierarchy as string')
625if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400626 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400627elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400628 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400629else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400630 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400631endif
632
633time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900634if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400635 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900636 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400637endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400638conf.set('TIME_EPOCH', time_epoch)
639
640system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900641if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400642 system_uid_max = run_command(
643 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800644 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
645 '/etc/login.defs').stdout().strip()
646 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900647 system_uid_max = 999
648 else
649 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800650 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400651endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400652conf.set('SYSTEM_UID_MAX', system_uid_max)
653substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400654
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400655system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900656if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400657 system_gid_max = run_command(
658 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800659 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
660 '/etc/login.defs').stdout().strip()
661 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900662 system_gid_max = 999
663 else
664 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800665 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400666endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400667conf.set('SYSTEM_GID_MAX', system_gid_max)
668substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400669
Yu Watanabeac093402018-05-10 16:04:16 +0900670dynamic_uid_min = get_option('dynamic-uid-min')
671dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100672conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
673conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
674substs.set('dynamicuidmin', dynamic_uid_min)
675substs.set('dynamicuidmax', dynamic_uid_max)
676
Yu Watanabeac093402018-05-10 16:04:16 +0900677container_uid_base_min = get_option('container-uid-base-min')
678container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100679conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
680conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
681substs.set('containeruidbasemin', container_uid_base_min)
682substs.set('containeruidbasemax', container_uid_base_max)
683
Lennart Poetteringafde4572017-12-05 11:00:24 +0100684nobody_user = get_option('nobody-user')
685nobody_group = get_option('nobody-group')
686
Chen Qi2484bff2018-07-23 14:53:09 +0800687if not meson.is_cross_build()
688 getent_result = run_command('getent', 'passwd', '65534')
689 if getent_result.returncode() == 0
690 name = getent_result.stdout().split(':')[0]
691 if name != nobody_user
692 warning('\n' +
693 'The local user with the UID 65534 does not match the configured user name "@0@" of the nobody user (its name is @1@).\n'.format(nobody_user, name) +
694 'Your build will result in an user table setup that is incompatible with the local system.')
695 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100696 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800697 id_result = run_command('id', '-u', nobody_user)
698 if id_result.returncode() == 0
699 id = id_result.stdout().to_int()
700 if id != 65534
701 warning('\n' +
702 'The local user with the configured user name "@0@" of the nobody user does not have UID 65534 (it has @1@).\n'.format(nobody_user, id) +
703 'Your build will result in an user table setup that is incompatible with the local system.')
704 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100705 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100706
Chen Qi2484bff2018-07-23 14:53:09 +0800707 getent_result = run_command('getent', 'group', '65534')
708 if getent_result.returncode() == 0
709 name = getent_result.stdout().split(':')[0]
710 if name != nobody_group
711 warning('\n' +
712 'The local group with the GID 65534 does not match the configured group name "@0@" of the nobody group (its name is @1@).\n'.format(nobody_group, name) +
713 'Your build will result in an group table setup that is incompatible with the local system.')
714 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100715 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800716 id_result = run_command('id', '-g', nobody_group)
717 if id_result.returncode() == 0
718 id = id_result.stdout().to_int()
719 if id != 65534
720 warning('\n' +
721 'The local group with the configured group name "@0@" of the nobody group does not have UID 65534 (it has @1@).\n'.format(nobody_group, id) +
722 'Your build will result in an group table setup that is incompatible with the local system.')
723 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100724 endif
725endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900726if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900727 warning('\n' +
728 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
729 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900730endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100731
732conf.set_quoted('NOBODY_USER_NAME', nobody_user)
733conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900734substs.set('NOBODY_USER_NAME', nobody_user)
735substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100736
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400737tty_gid = get_option('tty-gid')
738conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400739substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400740
Ikey Doherty84786b82017-12-03 12:28:23 +0000741# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900742users_gid = get_option('users-gid')
743substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000744
Yu Watanabe348b4432018-05-07 18:17:35 +0900745conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
746conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400747
Michael Bieblace5e312018-07-13 23:36:13 +0200748dev_kvm_mode = get_option('dev-kvm-mode')
749substs.set('DEV_KVM_MODE', dev_kvm_mode)
750conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Tom Stellard4e15a732017-10-31 08:46:24 -0700751substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400752
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400753kill_user_processes = get_option('default-kill-user-processes')
754conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100755conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400756substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400757
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400758dns_servers = get_option('dns-servers')
759conf.set_quoted('DNS_SERVERS', dns_servers)
760substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400761
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400762ntp_servers = get_option('ntp-servers')
763conf.set_quoted('NTP_SERVERS', ntp_servers)
764substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400765
766conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
767
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400768substs.set('SUSHELL', get_option('debug-shell'))
769substs.set('DEBUGTTY', get_option('debug-tty'))
770
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200771enable_debug_hashmap = false
772enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200773foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900774 if name == 'hashmap'
775 enable_debug_hashmap = true
776 elif name == 'mmap-cache'
777 enable_debug_mmap_cache = true
778 else
779 message('unknown debug option "@0@", ignoring'.format(name))
780 endif
781endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200782conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
783conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400784
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200785conf.set10('VALGRIND', get_option('valgrind'))
786
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400787#####################################################################
788
789threads = dependency('threads')
790librt = cc.find_library('rt')
791libm = cc.find_library('m')
792libdl = cc.find_library('dl')
793libcrypt = cc.find_library('crypt')
794
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400795libcap = dependency('libcap', required : false)
796if not libcap.found()
797 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
798 libcap = cc.find_library('cap')
799endif
800
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400801libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100802 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400803
804want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500805if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400806 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400807 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400808 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200809 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400810else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200811 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400812 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400813endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200814conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400815
816want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500817if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400818 libselinux = dependency('libselinux',
819 version : '>= 2.1.9',
820 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200821 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400822else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200823 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400824 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400825endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200826conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400827
828want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500829if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400830 libapparmor = dependency('libapparmor',
831 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200832 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400833else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200834 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400835 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400836endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200837conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400838
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400839smack_run_label = get_option('smack-run-label')
840if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400841 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400842endif
843
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400844want_polkit = get_option('polkit')
845install_polkit = false
846install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500847if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400848 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400849
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400850 libpolkit = dependency('polkit-gobject-1',
851 required : false)
852 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
853 message('Old polkit detected, will install pkla files')
854 install_polkit_pkla = true
855 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400856endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200857conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400858
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400859want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500860if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400861 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200862 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400863else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200864 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400865 libacl = []
866endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200867conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400868
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400869want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500870if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400871 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200872 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400873else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200874 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400875 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400876endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200877conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400878
879want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500880if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400881 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200882 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400883else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200884 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400885 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400886endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200887conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400888
889want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500890if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400891 libkmod = dependency('libkmod',
892 version : '>= 15',
893 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200894 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400895else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200896 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400897 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400898endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400900
901want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500902if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400903 libpam = cc.find_library('pam', required : want_pam == 'true')
904 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200905 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400906else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200907 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400908 libpam = []
909 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400910endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200911conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400912
913want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500914if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400915 libmicrohttpd = dependency('libmicrohttpd',
916 version : '>= 0.9.33',
917 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200918 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400919else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200920 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400921 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400922endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200923conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400924
925want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500926if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400927 libcryptsetup = dependency('libcryptsetup',
928 version : '>= 1.6.0',
929 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200930 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100931 have_sector = cc.has_member(
932 'struct crypt_params_plain',
933 'sector_size',
934 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400935else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200936 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100937 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400938 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400939endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200940conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100941conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400942
943want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500944if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400945 libcurl = dependency('libcurl',
946 version : '>= 7.32.0',
947 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200948 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400949else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200950 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400951 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400952endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200953conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400954
955want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400956want_libidn2 = get_option('libidn2')
957if want_libidn == 'true' and want_libidn2 == 'true'
958 error('libidn and libidn2 cannot be requested simultaneously')
959endif
960
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500961if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400962 libidn = dependency('libidn',
963 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200964 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400965else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200966 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400967 libidn = []
968endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200969conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500970if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400971 # libidn is used for both libidn and libidn2 objects
972 libidn = dependency('libidn2',
973 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200974 have = libidn.found()
975else
976 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400977endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200978conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400979
980want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500981if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400982 libiptc = dependency('libiptc',
983 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200984 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400985else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200986 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400987 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400988endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200989conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400990
991want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500992if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400993 libqrencode = dependency('libqrencode',
994 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200995 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400996else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200997 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400998 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400999endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001000conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001001
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001002want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001003if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001004 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1005 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001006 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001007else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001008 have = false
1009endif
1010if not have
1011 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001012 libgcrypt = []
1013 libgpg_error = []
1014endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001015conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001016
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001017want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001018if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001019 libgnutls = dependency('gnutls',
1020 version : '>= 3.1.4',
1021 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001022 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001023else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001024 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001025 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001026endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001027conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001028
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001029want_openssl = get_option('openssl')
1030if want_openssl != 'false' and not fuzzer_build
1031 libopenssl = dependency('openssl',
1032 version : '>= 1.1.0',
1033 required : want_openssl == 'true')
1034 have = libopenssl.found()
1035else
1036 have = false
1037 libopenssl = []
1038endif
1039conf.set10('HAVE_OPENSSL', have)
1040
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001041want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001042if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001043 libdw = dependency('libdw',
1044 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001045 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001046else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001047 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001048 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001049endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001050conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001051
1052want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001053if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001054 libz = dependency('zlib',
1055 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001056 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001057else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001058 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001059 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001060endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001061conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001062
1063want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001064if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001065 libbzip2 = cc.find_library('bz2',
1066 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001067 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001068else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001069 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001070 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001071endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001072conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001073
1074want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001075if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001076 libxz = dependency('liblzma',
1077 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001079else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001081 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001082endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001083conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001084
1085want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001086if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001087 liblz4 = dependency('liblz4',
1088 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001089 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001090else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001091 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001092 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001093endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001094conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001095
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001096want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001097if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001098 libxkbcommon = dependency('xkbcommon',
1099 version : '>= 0.3.0',
1100 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001101 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001102else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001103 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001104 libxkbcommon = []
1105endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001106conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001107
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001108want_pcre2 = get_option('pcre2')
1109if want_pcre2 != 'false'
1110 libpcre2 = dependency('libpcre2-8',
1111 required : want_pcre2 == 'true')
1112 have = libpcre2.found()
1113else
1114 have = false
1115 libpcre2 = []
1116endif
1117conf.set10('HAVE_PCRE2', have)
1118
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001119want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001120if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001121 libglib = dependency('glib-2.0',
1122 version : '>= 2.22.0',
1123 required : want_glib == 'true')
1124 libgobject = dependency('gobject-2.0',
1125 version : '>= 2.22.0',
1126 required : want_glib == 'true')
1127 libgio = dependency('gio-2.0',
1128 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001129 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001130else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001131 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001132 libglib = []
1133 libgobject = []
1134 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001135endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001136conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001137
1138want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001139if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001140 libdbus = dependency('dbus-1',
1141 version : '>= 1.3.2',
1142 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001143 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001144else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001145 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001146 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001147endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001148conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001149
Yu Watanabe42303dc2017-06-18 05:22:32 +09001150default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001151if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001152 default_dnssec = 'no'
1153endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001154if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001155 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1156 default_dnssec = 'no'
1157endif
1158conf.set('DEFAULT_DNSSEC_MODE',
1159 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1160substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1161
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001162dns_over_tls = get_option('dns-over-tls')
1163if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001164 if dns_over_tls == 'openssl'
1165 have_gnutls = false
1166 else
1167 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1168 if dns_over_tls == 'gnutls' and not have_gnutls
1169 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1170 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001171 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001172 if dns_over_tls == 'gnutls' or have_gnutls
1173 have_openssl = false
1174 else
1175 have_openssl = conf.get('HAVE_OPENSSL') == 1
1176 if dns_over_tls != 'auto' and not have_openssl
1177 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1178 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1179 endif
1180 endif
1181 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001182else
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001183 have = have_gnutls = have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001184endif
1185conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001186conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1187conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001188
Iwan Timmerc9299be2018-06-13 20:26:24 +02001189default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001190if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001191 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001192endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001193if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1194 message('default-dns-over-tls cannot be set to opportunistic when DNS-over-TLS support is disabled. Setting default-dns-over-tls to no.')
Iwan Timmerc9299be2018-06-13 20:26:24 +02001195 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001196endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001197conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1198 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1199substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001200
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001201want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001202if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001203 have = (conf.get('HAVE_LIBCURL') == 1 and
1204 conf.get('HAVE_ZLIB') == 1 and
1205 conf.get('HAVE_BZIP2') == 1 and
1206 conf.get('HAVE_XZ') == 1 and
1207 conf.get('HAVE_GCRYPT') == 1)
1208 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001209 error('importd support was requested, but dependencies are not available')
1210 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001211else
1212 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001213endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001214conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001215
1216want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001217if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001218 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1219 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001220 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1221 # it's possible to build one without the other. Complain only if
1222 # support was explictly requested. The auxiliary files like sysusers
1223 # config should be installed when any of the programs are built.
1224 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1225 error('remote support was requested, but dependencies are not available')
1226 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001227 have = have_deps[0] or have_deps[1]
1228else
1229 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001230endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001231conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001232
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001233foreach term : ['utmp',
1234 'hibernate',
1235 'environment-d',
1236 'binfmt',
1237 'coredump',
1238 'resolve',
1239 'logind',
1240 'hostnamed',
1241 'localed',
1242 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001243 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001244 'networkd',
1245 'timedated',
1246 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001247 'firstboot',
1248 'randomseed',
1249 'backlight',
1250 'vconsole',
1251 'quotacheck',
1252 'sysusers',
1253 'tmpfiles',
1254 'hwdb',
1255 'rfkill',
1256 'ldconfig',
1257 'efi',
1258 'tpm',
1259 'ima',
1260 'smack',
1261 'gshadow',
1262 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001263 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001264 'nss-systemd']
1265 have = get_option(term)
1266 name = 'ENABLE_' + term.underscorify().to_upper()
1267 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001268endforeach
1269
Yu Watanabe08540a92018-07-18 09:25:57 +09001270foreach tuple : [['nss-mymachines', 'machined'],
1271 ['nss-resolve', 'resolve']]
1272 want = get_option(tuple[0])
1273 if want != 'false'
1274 have = get_option(tuple[1])
1275 if want == 'true' and not have
1276 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1277 endif
1278 else
1279 have = false
1280 endif
1281 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1282 conf.set10(name, have)
1283endforeach
1284
1285enable_nss = false
1286foreach term : ['ENABLE_NSS_MYHOSTNAME',
1287 'ENABLE_NSS_MYMACHINES',
1288 'ENABLE_NSS_RESOLVE',
1289 'ENABLE_NSS_SYSTEMD']
1290 if conf.get(term) == 1
1291 enable_nss = true
1292 endif
1293endforeach
1294conf.set10('ENABLE_NSS', enable_nss)
1295
Yu Watanabe348b4432018-05-07 18:17:35 +09001296conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001297
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001298tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001299fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001300
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001301conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001302
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001303#####################################################################
1304
1305if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001306 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001307
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001308 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001309 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001310 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001311 elif efi_arch == 'x86_64'
1312 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001313 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001314 elif efi_arch == 'arm'
1315 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001316 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001317 elif efi_arch == 'aarch64'
1318 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001319 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001320 else
1321 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001322 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001323 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001324
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001325 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001326 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001327
Yu Watanabeac093402018-05-10 16:04:16 +09001328 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001329else
1330 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001331endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001332conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001333
1334#####################################################################
1335
1336config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001337 output : 'config.h',
1338 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001339
Yu Watanabe348b4432018-05-07 18:17:35 +09001340meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1341
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001342includes = include_directories('src/basic',
1343 'src/shared',
1344 'src/systemd',
1345 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001346 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001347 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001348 'src/resolve',
1349 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001350 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001351 'src/login',
1352 'src/udev',
1353 'src/libudev',
1354 'src/core',
1355 'src/libsystemd/sd-bus',
1356 'src/libsystemd/sd-device',
1357 'src/libsystemd/sd-hwdb',
1358 'src/libsystemd/sd-id128',
1359 'src/libsystemd/sd-netlink',
1360 'src/libsystemd/sd-network',
1361 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001362 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001363
1364add_project_arguments('-include', 'config.h', language : 'c')
1365
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001366subdir('po')
1367subdir('catalog')
1368subdir('src/systemd')
1369subdir('src/basic')
1370subdir('src/libsystemd')
1371subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001372subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001373subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001374
1375libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001376 'journal-core',
1377 libjournal_core_sources,
1378 journald_gperf_c,
1379 include_directories : includes,
1380 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001381
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001382libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001383libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001384 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001385 '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 +02001386 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001387 include_directories : includes,
1388 link_args : ['-shared',
1389 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001390 link_with : [libbasic,
1391 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001392 link_whole : [libsystemd_static,
1393 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001394 dependencies : [threads,
1395 librt,
1396 libxz,
1397 liblz4],
1398 link_depends : libsystemd_sym,
1399 install : true,
1400 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001401
Davide Cavalca70848ec2018-04-09 02:43:35 -07001402static_libsystemd = get_option('static-libsystemd')
1403static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1404
1405install_libsystemd_static = static_library(
1406 'systemd',
1407 libsystemd_sources,
1408 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001409 basic_sources,
1410 basic_gcrypt_sources,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001411 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001412 build_by_default : static_libsystemd != 'false',
1413 install : static_libsystemd != 'false',
1414 install_dir : rootlibdir,
1415 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1416 dependencies : [threads,
1417 librt,
1418 libxz,
1419 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001420 libcap,
1421 libblkid,
1422 libmount,
1423 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001424 libgcrypt],
1425 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1426
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001427############################################################
1428
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001429# binaries that have --help and are intended for use by humans,
1430# usually, but not always, installed in /bin.
1431public_programs = []
1432
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001433subdir('src/libudev')
1434subdir('src/shared')
1435subdir('src/core')
1436subdir('src/udev')
1437subdir('src/network')
1438
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001439subdir('src/analyze')
1440subdir('src/journal-remote')
1441subdir('src/coredump')
1442subdir('src/hostname')
1443subdir('src/import')
1444subdir('src/kernel-install')
1445subdir('src/locale')
1446subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001447subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001448subdir('src/nspawn')
1449subdir('src/resolve')
1450subdir('src/timedate')
1451subdir('src/timesync')
1452subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001453subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001454
1455subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001456subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001457subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001458subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001459
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001460############################################################
1461
1462# only static linking apart from libdl, to make sure that the
1463# module is linked to all libraries that it uses.
1464test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001465 'test-dlopen',
1466 test_dlopen_c,
1467 include_directories : includes,
1468 link_with : [libbasic],
1469 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001470
Yu Watanabe08540a92018-07-18 09:25:57 +09001471foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001472 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001473 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1474 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001475
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001476 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001477 if condition
1478 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001479
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001480 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1481 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001482
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001483 nss = shared_library(
1484 'nss_' + module,
1485 'src/nss-@0@/nss-@0@.c'.format(module),
1486 version : '2',
1487 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001488 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1489 link_args : ['-Wl,-z,nodelete',
1490 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001491 '-Wl,--version-script=' + version_script_arg,
1492 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001493 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001494 libbasic],
1495 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001496 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001497 link_depends : sym,
1498 install : true,
1499 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001500
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001501 # We cannot use shared_module because it does not support version suffix.
1502 # Unfortunately shared_library insists on creating the symlink…
1503 meson.add_install_script('sh', '-c',
1504 'rm $DESTDIR@0@/libnss_@1@.so'
1505 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001506
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001507 test('dlopen-nss_' + module,
1508 test_dlopen,
1509 args : [nss.full_path()]) # path to dlopen must include a slash
1510 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001511endforeach
1512
1513############################################################
1514
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001515executable('systemd',
1516 systemd_sources,
1517 include_directories : includes,
1518 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001519 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001520 dependencies : [threads,
1521 librt,
1522 libseccomp,
1523 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001524 libmount,
1525 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001526 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001527 install : true,
1528 install_dir : rootlibexecdir)
1529
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001530meson.add_install_script(meson_make_symlink,
1531 join_paths(rootlibexecdir, 'systemd'),
1532 join_paths(rootsbindir, 'init'))
1533
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001534exe = executable('systemd-analyze',
1535 systemd_analyze_sources,
1536 include_directories : includes,
1537 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001538 libshared],
1539 dependencies : [threads,
1540 librt,
1541 libseccomp,
1542 libselinux,
1543 libmount,
1544 libblkid],
1545 install_rpath : rootlibexecdir,
1546 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001547public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001548
1549executable('systemd-journald',
1550 systemd_journald_sources,
1551 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001552 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001553 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001554 dependencies : [threads,
1555 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001556 liblz4,
1557 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001558 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001559 install : true,
1560 install_dir : rootlibexecdir)
1561
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001562exe = executable('systemd-cat',
1563 systemd_cat_sources,
1564 include_directories : includes,
1565 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001566 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001567 dependencies : [threads],
1568 install_rpath : rootlibexecdir,
1569 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001570public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001571
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001572exe = executable('journalctl',
1573 journalctl_sources,
1574 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001575 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001576 dependencies : [threads,
1577 libqrencode,
1578 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001579 liblz4,
1580 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001581 install_rpath : rootlibexecdir,
1582 install : true,
1583 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001584public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001585
1586executable('systemd-getty-generator',
1587 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001588 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001589 link_with : [libshared],
1590 install_rpath : rootlibexecdir,
1591 install : true,
1592 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001593
1594executable('systemd-debug-generator',
1595 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001596 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001597 link_with : [libshared],
1598 install_rpath : rootlibexecdir,
1599 install : true,
1600 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001601
1602executable('systemd-fstab-generator',
1603 'src/fstab-generator/fstab-generator.c',
1604 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001605 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001606 link_with : [libshared],
1607 install_rpath : rootlibexecdir,
1608 install : true,
1609 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001610
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001611if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001612 executable('30-systemd-environment-d-generator',
1613 'src/environment-d-generator/environment-d-generator.c',
1614 include_directories : includes,
1615 link_with : [libshared],
1616 install_rpath : rootlibexecdir,
1617 install : true,
1618 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001619
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001620 meson.add_install_script(meson_make_symlink,
1621 join_paths(sysconfdir, 'environment'),
1622 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001623endif
1624
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001625if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001626 executable('systemd-hibernate-resume-generator',
1627 'src/hibernate-resume/hibernate-resume-generator.c',
1628 include_directories : includes,
1629 link_with : [libshared],
1630 install_rpath : rootlibexecdir,
1631 install : true,
1632 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001633
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001634 executable('systemd-hibernate-resume',
1635 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001636 include_directories : includes,
1637 link_with : [libshared],
1638 install_rpath : rootlibexecdir,
1639 install : true,
1640 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001641endif
1642
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001643if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001644 executable('systemd-gpt-auto-generator',
1645 'src/gpt-auto-generator/gpt-auto-generator.c',
1646 'src/basic/blkid-util.h',
1647 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001648 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001649 dependencies : libblkid,
1650 install_rpath : rootlibexecdir,
1651 install : true,
1652 install_dir : systemgeneratordir)
1653
1654 exe = executable('systemd-dissect',
1655 'src/dissect/dissect.c',
1656 include_directories : includes,
1657 link_with : [libshared],
1658 install_rpath : rootlibexecdir,
1659 install : true,
1660 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001661 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001662endif
1663
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001664if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001665 executable('systemd-resolved',
1666 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001667 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001668 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001669 libbasic_gcrypt,
1670 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001671 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001672 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001673 install : true,
1674 install_dir : rootlibexecdir)
1675
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001676 exe = executable('resolvectl',
1677 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001678 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001679 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001680 libbasic_gcrypt,
1681 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001682 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001683 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001684 libm,
1685 libidn],
1686 install_rpath : rootlibexecdir,
1687 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001688 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001689
1690 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001691 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001692 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001693
1694 meson.add_install_script(meson_make_symlink,
1695 join_paths(bindir, 'resolvectl'),
1696 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001697endif
1698
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001699if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001700 executable('systemd-logind',
1701 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001702 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001703 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001704 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001705 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001706 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001707 install_rpath : rootlibexecdir,
1708 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001709 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001710
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001711 exe = executable('loginctl',
1712 loginctl_sources,
1713 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001714 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001715 dependencies : [threads,
1716 liblz4,
1717 libxz],
1718 install_rpath : rootlibexecdir,
1719 install : true,
1720 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001721 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001722
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001723 exe = executable('systemd-inhibit',
1724 'src/login/inhibit.c',
1725 include_directories : includes,
1726 link_with : [libshared],
1727 install_rpath : rootlibexecdir,
1728 install : true,
1729 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001730 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001731
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001732 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001733 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1734 pam_systemd = shared_library(
1735 'pam_systemd',
1736 pam_systemd_c,
1737 name_prefix : '',
1738 include_directories : includes,
1739 link_args : ['-shared',
1740 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001741 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001742 libshared_static],
1743 dependencies : [threads,
1744 libpam,
1745 libpam_misc],
1746 link_depends : pam_systemd_sym,
1747 install : true,
1748 install_dir : pamlibdir)
1749
1750 test('dlopen-pam_systemd',
1751 test_dlopen,
1752 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1753 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001754endif
1755
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001756executable('systemd-user-runtime-dir',
1757 user_runtime_dir_sources,
1758 include_directories : includes,
1759 link_with : [libshared, liblogind_core],
1760 install_rpath : rootlibexecdir,
1761 install : true,
1762 install_dir : rootlibexecdir)
1763
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001764if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001765 executable('systemd-user-sessions',
1766 'src/user-sessions/user-sessions.c',
1767 include_directories : includes,
1768 link_with : [libshared],
1769 install_rpath : rootlibexecdir,
1770 install : true,
1771 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001772endif
1773
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001774if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001775 exe = executable('bootctl',
1776 'src/boot/bootctl.c',
1777 include_directories : includes,
1778 link_with : [libshared],
1779 dependencies : [libblkid],
1780 install_rpath : rootlibexecdir,
1781 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001782 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001783endif
1784
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001785exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1786 include_directories : includes,
1787 link_with : [libshared],
1788 dependencies : [threads],
1789 install_rpath : rootlibexecdir,
1790 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001791public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001792
Felipe Satelerf3794362018-05-22 15:08:57 -04001793
1794if get_option('link-systemctl-shared')
1795 systemctl_link_with = [libshared]
1796else
1797 systemctl_link_with = [libsystemd_static,
1798 libshared_static,
1799 libjournal_client,
1800 libbasic_gcrypt]
1801endif
1802
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001803exe = executable('systemctl', 'src/systemctl/systemctl.c',
1804 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001805 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001806 dependencies : [threads,
1807 libcap,
1808 libselinux,
1809 libxz,
1810 liblz4],
1811 install_rpath : rootlibexecdir,
1812 install : true,
1813 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001814public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001815
Lennart Poettering61d05782018-04-16 21:41:40 +02001816if conf.get('ENABLE_PORTABLED') == 1
1817 executable('systemd-portabled',
1818 systemd_portabled_sources,
1819 include_directories : includes,
1820 link_with : [libshared],
1821 dependencies : [threads],
1822 install_rpath : rootlibexecdir,
1823 install : true,
1824 install_dir : rootlibexecdir)
1825
1826 exe = executable('portablectl', 'src/portable/portablectl.c',
1827 include_directories : includes,
1828 link_with : [libshared],
1829 dependencies : [threads],
1830 install_rpath : rootlibexecdir,
1831 install : true,
1832 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001833 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001834endif
1835
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001836foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1837 meson.add_install_script(meson_make_symlink,
1838 join_paths(rootbindir, 'systemctl'),
1839 join_paths(rootsbindir, alias))
1840endforeach
1841
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001842if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001843 executable('systemd-backlight',
1844 'src/backlight/backlight.c',
1845 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001846 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001847 install_rpath : rootlibexecdir,
1848 install : true,
1849 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001850endif
1851
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001852if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001853 executable('systemd-rfkill',
1854 'src/rfkill/rfkill.c',
1855 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001856 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001857 install_rpath : rootlibexecdir,
1858 install : true,
1859 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001860endif
1861
1862executable('systemd-system-update-generator',
1863 'src/system-update-generator/system-update-generator.c',
1864 include_directories : includes,
1865 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001866 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001867 install : true,
1868 install_dir : systemgeneratordir)
1869
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001870if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001871 executable('systemd-cryptsetup',
1872 'src/cryptsetup/cryptsetup.c',
1873 include_directories : includes,
1874 link_with : [libshared],
1875 dependencies : [libcryptsetup],
1876 install_rpath : rootlibexecdir,
1877 install : true,
1878 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001879
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001880 executable('systemd-cryptsetup-generator',
1881 'src/cryptsetup/cryptsetup-generator.c',
1882 include_directories : includes,
1883 link_with : [libshared],
1884 dependencies : [libcryptsetup],
1885 install_rpath : rootlibexecdir,
1886 install : true,
1887 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001888
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001889 executable('systemd-veritysetup',
1890 'src/veritysetup/veritysetup.c',
1891 include_directories : includes,
1892 link_with : [libshared],
1893 dependencies : [libcryptsetup],
1894 install_rpath : rootlibexecdir,
1895 install : true,
1896 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001897
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001898 executable('systemd-veritysetup-generator',
1899 'src/veritysetup/veritysetup-generator.c',
1900 include_directories : includes,
1901 link_with : [libshared],
1902 dependencies : [libcryptsetup],
1903 install_rpath : rootlibexecdir,
1904 install : true,
1905 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001906endif
1907
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001908if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001909 executable('systemd-sysv-generator',
1910 'src/sysv-generator/sysv-generator.c',
1911 include_directories : includes,
1912 link_with : [libshared],
1913 install_rpath : rootlibexecdir,
1914 install : true,
1915 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001916
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001917 executable('systemd-rc-local-generator',
1918 'src/rc-local-generator/rc-local-generator.c',
1919 include_directories : includes,
1920 link_with : [libshared],
1921 install_rpath : rootlibexecdir,
1922 install : true,
1923 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001924endif
1925
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001926if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001927 executable('systemd-hostnamed',
1928 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001929 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001930 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001931 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001932 install : true,
1933 install_dir : rootlibexecdir)
1934
1935 exe = executable('hostnamectl',
1936 'src/hostname/hostnamectl.c',
1937 include_directories : includes,
1938 link_with : [libshared],
1939 install_rpath : rootlibexecdir,
1940 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001941 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001942endif
1943
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001944if conf.get('ENABLE_LOCALED') == 1
1945 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001946 # logind will load libxkbcommon.so dynamically on its own
1947 deps = [libdl]
1948 else
1949 deps = []
1950 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001951
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001952 executable('systemd-localed',
1953 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001954 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001955 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001956 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001957 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001958 install : true,
1959 install_dir : rootlibexecdir)
1960
1961 exe = executable('localectl',
1962 localectl_sources,
1963 include_directories : includes,
1964 link_with : [libshared],
1965 install_rpath : rootlibexecdir,
1966 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001967 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001968endif
1969
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001970if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001971 executable('systemd-timedated',
1972 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001973 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001974 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001975 install_rpath : rootlibexecdir,
1976 install : true,
1977 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09001978endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001979
Yu Watanabe6129ec82018-05-03 18:07:43 +09001980if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001981 exe = executable('timedatectl',
1982 'src/timedate/timedatectl.c',
1983 include_directories : includes,
1984 install_rpath : rootlibexecdir,
1985 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09001986 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001987 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001988 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001989endif
1990
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001991if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001992 executable('systemd-timesyncd',
1993 systemd_timesyncd_sources,
1994 include_directories : includes,
1995 link_with : [libshared],
1996 dependencies : [threads,
1997 libm],
1998 install_rpath : rootlibexecdir,
1999 install : true,
2000 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002001
2002 executable('systemd-time-wait-sync',
2003 'src/time-wait-sync/time-wait-sync.c',
2004 include_directories : includes,
2005 link_with : [libshared],
2006 install_rpath : rootlibexecdir,
2007 install : true,
2008 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002009endif
2010
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002011if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002012 executable('systemd-machined',
2013 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002014 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002015 link_with : [libmachine_core,
2016 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002017 install_rpath : rootlibexecdir,
2018 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002019 install_dir : rootlibexecdir)
2020
2021 exe = executable('machinectl',
2022 'src/machine/machinectl.c',
2023 include_directories : includes,
2024 link_with : [libshared],
2025 dependencies : [threads,
2026 libxz,
2027 liblz4],
2028 install_rpath : rootlibexecdir,
2029 install : true,
2030 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002031 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002032endif
2033
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002034if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002035 executable('systemd-importd',
2036 systemd_importd_sources,
2037 include_directories : includes,
2038 link_with : [libshared],
2039 dependencies : [threads],
2040 install_rpath : rootlibexecdir,
2041 install : true,
2042 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002043
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002044 systemd_pull = executable('systemd-pull',
2045 systemd_pull_sources,
2046 include_directories : includes,
2047 link_with : [libshared],
2048 dependencies : [libcurl,
2049 libz,
2050 libbzip2,
2051 libxz,
2052 libgcrypt],
2053 install_rpath : rootlibexecdir,
2054 install : true,
2055 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002056
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002057 systemd_import = executable('systemd-import',
2058 systemd_import_sources,
2059 include_directories : includes,
2060 link_with : [libshared],
2061 dependencies : [libcurl,
2062 libz,
2063 libbzip2,
2064 libxz],
2065 install_rpath : rootlibexecdir,
2066 install : true,
2067 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002068
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002069 systemd_export = executable('systemd-export',
2070 systemd_export_sources,
2071 include_directories : includes,
2072 link_with : [libshared],
2073 dependencies : [libcurl,
2074 libz,
2075 libbzip2,
2076 libxz],
2077 install_rpath : rootlibexecdir,
2078 install : true,
2079 install_dir : rootlibexecdir)
2080 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002081endif
2082
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002083if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002084 exe = executable('systemd-journal-upload',
2085 systemd_journal_upload_sources,
2086 include_directories : includes,
2087 link_with : [libshared],
2088 dependencies : [threads,
2089 libcurl,
2090 libgnutls,
2091 libxz,
2092 liblz4],
2093 install_rpath : rootlibexecdir,
2094 install : true,
2095 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002096 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002097endif
2098
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002099if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002100 s_j_remote = executable('systemd-journal-remote',
2101 systemd_journal_remote_sources,
2102 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002103 link_with : [libshared,
2104 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002105 dependencies : [threads,
2106 libmicrohttpd,
2107 libgnutls,
2108 libxz,
2109 liblz4],
2110 install_rpath : rootlibexecdir,
2111 install : true,
2112 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002113
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002114 s_j_gatewayd = executable('systemd-journal-gatewayd',
2115 systemd_journal_gatewayd_sources,
2116 include_directories : includes,
2117 link_with : [libshared],
2118 dependencies : [threads,
2119 libmicrohttpd,
2120 libgnutls,
2121 libxz,
2122 liblz4],
2123 install_rpath : rootlibexecdir,
2124 install : true,
2125 install_dir : rootlibexecdir)
2126 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002127endif
2128
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002129if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002130 executable('systemd-coredump',
2131 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002132 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002133 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002134 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002135 libacl,
2136 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002137 libxz,
2138 liblz4],
2139 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002140 install : true,
2141 install_dir : rootlibexecdir)
2142
2143 exe = executable('coredumpctl',
2144 coredumpctl_sources,
2145 include_directories : includes,
2146 link_with : [libshared],
2147 dependencies : [threads,
2148 libxz,
2149 liblz4],
2150 install_rpath : rootlibexecdir,
2151 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002152 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002153endif
2154
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002155if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002156 exe = executable('systemd-binfmt',
2157 'src/binfmt/binfmt.c',
2158 include_directories : includes,
2159 link_with : [libshared],
2160 install_rpath : rootlibexecdir,
2161 install : true,
2162 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002163 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002164
2165 meson.add_install_script('sh', '-c',
2166 mkdir_p.format(binfmtdir))
2167 meson.add_install_script('sh', '-c',
2168 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2169endif
2170
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002171if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002172 executable('systemd-vconsole-setup',
2173 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002174 include_directories : includes,
2175 link_with : [libshared],
2176 install_rpath : rootlibexecdir,
2177 install : true,
2178 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002179endif
2180
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002181if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002182 executable('systemd-random-seed',
2183 'src/random-seed/random-seed.c',
2184 include_directories : includes,
2185 link_with : [libshared],
2186 install_rpath : rootlibexecdir,
2187 install : true,
2188 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002189endif
2190
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002191if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002192 executable('systemd-firstboot',
2193 'src/firstboot/firstboot.c',
2194 include_directories : includes,
2195 link_with : [libshared],
2196 dependencies : [libcrypt],
2197 install_rpath : rootlibexecdir,
2198 install : true,
2199 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002200endif
2201
2202executable('systemd-remount-fs',
2203 'src/remount-fs/remount-fs.c',
2204 'src/core/mount-setup.c',
2205 'src/core/mount-setup.h',
2206 include_directories : includes,
2207 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002208 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002209 install : true,
2210 install_dir : rootlibexecdir)
2211
2212executable('systemd-machine-id-setup',
2213 'src/machine-id-setup/machine-id-setup-main.c',
2214 'src/core/machine-id-setup.c',
2215 'src/core/machine-id-setup.h',
2216 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002217 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002218 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002219 install : true,
2220 install_dir : rootbindir)
2221
2222executable('systemd-fsck',
2223 'src/fsck/fsck.c',
2224 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002225 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002226 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002227 install : true,
2228 install_dir : rootlibexecdir)
2229
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002230executable('systemd-growfs',
2231 'src/partition/growfs.c',
2232 include_directories : includes,
2233 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002234 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002235 install_rpath : rootlibexecdir,
2236 install : true,
2237 install_dir : rootlibexecdir)
2238
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002239executable('systemd-makefs',
2240 'src/partition/makefs.c',
2241 include_directories : includes,
2242 link_with : [libshared],
2243 install_rpath : rootlibexecdir,
2244 install : true,
2245 install_dir : rootlibexecdir)
2246
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002247executable('systemd-sleep',
2248 'src/sleep/sleep.c',
2249 include_directories : includes,
2250 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002251 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002252 install : true,
2253 install_dir : rootlibexecdir)
2254
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002255exe = executable('systemd-sysctl',
2256 'src/sysctl/sysctl.c',
2257 include_directories : includes,
2258 link_with : [libshared],
2259 install_rpath : rootlibexecdir,
2260 install : true,
2261 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002262public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002263
2264executable('systemd-ac-power',
2265 'src/ac-power/ac-power.c',
2266 include_directories : includes,
2267 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002268 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002269 install : true,
2270 install_dir : rootlibexecdir)
2271
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002272exe = executable('systemd-detect-virt',
2273 'src/detect-virt/detect-virt.c',
2274 include_directories : includes,
2275 link_with : [libshared],
2276 install_rpath : rootlibexecdir,
2277 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002278public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002279
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002280exe = executable('systemd-delta',
2281 'src/delta/delta.c',
2282 include_directories : includes,
2283 link_with : [libshared],
2284 install_rpath : rootlibexecdir,
2285 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002286public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002287
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002288exe = executable('systemd-escape',
2289 'src/escape/escape.c',
2290 include_directories : includes,
2291 link_with : [libshared],
2292 install_rpath : rootlibexecdir,
2293 install : true,
2294 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002295public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002296
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002297exe = executable('systemd-notify',
2298 'src/notify/notify.c',
2299 include_directories : includes,
2300 link_with : [libshared],
2301 install_rpath : rootlibexecdir,
2302 install : true,
2303 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002304public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002305
2306executable('systemd-volatile-root',
2307 'src/volatile-root/volatile-root.c',
2308 include_directories : includes,
2309 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002310 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002311 install : true,
2312 install_dir : rootlibexecdir)
2313
2314executable('systemd-cgroups-agent',
2315 'src/cgroups-agent/cgroups-agent.c',
2316 include_directories : includes,
2317 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002318 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002319 install : true,
2320 install_dir : rootlibexecdir)
2321
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002322exe = executable('systemd-path',
2323 'src/path/path.c',
2324 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002325 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002326 install_rpath : rootlibexecdir,
2327 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002328public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002329
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002330exe = executable('systemd-ask-password',
2331 'src/ask-password/ask-password.c',
2332 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002333 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002334 install_rpath : rootlibexecdir,
2335 install : true,
2336 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002337public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002338
2339executable('systemd-reply-password',
2340 'src/reply-password/reply-password.c',
2341 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002342 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002343 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002344 install : true,
2345 install_dir : rootlibexecdir)
2346
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002347exe = executable('systemd-tty-ask-password-agent',
2348 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2349 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002350 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002351 install_rpath : rootlibexecdir,
2352 install : true,
2353 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002354public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002355
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002356exe = executable('systemd-cgls',
2357 'src/cgls/cgls.c',
2358 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002359 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002360 install_rpath : rootlibexecdir,
2361 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002362public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002363
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002364exe = executable('systemd-cgtop',
2365 'src/cgtop/cgtop.c',
2366 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002367 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002368 install_rpath : rootlibexecdir,
2369 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002370public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002371
2372executable('systemd-initctl',
2373 'src/initctl/initctl.c',
2374 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002375 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002376 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002377 install : true,
2378 install_dir : rootlibexecdir)
2379
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002380exe = executable('systemd-mount',
2381 'src/mount/mount-tool.c',
2382 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002383 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002384 install_rpath : rootlibexecdir,
2385 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002386public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002387
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002388meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002389 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002390
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002391exe = executable('systemd-run',
2392 'src/run/run.c',
2393 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002394 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002395 install_rpath : rootlibexecdir,
2396 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002397public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002398
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002399exe = executable('systemd-stdio-bridge',
2400 'src/stdio-bridge/stdio-bridge.c',
2401 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002402 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002403 install_rpath : rootlibexecdir,
2404 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002405public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002406
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002407exe = executable('busctl',
2408 'src/busctl/busctl.c',
2409 'src/busctl/busctl-introspect.c',
2410 'src/busctl/busctl-introspect.h',
2411 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002412 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002413 install_rpath : rootlibexecdir,
2414 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002415public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002416
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002417if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002418 exe = executable('systemd-sysusers',
2419 'src/sysusers/sysusers.c',
2420 include_directories : includes,
2421 link_with : [libshared],
2422 install_rpath : rootlibexecdir,
2423 install : true,
2424 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002425 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002426endif
2427
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002428if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002429 exe = executable('systemd-tmpfiles',
2430 'src/tmpfiles/tmpfiles.c',
2431 include_directories : includes,
2432 link_with : [libshared],
2433 dependencies : [libacl],
2434 install_rpath : rootlibexecdir,
2435 install : true,
2436 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002437 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002438
2439 test('test-systemd-tmpfiles',
2440 test_systemd_tmpfiles_py,
2441 args : exe.full_path())
2442 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002443endif
2444
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002445if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002446 exe = executable('systemd-hwdb',
2447 'src/hwdb/hwdb.c',
2448 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2449 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002450 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002451 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002452 install : true,
2453 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002454 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002455endif
2456
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002457if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002458 executable('systemd-quotacheck',
2459 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002460 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002461 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002462 install_rpath : rootlibexecdir,
2463 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002464 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002465endif
2466
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002467exe = executable('systemd-socket-proxyd',
2468 'src/socket-proxy/socket-proxyd.c',
2469 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002470 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002471 dependencies : [threads],
2472 install_rpath : rootlibexecdir,
2473 install : true,
2474 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002475public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002476
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002477exe = executable('systemd-udevd',
2478 systemd_udevd_sources,
2479 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002480 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002481 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002482 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002483 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002484 dependencies : [threads,
2485 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002486 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002487 libacl,
2488 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002489 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002490 install : true,
2491 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002492public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002493
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002494exe = executable('udevadm',
2495 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002496 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002497 include_directories : includes,
2498 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002499 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002500 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002501 dependencies : [threads,
2502 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002503 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002504 libacl,
2505 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002506 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002507 install : true,
2508 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002509public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002510
2511executable('systemd-shutdown',
2512 systemd_shutdown_sources,
2513 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002514 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002515 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002516 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002517 install : true,
2518 install_dir : rootlibexecdir)
2519
2520executable('systemd-update-done',
2521 'src/update-done/update-done.c',
2522 include_directories : includes,
2523 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002524 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002525 install : true,
2526 install_dir : rootlibexecdir)
2527
2528executable('systemd-update-utmp',
2529 'src/update-utmp/update-utmp.c',
2530 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002531 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002532 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002533 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002534 install : true,
2535 install_dir : rootlibexecdir)
2536
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002537if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002538 executable('systemd-modules-load',
2539 'src/modules-load/modules-load.c',
2540 include_directories : includes,
2541 link_with : [libshared],
2542 dependencies : [libkmod],
2543 install_rpath : rootlibexecdir,
2544 install : true,
2545 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002546
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002547 meson.add_install_script('sh', '-c',
2548 mkdir_p.format(modulesloaddir))
2549 meson.add_install_script('sh', '-c',
2550 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002551endif
2552
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002553exe = executable('systemd-nspawn',
2554 systemd_nspawn_sources,
2555 'src/core/mount-setup.c', # FIXME: use a variable?
2556 'src/core/mount-setup.h',
2557 'src/core/loopback-setup.c',
2558 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002559 include_directories : includes,
2560 link_with : [libnspawn_core,
2561 libshared],
2562 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002563 install_rpath : rootlibexecdir,
2564 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002565public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002566
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002567if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002568 executable('systemd-networkd',
2569 systemd_networkd_sources,
2570 include_directories : includes,
2571 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002572 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002573 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002574 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002575 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002576 install_rpath : rootlibexecdir,
2577 install : true,
2578 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002579
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002580 executable('systemd-networkd-wait-online',
2581 systemd_networkd_wait_online_sources,
2582 include_directories : includes,
2583 link_with : [libnetworkd_core,
2584 libshared],
2585 install_rpath : rootlibexecdir,
2586 install : true,
2587 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002588
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002589 exe = executable('networkctl',
2590 networkctl_sources,
2591 include_directories : includes,
2592 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002593 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002594 install_rpath : rootlibexecdir,
2595 install : true,
2596 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002597 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002598endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002599
2600executable('systemd-sulogin-shell',
2601 ['src/sulogin-shell/sulogin-shell.c'],
2602 include_directories : includes,
2603 link_with : [libshared],
2604 install_rpath : rootlibexecdir,
2605 install : true,
2606 install_dir : rootlibexecdir)
2607
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002608############################################################
2609
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002610custom_target(
2611 'systemd-runtest.env',
2612 output : 'systemd-runtest.env',
2613 command : ['sh', '-c', '{ ' +
2614 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(meson.current_source_dir(), 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002615 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002616 '} >@OUTPUT@'],
2617 build_by_default : true)
2618
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002619foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002620 sources = tuple[0]
2621 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2622 dependencies = tuple[2]
2623 condition = tuple.length() >= 4 ? tuple[3] : ''
2624 type = tuple.length() >= 5 ? tuple[4] : ''
2625 defs = tuple.length() >= 6 ? tuple[5] : []
2626 incs = tuple.length() >= 7 ? tuple[6] : includes
2627 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002628
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002629 name = sources[0].split('/')[-1].split('.')[0]
2630 if type.startswith('timeout=')
2631 timeout = type.split('=')[1].to_int()
2632 type = ''
2633 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002634 if want_tests == 'false'
2635 message('Not compiling @0@ because tests is set to false'.format(name))
2636 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002637 exe = executable(
2638 name,
2639 sources,
2640 include_directories : incs,
2641 link_with : link_with,
2642 dependencies : dependencies,
2643 c_args : defs,
2644 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002645 install : install_tests,
2646 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002647
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002648 if type == 'manual'
2649 message('@0@ is a manual test'.format(name))
2650 elif type == 'unsafe' and want_tests != 'unsafe'
2651 message('@0@ is an unsafe test'.format(name))
2652 else
2653 test(name, exe,
2654 env : test_env,
2655 timeout : timeout)
2656 endif
2657 else
2658 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2659 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002660endforeach
2661
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002662exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002663 'test-libsystemd-sym',
2664 test_libsystemd_sym_c,
2665 include_directories : includes,
2666 link_with : [libsystemd],
2667 install : install_tests,
2668 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002669test('test-libsystemd-sym', exe)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002670
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002671exe = executable(
2672 'test-libsystemd-static-sym',
2673 test_libsystemd_sym_c,
2674 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002675 link_with : [install_libsystemd_static],
2676 dependencies : [threads], # threads is already included in dependencies on the library,
2677 # but does not seem to get propagated. Add here as a work-around.
Davide Cavalca20f3d322018-04-24 13:34:48 -07002678 build_by_default : static_libsystemd_pic,
2679 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002680 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002681if static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002682 test('test-libsystemd-static-sym', exe)
2683endif
2684
2685exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002686 'test-libudev-sym',
2687 test_libudev_sym_c,
2688 include_directories : includes,
2689 c_args : ['-Wno-deprecated-declarations'],
2690 link_with : [libudev],
2691 install : install_tests,
2692 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002693test('test-libudev-sym', exe)
2694
2695exe = executable(
2696 'test-libudev-static-sym',
2697 test_libudev_sym_c,
2698 include_directories : includes,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002699 c_args : ['-Wno-deprecated-declarations'],
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002700 link_with : [install_libudev_static],
Davide Cavalca20f3d322018-04-24 13:34:48 -07002701 build_by_default : static_libudev_pic,
2702 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002703 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002704if static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002705 test('test-libudev-static-sym', exe)
2706endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002707
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002708############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002709
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002710fuzzer_exes = []
2711
2712foreach tuple : fuzzers
2713 sources = tuple[0]
2714 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2715 dependencies = tuple[2]
2716 defs = tuple.length() >= 4 ? tuple[3] : []
2717 incs = tuple.length() >= 5 ? tuple[4] : includes
2718
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002719 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002720 dependencies += fuzzing_engine
2721 else
2722 sources += 'src/fuzz/fuzz-main.c'
2723 endif
2724
2725 name = sources[0].split('/')[-1].split('.')[0]
2726
2727 fuzzer_exes += executable(
2728 name,
2729 sources,
2730 include_directories : [incs, include_directories('src/fuzz')],
2731 link_with : link_with,
2732 dependencies : dependencies,
2733 c_args : defs,
2734 install : false)
2735endforeach
2736
2737run_target('fuzzers',
2738 depends : fuzzer_exes,
2739 command : ['true'])
2740
2741############################################################
2742
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002743make_directive_index_py = find_program('tools/make-directive-index.py')
2744make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002745xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002746hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002747
2748subdir('units')
2749subdir('sysctl.d')
2750subdir('sysusers.d')
2751subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002752subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002753subdir('hwdb')
2754subdir('network')
2755subdir('man')
2756subdir('shell-completion/bash')
2757subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002758subdir('docs/sysvinit')
2759subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002760
2761# FIXME: figure out if the warning is true:
2762# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2763install_subdir('factory/etc',
2764 install_dir : factorydir)
2765
2766
2767install_data('xorg/50-systemd-user.sh',
2768 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002769install_data('modprobe.d/systemd.conf',
2770 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002771install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002772 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002773 'NEWS',
2774 'README',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002775 'docs/CODING_STYLE',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002776 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002777 'docs/ENVIRONMENT.md',
2778 'docs/HACKING',
2779 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002780 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002781 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002782 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2783 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002784
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002785meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2786meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2787
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002788############################################################
2789
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002790meson_check_help = find_program('tools/meson-check-help.sh')
2791
2792foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002793 name = exec.full_path().split('/')[-1]
2794 test('check-help-' + name,
2795 meson_check_help,
2796 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002797endforeach
2798
2799############################################################
2800
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002801# Enable tests for all supported sanitizers
2802foreach tuple : sanitizers
2803 sanitizer = tuple[0]
2804 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002805
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002806 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002807 prev = ''
2808 foreach p : fuzz_regression_tests
2809 b = p.split('/')[-2]
2810 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002811
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002812 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002813
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002814 if name != prev
2815 if want_tests == 'false'
2816 message('Not compiling @0@ because tests is set to false'.format(name))
2817 elif slow_tests
2818 exe = custom_target(
2819 name,
2820 output : name,
2821 depends : build,
2822 command : [env, 'ln', '-fs',
2823 join_paths(build.full_path(), b),
2824 '@OUTPUT@'],
2825 build_by_default : true)
2826 else
2827 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2828 endif
2829 endif
2830 prev = name
2831
2832 if want_tests != 'false' and slow_tests
2833 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2834 env,
2835 args : [exe.full_path(),
2836 join_paths(meson.source_root(),
2837 'test/fuzz-regressions',
2838 p)])
2839 endif
2840 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002841 endif
2842endforeach
2843
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002844
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002845############################################################
2846
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002847if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002848 all_files = run_command(
2849 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002850 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002851 'ls-files',
2852 ':/*.[ch]'])
2853 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002854
userwithuide85a6902017-08-09 13:41:44 +00002855 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002856 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002857 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002858 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00002859 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002860 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002861 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002862endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002863
2864if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002865 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002866 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002867 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002868 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002869endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002870
2871if git.found()
2872 git_head = run_command(
2873 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002874 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002875 'rev-parse', 'HEAD']).stdout().strip()
2876 git_head_short = run_command(
2877 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002878 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002879 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2880
2881 run_target(
2882 'git-snapshot',
2883 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002884 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002885 git_head_short),
2886 '--prefix', 'systemd-@0@/'.format(git_head),
2887 'HEAD'])
2888endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002889
2890############################################################
2891
Lennart Poettering51b13862017-12-20 12:51:14 +01002892meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2893run_target(
2894 'check-api-docs',
2895 depends : [man, libsystemd, libudev],
2896 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2897
2898############################################################
2899
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002900status = [
2901 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2902
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002903 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002904 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002905 'prefix directory: @0@'.format(prefixdir),
2906 'rootprefix directory: @0@'.format(rootprefixdir),
2907 'sysconf directory: @0@'.format(sysconfdir),
2908 'include directory: @0@'.format(includedir),
2909 'lib directory: @0@'.format(libdir),
2910 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002911 'SysV init scripts: @0@'.format(sysvinit_path),
2912 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002913 'PAM modules directory: @0@'.format(pamlibdir),
2914 'PAM configuration directory: @0@'.format(pamconfdir),
2915 'RPM macros directory: @0@'.format(rpmmacrosdir),
2916 'modprobe.d directory: @0@'.format(modprobedir),
2917 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2918 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2919 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2920 'bash completions directory: @0@'.format(bashcompletiondir),
2921 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002922 'extra start script: @0@'.format(get_option('rc-local')),
2923 'extra stop script: @0@'.format(get_option('halt-local')),
2924 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2925 get_option('debug-tty')),
2926 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09002927 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002928 'maximum system UID: @0@'.format(system_uid_max),
2929 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002930 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2931 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2932 'minimum container UID base: @0@'.format(container_uid_base_min),
2933 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002934 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002935 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002936 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002937 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002938 'nobody user name: @0@'.format(nobody_user),
2939 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002940 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002941 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002942
2943 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02002944 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002945 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2946 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2947
2948alt_dns_servers = '\n '.join(dns_servers.split(' '))
2949alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2950status += [
2951 'default DNS servers: @0@'.format(alt_dns_servers),
2952 'default NTP servers: @0@'.format(alt_ntp_servers)]
2953
2954alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2955 '@@0@'.format(time_epoch)).stdout().strip()
2956status += [
2957 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2958
2959# TODO:
2960# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2961# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2962# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2963
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002964if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002965 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002966
2967 if have_gnu_efi
2968 status += [
2969 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2970 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002971 'EFI lib directory: @0@'.format(efi_libdir),
2972 'EFI lds directory: @0@'.format(efi_ldsdir),
2973 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002974 endif
2975endif
2976
2977found = []
2978missing = []
2979
2980foreach tuple : [
2981 ['libcryptsetup'],
2982 ['PAM'],
2983 ['AUDIT'],
2984 ['IMA'],
2985 ['AppArmor'],
2986 ['SELinux'],
2987 ['SECCOMP'],
2988 ['SMACK'],
2989 ['zlib'],
2990 ['xz'],
2991 ['lz4'],
2992 ['bzip2'],
2993 ['ACL'],
2994 ['gcrypt'],
2995 ['qrencode'],
2996 ['microhttpd'],
2997 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01002998 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002999 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003000 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003001 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003002 ['libidn'],
3003 ['libiptc'],
3004 ['elfutils'],
3005 ['binfmt'],
3006 ['vconsole'],
3007 ['quotacheck'],
3008 ['tmpfiles'],
3009 ['environment.d'],
3010 ['sysusers'],
3011 ['firstboot'],
3012 ['randomseed'],
3013 ['backlight'],
3014 ['rfkill'],
3015 ['logind'],
3016 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003017 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003018 ['importd'],
3019 ['hostnamed'],
3020 ['timedated'],
3021 ['timesyncd'],
3022 ['localed'],
3023 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003024 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003025 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3026 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003027 ['coredump'],
3028 ['polkit'],
3029 ['legacy pkla', install_polkit_pkla],
3030 ['efi'],
3031 ['gnu-efi', have_gnu_efi],
3032 ['kmod'],
3033 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003034 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003035 ['blkid'],
3036 ['dbus'],
3037 ['glib'],
Yu Watanabe08540a92018-07-18 09:25:57 +09003038 ['nss-myhostname', conf.get('ENABLE_NSS_MYHOSTNAME') == 1],
3039 ['nss-mymachines', conf.get('ENABLE_NSS_MYMACHINES') == 1],
3040 ['nss-resolve', conf.get('ENABLE_NSS_RESOLVE') == 1],
3041 ['nss-systemd', conf.get('ENABLE_NSS_SYSTEMD') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003042 ['hwdb'],
3043 ['tpm'],
3044 ['man pages', want_man],
3045 ['html pages', want_html],
3046 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003047 ['SysV compat'],
3048 ['utmp'],
3049 ['ldconfig'],
3050 ['hibernate'],
3051 ['adm group', get_option('adm-group')],
3052 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003053 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003054 ['debug hashmap'],
3055 ['debug mmap cache'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003056 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003057]
3058
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003059 if tuple.length() >= 2
3060 cond = tuple[1]
3061 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003062 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3063 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003064 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003065 endif
3066 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003067 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003068 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003069 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003070 endif
3071endforeach
3072
3073status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003074 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003075 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003076 '',
3077 'disabled features: @0@'.format(', '.join(missing)),
3078 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003079message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003080
3081if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003082 warning('\n' +
3083 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3084 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3085 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003086endif