blob: 09986d58dcde635cd67425f2ac426ffd8aabaff1 [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
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200277cxx = find_program('c++', required : false)
278if cxx.found()
279 # Used only for tests
280 add_languages('cpp')
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400281endif
282
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500283want_ossfuzz = get_option('oss-fuzz')
284want_libfuzzer = get_option('llvm-fuzz')
285fuzzer_build = want_ossfuzz or want_libfuzzer
286if want_ossfuzz and want_libfuzzer
287 error('only one of oss-fuzz and llvm-fuzz can be specified')
288endif
289if want_libfuzzer
290 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
291endif
292if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500293 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
294endif
295
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900296possible_cc_flags = [
297 '-Wextra',
298 '-Werror=undef',
299 '-Wlogical-op',
300 '-Wmissing-include-dirs',
301 '-Wold-style-definition',
302 '-Wpointer-arith',
303 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900304 '-Wfloat-equal',
305 '-Wsuggest-attribute=noreturn',
306 '-Werror=missing-prototypes',
307 '-Werror=implicit-function-declaration',
308 '-Werror=missing-declarations',
309 '-Werror=return-type',
310 '-Werror=incompatible-pointer-types',
311 '-Werror=format=2',
312 '-Wstrict-prototypes',
313 '-Wredundant-decls',
314 '-Wmissing-noreturn',
315 '-Wimplicit-fallthrough=5',
316 '-Wshadow',
317 '-Wendif-labels',
318 '-Wstrict-aliasing=2',
319 '-Wwrite-strings',
320 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200321 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200322 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900323 '-Wdate-time',
324 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700325
326 # negative arguments are correctly detected starting with meson 0.46.
327 '-Wno-unused-parameter',
328 '-Wno-missing-field-initializers',
329 '-Wno-unused-result',
330 '-Wno-format-signedness',
331
332 # work-around for gcc 7.1 turning this on on its own.
333 '-Wno-error=nonnull',
334
335 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
336 # optimizations enabled, producing essentially false positives.
337 '-Wno-maybe-uninitialized',
338
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900339 '-ffast-math',
340 '-fno-common',
341 '-fdiagnostics-show-option',
342 '-fno-strict-aliasing',
343 '-fvisibility=hidden',
344 '-fstack-protector',
345 '-fstack-protector-strong',
346 '--param=ssp-buffer-size=4',
347]
348
349# --as-needed and --no-undefined are provided by meson by default,
350# run mesonconf to see what is enabled
351possible_link_flags = [
352 '-Wl,-z,relro',
353 '-Wl,-z,now',
354]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400355
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500356# the oss-fuzz fuzzers are not built with -fPIE, so don't
357# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500358if not fuzzer_build
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900359 possible_cc_flags += '-fPIE'
360 possible_link_flags += '-pie'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500361endif
362
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900363if cc.get_id() == 'clang'
364 possible_cc_flags += [
365 '-Wno-typedef-redefinition',
366 '-Wno-gnu-variable-sized-type-not-at-end',
367 ]
368endif
369
370if get_option('buildtype') != 'debug'
371 possible_cc_flags += [
372 '-ffunction-sections',
373 '-fdata-sections',
374 ]
375
376 possible_link_flags += '-Wl,--gc-sections'
377endif
378
379add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900380add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900381
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800382if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400383 #include <time.h>
384 #include <inttypes.h>
385 typedef uint64_t usec_t;
386 usec_t now(clockid_t clock);
387 int main(void) {
388 struct timespec now;
389 return 0;
390 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800391''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400392 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400393endif
394
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400395cpp = ' '.join(cc.cmd_array()) + ' -E'
396
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400397#####################################################################
398# compilation result tests
399
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400400conf.set('_GNU_SOURCE', true)
401conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400402
403conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
404conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
405conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
406conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
407conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
408conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
409conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
410
411decl_headers = '''
412#include <uchar.h>
413#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000414#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100415#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400416'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400417
418foreach decl : ['char16_t',
419 'char32_t',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400420 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000421 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100422 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400423 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400424
425 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200426 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
427
428 if decl == 'struct statx'
429 if have
430 want_linux_stat_h = false
431 else
432 have = cc.sizeof(decl,
433 prefix : decl_headers + '#include <linux/stat.h>',
434 args : '-D_GNU_SOURCE') > 0
435 want_linux_stat_h = have
436 endif
437 endif
438
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200439 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400440endforeach
441
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200442conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700443
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400444foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
445 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
446 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
447 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530448 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400449 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
450 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
451 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
452 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
453 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530454 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400455 # if_tunnel.h is buggy and cannot be included on its own
456 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
457 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
458 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
459 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
460 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
461 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
462 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530463 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400464 ['NDA_IFINDEX', 'linux/neighbour.h'],
465 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000466 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400467 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530468 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Susant Sahani53cb5012018-06-03 12:37:41 +0530469 ['FOU_ATTR_REMCSUM_NOPARTIAL', 'linux/fou.h'],
470 ['FOU_CMD_GET', 'linux/fou.h'],
471 ['FOU_ENCAP_GUE', 'linux/fou.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400472 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400473 prefix = decl.length() > 2 ? decl[2] : ''
474 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200475 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400476endforeach
477
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400478foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200479 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400480endforeach
481
482foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100483 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100484 ['gettid', '''#include <sys/types.h>
485 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100486 ['pivot_root', '''#include <stdlib.h>
487 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100488 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400489 #include <sys/stat.h>
490 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100491 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100492 ['renameat2', '''#include <stdio.h>
493 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400494 ['kcmp', '''#include <linux/kcmp.h>'''],
495 ['keyctl', '''#include <sys/types.h>
496 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100497 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400498 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200499 ['bpf', '''#include <sys/syscall.h>
500 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100501 ['statx', '''#include <sys/types.h>
502 #include <sys/stat.h>
503 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100504 ['explicit_bzero' , '''#include <string.h>'''],
505 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400506]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400507
Lennart Poettering85db59b2017-12-25 12:01:14 +0100508 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200509 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400510endforeach
511
Lennart Poettering85db59b2017-12-25 12:01:14 +0100512if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200513 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200514 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400515else
516 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200517 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200518 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400519endif
520
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400521#####################################################################
522
523sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400524awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400525m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400526stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400527git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100528env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100529perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400530
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400531meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400532mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400533test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
534splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400535
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400536# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
537# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500538progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400539 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400540 ['kmod', '/usr/bin/kmod' ],
541 ['kexec', '/usr/sbin/kexec' ],
542 ['sulogin', '/usr/sbin/sulogin' ],
543 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
544 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
545 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
546 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
547 ]
548foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400549 path = get_option(prog[0] + '-path')
550 if path != ''
551 message('Using @1@ for @0@'.format(prog[0], path))
552 else
553 exe = find_program(prog[0],
554 '/usr/sbin/' + prog[0],
555 '/sbin/' + prog[0],
556 required: false)
557 path = exe.found() ? exe.path() : prog[1]
558 endif
559 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
560 conf.set_quoted(name, path)
561 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400562endforeach
563
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500564conf.set_quoted('TELINIT', get_option('telinit-path'))
565
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400566if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100567 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400568endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400569
570############################################################
571
572gperf = find_program('gperf')
573
574gperf_test_format = '''
575#include <string.h>
576const char * in_word_set(const char *, @0@);
577@1@
578'''
579gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
580gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
581gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
582if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400583 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400584else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400585 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
586 if cc.compiles(gperf_test)
587 gperf_len_type = 'unsigned'
588 else
589 error('unable to determine gperf len type')
590 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400591endif
592message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400593conf.set('GPERF_LEN_TYPE', gperf_len_type,
594 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400595
596############################################################
597
598if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400599 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400600endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100601foreach header : ['crypt.h',
602 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400603 'linux/memfd.h',
604 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200605 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400606 'valgrind/memcheck.h',
607 'valgrind/valgrind.h',
608 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400609
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200610 conf.set10('HAVE_' + header.underscorify().to_upper(),
611 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400612endforeach
613
614############################################################
615
616conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400617conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
618gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400619
620default_hierarchy = get_option('default-hierarchy')
621conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
622 description : 'default cgroup hierarchy as string')
623if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400624 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400625elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400626 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400627else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400628 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400629endif
630
631time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900632if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400633 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900634 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400635endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400636conf.set('TIME_EPOCH', time_epoch)
637
638system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900639if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400640 system_uid_max = run_command(
641 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800642 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
643 '/etc/login.defs').stdout().strip()
644 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900645 system_uid_max = 999
646 else
647 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800648 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400649endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400650conf.set('SYSTEM_UID_MAX', system_uid_max)
651substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400652
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400653system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900654if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400655 system_gid_max = run_command(
656 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800657 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
658 '/etc/login.defs').stdout().strip()
659 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900660 system_gid_max = 999
661 else
662 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800663 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400664endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400665conf.set('SYSTEM_GID_MAX', system_gid_max)
666substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400667
Yu Watanabeac093402018-05-10 16:04:16 +0900668dynamic_uid_min = get_option('dynamic-uid-min')
669dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100670conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
671conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
672substs.set('dynamicuidmin', dynamic_uid_min)
673substs.set('dynamicuidmax', dynamic_uid_max)
674
Yu Watanabeac093402018-05-10 16:04:16 +0900675container_uid_base_min = get_option('container-uid-base-min')
676container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100677conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
678conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
679substs.set('containeruidbasemin', container_uid_base_min)
680substs.set('containeruidbasemax', container_uid_base_max)
681
Lennart Poetteringafde4572017-12-05 11:00:24 +0100682nobody_user = get_option('nobody-user')
683nobody_group = get_option('nobody-group')
684
Chen Qi2484bff2018-07-23 14:53:09 +0800685if not meson.is_cross_build()
686 getent_result = run_command('getent', 'passwd', '65534')
687 if getent_result.returncode() == 0
688 name = getent_result.stdout().split(':')[0]
689 if name != nobody_user
690 warning('\n' +
691 '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) +
692 'Your build will result in an user table setup that is incompatible with the local system.')
693 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100694 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800695 id_result = run_command('id', '-u', nobody_user)
696 if id_result.returncode() == 0
697 id = id_result.stdout().to_int()
698 if id != 65534
699 warning('\n' +
700 '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) +
701 'Your build will result in an user table setup that is incompatible with the local system.')
702 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100703 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100704
Chen Qi2484bff2018-07-23 14:53:09 +0800705 getent_result = run_command('getent', 'group', '65534')
706 if getent_result.returncode() == 0
707 name = getent_result.stdout().split(':')[0]
708 if name != nobody_group
709 warning('\n' +
710 '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) +
711 'Your build will result in an group table setup that is incompatible with the local system.')
712 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100713 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800714 id_result = run_command('id', '-g', nobody_group)
715 if id_result.returncode() == 0
716 id = id_result.stdout().to_int()
717 if id != 65534
718 warning('\n' +
719 '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) +
720 'Your build will result in an group table setup that is incompatible with the local system.')
721 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100722 endif
723endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900724if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900725 warning('\n' +
726 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
727 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900728endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100729
730conf.set_quoted('NOBODY_USER_NAME', nobody_user)
731conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900732substs.set('NOBODY_USER_NAME', nobody_user)
733substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100734
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400735tty_gid = get_option('tty-gid')
736conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400737substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400738
Ikey Doherty84786b82017-12-03 12:28:23 +0000739# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900740users_gid = get_option('users-gid')
741substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000742
Yu Watanabe348b4432018-05-07 18:17:35 +0900743conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
744conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400745
Michael Bieblace5e312018-07-13 23:36:13 +0200746dev_kvm_mode = get_option('dev-kvm-mode')
747substs.set('DEV_KVM_MODE', dev_kvm_mode)
748conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Tom Stellard4e15a732017-10-31 08:46:24 -0700749substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400750
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400751kill_user_processes = get_option('default-kill-user-processes')
752conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100753conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400754substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400755
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400756dns_servers = get_option('dns-servers')
757conf.set_quoted('DNS_SERVERS', dns_servers)
758substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400759
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400760ntp_servers = get_option('ntp-servers')
761conf.set_quoted('NTP_SERVERS', ntp_servers)
762substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400763
764conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
765
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400766substs.set('SUSHELL', get_option('debug-shell'))
767substs.set('DEBUGTTY', get_option('debug-tty'))
768
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200769enable_debug_hashmap = false
770enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200771foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900772 if name == 'hashmap'
773 enable_debug_hashmap = true
774 elif name == 'mmap-cache'
775 enable_debug_mmap_cache = true
776 else
777 message('unknown debug option "@0@", ignoring'.format(name))
778 endif
779endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200780conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
781conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400782
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200783conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200784conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200785
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400786#####################################################################
787
788threads = dependency('threads')
789librt = cc.find_library('rt')
790libm = cc.find_library('m')
791libdl = cc.find_library('dl')
792libcrypt = cc.find_library('crypt')
793
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400794libcap = dependency('libcap', required : false)
795if not libcap.found()
796 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
797 libcap = cc.find_library('cap')
798endif
799
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400800libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100801 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400802
803want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500804if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400805 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400806 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400807 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200808 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400809else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200810 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400811 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400812endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200813conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400814
815want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500816if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400817 libselinux = dependency('libselinux',
818 version : '>= 2.1.9',
819 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200820 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400821else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200822 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400823 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400824endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200825conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400826
827want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500828if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400829 libapparmor = dependency('libapparmor',
830 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200831 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200833 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400834 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400835endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200836conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400837
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400838smack_run_label = get_option('smack-run-label')
839if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400840 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400841endif
842
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400843want_polkit = get_option('polkit')
844install_polkit = false
845install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500846if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400847 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400848
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400849 libpolkit = dependency('polkit-gobject-1',
850 required : false)
851 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
852 message('Old polkit detected, will install pkla files')
853 install_polkit_pkla = true
854 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400855endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200856conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400857
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400858want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500859if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400860 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200861 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400862else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200863 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400864 libacl = []
865endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200866conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400867
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400868want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500869if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400870 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200871 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400872else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200873 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400874 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400875endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200876conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400877
878want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500879if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400880 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200881 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400882else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200883 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400884 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400885endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200886conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400887
888want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500889if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400890 libkmod = dependency('libkmod',
891 version : '>= 15',
892 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200893 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400894else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200895 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400896 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400897endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200898conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400899
900want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500901if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400902 libpam = cc.find_library('pam', required : want_pam == 'true')
903 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200904 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200906 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400907 libpam = []
908 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400909endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200910conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400911
912want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500913if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400914 libmicrohttpd = dependency('libmicrohttpd',
915 version : '>= 0.9.33',
916 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200917 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400918else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200919 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400920 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400921endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400923
924want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500925if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400926 libcryptsetup = dependency('libcryptsetup',
927 version : '>= 1.6.0',
928 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200929 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100930 have_sector = cc.has_member(
931 'struct crypt_params_plain',
932 'sector_size',
933 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400934else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200935 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100936 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400937 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400938endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200939conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100940conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400941
942want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500943if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400944 libcurl = dependency('libcurl',
945 version : '>= 7.32.0',
946 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200947 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400948else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200949 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400950 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400951endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200952conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400953
954want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400955want_libidn2 = get_option('libidn2')
956if want_libidn == 'true' and want_libidn2 == 'true'
957 error('libidn and libidn2 cannot be requested simultaneously')
958endif
959
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500960if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400961 libidn = dependency('libidn',
962 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200963 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400964else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200965 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400966 libidn = []
967endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200968conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500969if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400970 # libidn is used for both libidn and libidn2 objects
971 libidn = dependency('libidn2',
972 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200973 have = libidn.found()
974else
975 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400976endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200977conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400978
979want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500980if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400981 libiptc = dependency('libiptc',
982 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200983 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400984else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200985 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400986 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400987endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200988conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400989
990want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500991if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400992 libqrencode = dependency('libqrencode',
993 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200994 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400995else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400997 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400998endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200999conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001000
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001001want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001002if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001003 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1004 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001005 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001006else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001007 have = false
1008endif
1009if not have
1010 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001011 libgcrypt = []
1012 libgpg_error = []
1013endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001014conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001015
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001016want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001017if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001018 libgnutls = dependency('gnutls',
1019 version : '>= 3.1.4',
1020 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001021 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001022else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001023 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001024 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001025endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001026conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001027
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001028want_openssl = get_option('openssl')
1029if want_openssl != 'false' and not fuzzer_build
1030 libopenssl = dependency('openssl',
1031 version : '>= 1.1.0',
1032 required : want_openssl == 'true')
1033 have = libopenssl.found()
1034else
1035 have = false
1036 libopenssl = []
1037endif
1038conf.set10('HAVE_OPENSSL', have)
1039
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001040want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001041if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001042 libdw = dependency('libdw',
1043 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001044 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001045else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001046 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001047 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001048endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001049conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001050
1051want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001052if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001053 libz = dependency('zlib',
1054 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001055 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001056else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001057 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001058 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001059endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001060conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001061
1062want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001063if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001064 libbzip2 = cc.find_library('bz2',
1065 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001066 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001067else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001068 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001069 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001070endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001071conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001072
1073want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001074if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001075 libxz = dependency('liblzma',
1076 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001077 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001078else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001079 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001080 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001081endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001082conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001083
1084want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001085if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001086 liblz4 = dependency('liblz4',
1087 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001088 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001089else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001090 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001091 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001092endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001093conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001094
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001095want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001096if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001097 libxkbcommon = dependency('xkbcommon',
1098 version : '>= 0.3.0',
1099 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001100 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001101else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001102 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001103 libxkbcommon = []
1104endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001105conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001106
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001107want_pcre2 = get_option('pcre2')
1108if want_pcre2 != 'false'
1109 libpcre2 = dependency('libpcre2-8',
1110 required : want_pcre2 == 'true')
1111 have = libpcre2.found()
1112else
1113 have = false
1114 libpcre2 = []
1115endif
1116conf.set10('HAVE_PCRE2', have)
1117
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001118want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001119if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001120 libglib = dependency('glib-2.0',
1121 version : '>= 2.22.0',
1122 required : want_glib == 'true')
1123 libgobject = dependency('gobject-2.0',
1124 version : '>= 2.22.0',
1125 required : want_glib == 'true')
1126 libgio = dependency('gio-2.0',
1127 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001128 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001129else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001130 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001131 libglib = []
1132 libgobject = []
1133 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001134endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001135conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001136
1137want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001138if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001139 libdbus = dependency('dbus-1',
1140 version : '>= 1.3.2',
1141 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001142 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001143else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001144 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001145 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001146endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001147conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001148
Yu Watanabe42303dc2017-06-18 05:22:32 +09001149default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001150if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001151 default_dnssec = 'no'
1152endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001153if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001154 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1155 default_dnssec = 'no'
1156endif
1157conf.set('DEFAULT_DNSSEC_MODE',
1158 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1159substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1160
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001161dns_over_tls = get_option('dns-over-tls')
1162if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001163 if dns_over_tls == 'openssl'
1164 have_gnutls = false
1165 else
1166 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1167 if dns_over_tls == 'gnutls' and not have_gnutls
1168 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1169 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001170 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001171 if dns_over_tls == 'gnutls' or have_gnutls
1172 have_openssl = false
1173 else
1174 have_openssl = conf.get('HAVE_OPENSSL') == 1
1175 if dns_over_tls != 'auto' and not have_openssl
1176 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1177 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1178 endif
1179 endif
1180 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001181else
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001182 have = have_gnutls = have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001183endif
1184conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001185conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1186conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001187
Iwan Timmerc9299be2018-06-13 20:26:24 +02001188default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001189if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001190 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001191endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001192if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1193 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 +02001194 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001195endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001196conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1197 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1198substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001199
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001200want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001201if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001202 have = (conf.get('HAVE_LIBCURL') == 1 and
1203 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001204 conf.get('HAVE_XZ') == 1 and
1205 conf.get('HAVE_GCRYPT') == 1)
1206 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001207 error('importd support was requested, but dependencies are not available')
1208 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001209else
1210 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001211endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001212conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001213
1214want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001215if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001216 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1217 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001218 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1219 # it's possible to build one without the other. Complain only if
1220 # support was explictly requested. The auxiliary files like sysusers
1221 # config should be installed when any of the programs are built.
1222 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1223 error('remote support was requested, but dependencies are not available')
1224 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001225 have = have_deps[0] or have_deps[1]
1226else
1227 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001228endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001229conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001230
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001231foreach term : ['utmp',
1232 'hibernate',
1233 'environment-d',
1234 'binfmt',
1235 'coredump',
1236 'resolve',
1237 'logind',
1238 'hostnamed',
1239 'localed',
1240 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001241 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001242 'networkd',
1243 'timedated',
1244 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001245 'firstboot',
1246 'randomseed',
1247 'backlight',
1248 'vconsole',
1249 'quotacheck',
1250 'sysusers',
1251 'tmpfiles',
1252 'hwdb',
1253 'rfkill',
1254 'ldconfig',
1255 'efi',
1256 'tpm',
1257 'ima',
1258 'smack',
1259 'gshadow',
1260 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001261 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001262 'nss-systemd']
1263 have = get_option(term)
1264 name = 'ENABLE_' + term.underscorify().to_upper()
1265 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001266endforeach
1267
Yu Watanabe08540a92018-07-18 09:25:57 +09001268foreach tuple : [['nss-mymachines', 'machined'],
1269 ['nss-resolve', 'resolve']]
1270 want = get_option(tuple[0])
1271 if want != 'false'
1272 have = get_option(tuple[1])
1273 if want == 'true' and not have
1274 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1275 endif
1276 else
1277 have = false
1278 endif
1279 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1280 conf.set10(name, have)
1281endforeach
1282
1283enable_nss = false
1284foreach term : ['ENABLE_NSS_MYHOSTNAME',
1285 'ENABLE_NSS_MYMACHINES',
1286 'ENABLE_NSS_RESOLVE',
1287 'ENABLE_NSS_SYSTEMD']
1288 if conf.get(term) == 1
1289 enable_nss = true
1290 endif
1291endforeach
1292conf.set10('ENABLE_NSS', enable_nss)
1293
Yu Watanabe348b4432018-05-07 18:17:35 +09001294conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001295
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001296tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001297fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001298
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001299conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001300
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001301#####################################################################
1302
1303if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001304 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001305
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001306 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001307 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001308 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001309 elif efi_arch == 'x86_64'
1310 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001311 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001312 elif efi_arch == 'arm'
1313 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001314 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001315 elif efi_arch == 'aarch64'
1316 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001317 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001318 else
1319 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001320 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001321 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001322
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001323 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001324 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001325
Yu Watanabeac093402018-05-10 16:04:16 +09001326 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001327else
1328 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001329endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001330conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001331
1332#####################################################################
1333
1334config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001335 output : 'config.h',
1336 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001337
Yu Watanabe348b4432018-05-07 18:17:35 +09001338meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1339
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001340includes = include_directories('src/basic',
1341 'src/shared',
1342 'src/systemd',
1343 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001344 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001345 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001346 'src/resolve',
1347 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001348 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001349 'src/login',
1350 'src/udev',
1351 'src/libudev',
1352 'src/core',
1353 'src/libsystemd/sd-bus',
1354 'src/libsystemd/sd-device',
1355 'src/libsystemd/sd-hwdb',
1356 'src/libsystemd/sd-id128',
1357 'src/libsystemd/sd-netlink',
1358 'src/libsystemd/sd-network',
1359 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001360 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001361
1362add_project_arguments('-include', 'config.h', language : 'c')
1363
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001364subdir('po')
1365subdir('catalog')
1366subdir('src/systemd')
1367subdir('src/basic')
1368subdir('src/libsystemd')
1369subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001370subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001371subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001372
1373libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001374 'journal-core',
1375 libjournal_core_sources,
1376 journald_gperf_c,
1377 include_directories : includes,
1378 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001379
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001380libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001381libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001382 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001383 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001384 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001385 include_directories : includes,
1386 link_args : ['-shared',
1387 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001388 link_with : [libbasic,
1389 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001390 link_whole : [libsystemd_static,
1391 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001392 dependencies : [threads,
1393 librt,
1394 libxz,
1395 liblz4],
1396 link_depends : libsystemd_sym,
1397 install : true,
1398 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001399
Davide Cavalca70848ec2018-04-09 02:43:35 -07001400static_libsystemd = get_option('static-libsystemd')
1401static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1402
1403install_libsystemd_static = static_library(
1404 'systemd',
1405 libsystemd_sources,
1406 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001407 basic_sources,
1408 basic_gcrypt_sources,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001409 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001410 build_by_default : static_libsystemd != 'false',
1411 install : static_libsystemd != 'false',
1412 install_dir : rootlibdir,
1413 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1414 dependencies : [threads,
1415 librt,
1416 libxz,
1417 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001418 libcap,
1419 libblkid,
1420 libmount,
1421 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001422 libgcrypt],
1423 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1424
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001425############################################################
1426
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001427# binaries that have --help and are intended for use by humans,
1428# usually, but not always, installed in /bin.
1429public_programs = []
1430
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001431subdir('src/libudev')
1432subdir('src/shared')
1433subdir('src/core')
1434subdir('src/udev')
1435subdir('src/network')
1436
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001437subdir('src/analyze')
1438subdir('src/journal-remote')
1439subdir('src/coredump')
1440subdir('src/hostname')
1441subdir('src/import')
1442subdir('src/kernel-install')
1443subdir('src/locale')
1444subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001445subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001446subdir('src/nspawn')
1447subdir('src/resolve')
1448subdir('src/timedate')
1449subdir('src/timesync')
1450subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001451subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001452
1453subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001454subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001455subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001456subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001457
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001458############################################################
1459
1460# only static linking apart from libdl, to make sure that the
1461# module is linked to all libraries that it uses.
1462test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001463 'test-dlopen',
1464 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001465 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001466 include_directories : includes,
1467 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001468 dependencies : [libdl],
1469 build_by_default : want_tests != 'false')
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)
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001481 version_script_arg = join_paths(meson.source_root(), 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),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001486 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001487 version : '2',
1488 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001489 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1490 link_args : ['-Wl,-z,nodelete',
1491 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001492 '-Wl,--version-script=' + version_script_arg,
1493 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001494 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001495 libbasic],
1496 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001497 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001498 link_depends : sym,
1499 install : true,
1500 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001501
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001502 # We cannot use shared_module because it does not support version suffix.
1503 # Unfortunately shared_library insists on creating the symlink…
1504 meson.add_install_script('sh', '-c',
1505 'rm $DESTDIR@0@/libnss_@1@.so'
1506 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001507
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001508 if want_tests != 'false'
1509 test('dlopen-nss_' + module,
1510 test_dlopen,
1511 # path to dlopen must include a slash
1512 args : nss.full_path())
1513 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001514 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001515endforeach
1516
1517############################################################
1518
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001519executable('systemd',
1520 systemd_sources,
1521 include_directories : includes,
1522 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001523 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001524 dependencies : [threads,
1525 librt,
1526 libseccomp,
1527 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001528 libmount,
1529 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001530 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001531 install : true,
1532 install_dir : rootlibexecdir)
1533
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001534meson.add_install_script(meson_make_symlink,
1535 join_paths(rootlibexecdir, 'systemd'),
1536 join_paths(rootsbindir, 'init'))
1537
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001538exe = executable('systemd-analyze',
1539 systemd_analyze_sources,
1540 include_directories : includes,
1541 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001542 libshared],
1543 dependencies : [threads,
1544 librt,
1545 libseccomp,
1546 libselinux,
1547 libmount,
1548 libblkid],
1549 install_rpath : rootlibexecdir,
1550 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001551public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001552
1553executable('systemd-journald',
1554 systemd_journald_sources,
1555 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001556 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001557 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001558 dependencies : [threads,
1559 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001560 liblz4,
1561 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001562 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001563 install : true,
1564 install_dir : rootlibexecdir)
1565
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001566exe = executable('systemd-cat',
1567 systemd_cat_sources,
1568 include_directories : includes,
1569 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001570 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001571 dependencies : [threads],
1572 install_rpath : rootlibexecdir,
1573 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001574public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001575
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001576exe = executable('journalctl',
1577 journalctl_sources,
1578 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001579 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001580 dependencies : [threads,
1581 libqrencode,
1582 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001583 liblz4,
1584 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001585 install_rpath : rootlibexecdir,
1586 install : true,
1587 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001588public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001589
1590executable('systemd-getty-generator',
1591 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001592 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001593 link_with : [libshared],
1594 install_rpath : rootlibexecdir,
1595 install : true,
1596 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001597
1598executable('systemd-debug-generator',
1599 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001600 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001601 link_with : [libshared],
1602 install_rpath : rootlibexecdir,
1603 install : true,
1604 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001605
1606executable('systemd-fstab-generator',
1607 'src/fstab-generator/fstab-generator.c',
1608 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001609 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001610 link_with : [libshared],
1611 install_rpath : rootlibexecdir,
1612 install : true,
1613 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001614
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001615if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001616 executable('30-systemd-environment-d-generator',
1617 'src/environment-d-generator/environment-d-generator.c',
1618 include_directories : includes,
1619 link_with : [libshared],
1620 install_rpath : rootlibexecdir,
1621 install : true,
1622 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001623
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001624 meson.add_install_script(meson_make_symlink,
1625 join_paths(sysconfdir, 'environment'),
1626 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001627endif
1628
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001629if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001630 executable('systemd-hibernate-resume-generator',
1631 'src/hibernate-resume/hibernate-resume-generator.c',
1632 include_directories : includes,
1633 link_with : [libshared],
1634 install_rpath : rootlibexecdir,
1635 install : true,
1636 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001637
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001638 executable('systemd-hibernate-resume',
1639 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001640 include_directories : includes,
1641 link_with : [libshared],
1642 install_rpath : rootlibexecdir,
1643 install : true,
1644 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001645endif
1646
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001647if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001648 executable('systemd-gpt-auto-generator',
1649 'src/gpt-auto-generator/gpt-auto-generator.c',
1650 'src/basic/blkid-util.h',
1651 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001652 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001653 dependencies : libblkid,
1654 install_rpath : rootlibexecdir,
1655 install : true,
1656 install_dir : systemgeneratordir)
1657
1658 exe = executable('systemd-dissect',
1659 'src/dissect/dissect.c',
1660 include_directories : includes,
1661 link_with : [libshared],
1662 install_rpath : rootlibexecdir,
1663 install : true,
1664 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001665 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001666endif
1667
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001668if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001669 executable('systemd-resolved',
1670 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001671 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001672 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001673 libbasic_gcrypt,
1674 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001675 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001676 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001677 install : true,
1678 install_dir : rootlibexecdir)
1679
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001680 exe = executable('resolvectl',
1681 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001682 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001683 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001684 libbasic_gcrypt,
1685 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001686 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001687 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001688 libm,
1689 libidn],
1690 install_rpath : rootlibexecdir,
1691 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001692 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001693
1694 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001695 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001696 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001697
1698 meson.add_install_script(meson_make_symlink,
1699 join_paths(bindir, 'resolvectl'),
1700 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001701endif
1702
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001703if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001704 executable('systemd-logind',
1705 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001706 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001707 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001708 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001709 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001710 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001711 install_rpath : rootlibexecdir,
1712 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001713 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001714
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001715 exe = executable('loginctl',
1716 loginctl_sources,
1717 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001718 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001719 dependencies : [threads,
1720 liblz4,
1721 libxz],
1722 install_rpath : rootlibexecdir,
1723 install : true,
1724 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001725 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001726
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001727 exe = executable('systemd-inhibit',
1728 'src/login/inhibit.c',
1729 include_directories : includes,
1730 link_with : [libshared],
1731 install_rpath : rootlibexecdir,
1732 install : true,
1733 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001734 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001735
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001736 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001737 version_script_arg = join_paths(meson.source_root(), pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001738 pam_systemd = shared_library(
1739 'pam_systemd',
1740 pam_systemd_c,
1741 name_prefix : '',
1742 include_directories : includes,
1743 link_args : ['-shared',
1744 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001745 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001746 libshared_static],
1747 dependencies : [threads,
1748 libpam,
1749 libpam_misc],
1750 link_depends : pam_systemd_sym,
1751 install : true,
1752 install_dir : pamlibdir)
1753
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001754 if want_tests != 'false'
1755 test('dlopen-pam_systemd',
1756 test_dlopen,
1757 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001758 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001759 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001760 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001761endif
1762
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001763executable('systemd-user-runtime-dir',
1764 user_runtime_dir_sources,
1765 include_directories : includes,
1766 link_with : [libshared, liblogind_core],
1767 install_rpath : rootlibexecdir,
1768 install : true,
1769 install_dir : rootlibexecdir)
1770
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001771if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001772 executable('systemd-user-sessions',
1773 'src/user-sessions/user-sessions.c',
1774 include_directories : includes,
1775 link_with : [libshared],
1776 install_rpath : rootlibexecdir,
1777 install : true,
1778 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001779endif
1780
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001781if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001782 exe = executable('bootctl',
1783 'src/boot/bootctl.c',
1784 include_directories : includes,
1785 link_with : [libshared],
1786 dependencies : [libblkid],
1787 install_rpath : rootlibexecdir,
1788 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001789 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001790endif
1791
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001792exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1793 include_directories : includes,
1794 link_with : [libshared],
1795 dependencies : [threads],
1796 install_rpath : rootlibexecdir,
1797 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001798public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001799
Felipe Satelerf3794362018-05-22 15:08:57 -04001800
1801if get_option('link-systemctl-shared')
1802 systemctl_link_with = [libshared]
1803else
1804 systemctl_link_with = [libsystemd_static,
1805 libshared_static,
1806 libjournal_client,
1807 libbasic_gcrypt]
1808endif
1809
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001810exe = executable('systemctl', 'src/systemctl/systemctl.c',
1811 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001812 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001813 dependencies : [threads,
1814 libcap,
1815 libselinux,
1816 libxz,
1817 liblz4],
1818 install_rpath : rootlibexecdir,
1819 install : true,
1820 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001821public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001822
Lennart Poettering61d05782018-04-16 21:41:40 +02001823if conf.get('ENABLE_PORTABLED') == 1
1824 executable('systemd-portabled',
1825 systemd_portabled_sources,
1826 include_directories : includes,
1827 link_with : [libshared],
1828 dependencies : [threads],
1829 install_rpath : rootlibexecdir,
1830 install : true,
1831 install_dir : rootlibexecdir)
1832
1833 exe = executable('portablectl', 'src/portable/portablectl.c',
1834 include_directories : includes,
1835 link_with : [libshared],
1836 dependencies : [threads],
1837 install_rpath : rootlibexecdir,
1838 install : true,
1839 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001840 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001841endif
1842
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001843foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1844 meson.add_install_script(meson_make_symlink,
1845 join_paths(rootbindir, 'systemctl'),
1846 join_paths(rootsbindir, alias))
1847endforeach
1848
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001849if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001850 executable('systemd-backlight',
1851 'src/backlight/backlight.c',
1852 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001853 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001854 install_rpath : rootlibexecdir,
1855 install : true,
1856 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001857endif
1858
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001859if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001860 executable('systemd-rfkill',
1861 'src/rfkill/rfkill.c',
1862 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001863 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001864 install_rpath : rootlibexecdir,
1865 install : true,
1866 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001867endif
1868
1869executable('systemd-system-update-generator',
1870 'src/system-update-generator/system-update-generator.c',
1871 include_directories : includes,
1872 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001873 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001874 install : true,
1875 install_dir : systemgeneratordir)
1876
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001877if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001878 executable('systemd-cryptsetup',
1879 'src/cryptsetup/cryptsetup.c',
1880 include_directories : includes,
1881 link_with : [libshared],
1882 dependencies : [libcryptsetup],
1883 install_rpath : rootlibexecdir,
1884 install : true,
1885 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001886
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001887 executable('systemd-cryptsetup-generator',
1888 'src/cryptsetup/cryptsetup-generator.c',
1889 include_directories : includes,
1890 link_with : [libshared],
1891 dependencies : [libcryptsetup],
1892 install_rpath : rootlibexecdir,
1893 install : true,
1894 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001895
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001896 executable('systemd-veritysetup',
1897 'src/veritysetup/veritysetup.c',
1898 include_directories : includes,
1899 link_with : [libshared],
1900 dependencies : [libcryptsetup],
1901 install_rpath : rootlibexecdir,
1902 install : true,
1903 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001904
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001905 executable('systemd-veritysetup-generator',
1906 'src/veritysetup/veritysetup-generator.c',
1907 include_directories : includes,
1908 link_with : [libshared],
1909 dependencies : [libcryptsetup],
1910 install_rpath : rootlibexecdir,
1911 install : true,
1912 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001913endif
1914
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001915if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001916 executable('systemd-sysv-generator',
1917 'src/sysv-generator/sysv-generator.c',
1918 include_directories : includes,
1919 link_with : [libshared],
1920 install_rpath : rootlibexecdir,
1921 install : true,
1922 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001923
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001924 executable('systemd-rc-local-generator',
1925 'src/rc-local-generator/rc-local-generator.c',
1926 include_directories : includes,
1927 link_with : [libshared],
1928 install_rpath : rootlibexecdir,
1929 install : true,
1930 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001931endif
1932
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001933if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001934 executable('systemd-hostnamed',
1935 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001936 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001937 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001938 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001939 install : true,
1940 install_dir : rootlibexecdir)
1941
1942 exe = executable('hostnamectl',
1943 'src/hostname/hostnamectl.c',
1944 include_directories : includes,
1945 link_with : [libshared],
1946 install_rpath : rootlibexecdir,
1947 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001948 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001949endif
1950
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001951if conf.get('ENABLE_LOCALED') == 1
1952 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001953 # logind will load libxkbcommon.so dynamically on its own
1954 deps = [libdl]
1955 else
1956 deps = []
1957 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001958
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001959 executable('systemd-localed',
1960 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001961 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001962 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001963 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001964 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001965 install : true,
1966 install_dir : rootlibexecdir)
1967
1968 exe = executable('localectl',
1969 localectl_sources,
1970 include_directories : includes,
1971 link_with : [libshared],
1972 install_rpath : rootlibexecdir,
1973 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001974 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001975endif
1976
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001977if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001978 executable('systemd-timedated',
1979 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001980 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001981 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001982 install_rpath : rootlibexecdir,
1983 install : true,
1984 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09001985endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001986
Yu Watanabe6129ec82018-05-03 18:07:43 +09001987if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001988 exe = executable('timedatectl',
1989 'src/timedate/timedatectl.c',
1990 include_directories : includes,
1991 install_rpath : rootlibexecdir,
1992 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09001993 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001994 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001995 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001996endif
1997
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001998if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001999 executable('systemd-timesyncd',
2000 systemd_timesyncd_sources,
2001 include_directories : includes,
2002 link_with : [libshared],
2003 dependencies : [threads,
2004 libm],
2005 install_rpath : rootlibexecdir,
2006 install : true,
2007 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002008
2009 executable('systemd-time-wait-sync',
2010 'src/time-wait-sync/time-wait-sync.c',
2011 include_directories : includes,
2012 link_with : [libshared],
2013 install_rpath : rootlibexecdir,
2014 install : true,
2015 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002016endif
2017
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002018if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002019 executable('systemd-machined',
2020 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002021 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002022 link_with : [libmachine_core,
2023 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002024 install_rpath : rootlibexecdir,
2025 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002026 install_dir : rootlibexecdir)
2027
2028 exe = executable('machinectl',
2029 'src/machine/machinectl.c',
2030 include_directories : includes,
2031 link_with : [libshared],
2032 dependencies : [threads,
2033 libxz,
2034 liblz4],
2035 install_rpath : rootlibexecdir,
2036 install : true,
2037 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002038 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002039endif
2040
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002041if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002042 executable('systemd-importd',
2043 systemd_importd_sources,
2044 include_directories : includes,
2045 link_with : [libshared],
2046 dependencies : [threads],
2047 install_rpath : rootlibexecdir,
2048 install : true,
2049 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002050
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002051 systemd_pull = executable('systemd-pull',
2052 systemd_pull_sources,
2053 include_directories : includes,
2054 link_with : [libshared],
2055 dependencies : [libcurl,
2056 libz,
2057 libbzip2,
2058 libxz,
2059 libgcrypt],
2060 install_rpath : rootlibexecdir,
2061 install : true,
2062 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002063
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002064 systemd_import = executable('systemd-import',
2065 systemd_import_sources,
2066 include_directories : includes,
2067 link_with : [libshared],
2068 dependencies : [libcurl,
2069 libz,
2070 libbzip2,
2071 libxz],
2072 install_rpath : rootlibexecdir,
2073 install : true,
2074 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002075
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002076 systemd_export = executable('systemd-export',
2077 systemd_export_sources,
2078 include_directories : includes,
2079 link_with : [libshared],
2080 dependencies : [libcurl,
2081 libz,
2082 libbzip2,
2083 libxz],
2084 install_rpath : rootlibexecdir,
2085 install : true,
2086 install_dir : rootlibexecdir)
2087 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002088endif
2089
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002090if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002091 exe = executable('systemd-journal-upload',
2092 systemd_journal_upload_sources,
2093 include_directories : includes,
2094 link_with : [libshared],
2095 dependencies : [threads,
2096 libcurl,
2097 libgnutls,
2098 libxz,
2099 liblz4],
2100 install_rpath : rootlibexecdir,
2101 install : true,
2102 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002103 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002104endif
2105
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002106if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002107 s_j_remote = executable('systemd-journal-remote',
2108 systemd_journal_remote_sources,
2109 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002110 link_with : [libshared,
2111 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002112 dependencies : [threads,
2113 libmicrohttpd,
2114 libgnutls,
2115 libxz,
2116 liblz4],
2117 install_rpath : rootlibexecdir,
2118 install : true,
2119 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002120
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002121 s_j_gatewayd = executable('systemd-journal-gatewayd',
2122 systemd_journal_gatewayd_sources,
2123 include_directories : includes,
2124 link_with : [libshared],
2125 dependencies : [threads,
2126 libmicrohttpd,
2127 libgnutls,
2128 libxz,
2129 liblz4],
2130 install_rpath : rootlibexecdir,
2131 install : true,
2132 install_dir : rootlibexecdir)
2133 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002134endif
2135
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002136if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002137 executable('systemd-coredump',
2138 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002139 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002140 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002141 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002142 libacl,
2143 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002144 libxz,
2145 liblz4],
2146 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002147 install : true,
2148 install_dir : rootlibexecdir)
2149
2150 exe = executable('coredumpctl',
2151 coredumpctl_sources,
2152 include_directories : includes,
2153 link_with : [libshared],
2154 dependencies : [threads,
2155 libxz,
2156 liblz4],
2157 install_rpath : rootlibexecdir,
2158 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002159 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002160endif
2161
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002162if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002163 exe = executable('systemd-binfmt',
2164 'src/binfmt/binfmt.c',
2165 include_directories : includes,
2166 link_with : [libshared],
2167 install_rpath : rootlibexecdir,
2168 install : true,
2169 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002170 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002171
2172 meson.add_install_script('sh', '-c',
2173 mkdir_p.format(binfmtdir))
2174 meson.add_install_script('sh', '-c',
2175 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2176endif
2177
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002178if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002179 executable('systemd-vconsole-setup',
2180 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002181 include_directories : includes,
2182 link_with : [libshared],
2183 install_rpath : rootlibexecdir,
2184 install : true,
2185 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002186endif
2187
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002188if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002189 executable('systemd-random-seed',
2190 'src/random-seed/random-seed.c',
2191 include_directories : includes,
2192 link_with : [libshared],
2193 install_rpath : rootlibexecdir,
2194 install : true,
2195 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002196endif
2197
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002198if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002199 executable('systemd-firstboot',
2200 'src/firstboot/firstboot.c',
2201 include_directories : includes,
2202 link_with : [libshared],
2203 dependencies : [libcrypt],
2204 install_rpath : rootlibexecdir,
2205 install : true,
2206 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002207endif
2208
2209executable('systemd-remount-fs',
2210 'src/remount-fs/remount-fs.c',
2211 'src/core/mount-setup.c',
2212 'src/core/mount-setup.h',
2213 include_directories : includes,
2214 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002215 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002216 install : true,
2217 install_dir : rootlibexecdir)
2218
2219executable('systemd-machine-id-setup',
2220 'src/machine-id-setup/machine-id-setup-main.c',
2221 'src/core/machine-id-setup.c',
2222 'src/core/machine-id-setup.h',
2223 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002224 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002225 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002226 install : true,
2227 install_dir : rootbindir)
2228
2229executable('systemd-fsck',
2230 'src/fsck/fsck.c',
2231 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002232 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002233 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002234 install : true,
2235 install_dir : rootlibexecdir)
2236
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002237executable('systemd-growfs',
2238 'src/partition/growfs.c',
2239 include_directories : includes,
2240 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002241 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002242 install_rpath : rootlibexecdir,
2243 install : true,
2244 install_dir : rootlibexecdir)
2245
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002246executable('systemd-makefs',
2247 'src/partition/makefs.c',
2248 include_directories : includes,
2249 link_with : [libshared],
2250 install_rpath : rootlibexecdir,
2251 install : true,
2252 install_dir : rootlibexecdir)
2253
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002254executable('systemd-sleep',
2255 'src/sleep/sleep.c',
2256 include_directories : includes,
2257 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002258 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002259 install : true,
2260 install_dir : rootlibexecdir)
2261
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002262exe = executable('systemd-sysctl',
2263 'src/sysctl/sysctl.c',
2264 include_directories : includes,
2265 link_with : [libshared],
2266 install_rpath : rootlibexecdir,
2267 install : true,
2268 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002269public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002270
2271executable('systemd-ac-power',
2272 'src/ac-power/ac-power.c',
2273 include_directories : includes,
2274 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002275 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002276 install : true,
2277 install_dir : rootlibexecdir)
2278
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002279exe = executable('systemd-detect-virt',
2280 'src/detect-virt/detect-virt.c',
2281 include_directories : includes,
2282 link_with : [libshared],
2283 install_rpath : rootlibexecdir,
2284 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002285public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002286
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002287exe = executable('systemd-delta',
2288 'src/delta/delta.c',
2289 include_directories : includes,
2290 link_with : [libshared],
2291 install_rpath : rootlibexecdir,
2292 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002293public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002294
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002295exe = executable('systemd-escape',
2296 'src/escape/escape.c',
2297 include_directories : includes,
2298 link_with : [libshared],
2299 install_rpath : rootlibexecdir,
2300 install : true,
2301 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002302public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002303
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002304exe = executable('systemd-notify',
2305 'src/notify/notify.c',
2306 include_directories : includes,
2307 link_with : [libshared],
2308 install_rpath : rootlibexecdir,
2309 install : true,
2310 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002311public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002312
2313executable('systemd-volatile-root',
2314 'src/volatile-root/volatile-root.c',
2315 include_directories : includes,
2316 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002317 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002318 install : true,
2319 install_dir : rootlibexecdir)
2320
2321executable('systemd-cgroups-agent',
2322 'src/cgroups-agent/cgroups-agent.c',
2323 include_directories : includes,
2324 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002325 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002326 install : true,
2327 install_dir : rootlibexecdir)
2328
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002329exe = executable('systemd-id128',
2330 'src/id128/id128.c',
2331 include_directories : includes,
2332 link_with : [libshared],
2333 install_rpath : rootlibexecdir,
2334 install : true)
2335public_programs += exe
2336
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002337exe = executable('systemd-path',
2338 'src/path/path.c',
2339 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002340 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002341 install_rpath : rootlibexecdir,
2342 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002343public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002344
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002345exe = executable('systemd-ask-password',
2346 'src/ask-password/ask-password.c',
2347 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002348 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002349 install_rpath : rootlibexecdir,
2350 install : true,
2351 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002352public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002353
2354executable('systemd-reply-password',
2355 'src/reply-password/reply-password.c',
2356 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002357 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002358 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002359 install : true,
2360 install_dir : rootlibexecdir)
2361
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002362exe = executable('systemd-tty-ask-password-agent',
2363 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2364 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002365 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002366 install_rpath : rootlibexecdir,
2367 install : true,
2368 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002369public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002370
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002371exe = executable('systemd-cgls',
2372 'src/cgls/cgls.c',
2373 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002374 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002375 install_rpath : rootlibexecdir,
2376 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002377public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002378
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002379exe = executable('systemd-cgtop',
2380 'src/cgtop/cgtop.c',
2381 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002382 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002383 install_rpath : rootlibexecdir,
2384 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002385public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002386
2387executable('systemd-initctl',
2388 'src/initctl/initctl.c',
2389 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002390 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002391 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002392 install : true,
2393 install_dir : rootlibexecdir)
2394
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002395exe = executable('systemd-mount',
2396 'src/mount/mount-tool.c',
2397 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002398 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002399 install_rpath : rootlibexecdir,
2400 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002401public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002402
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002403meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002404 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002405
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002406exe = executable('systemd-run',
2407 'src/run/run.c',
2408 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002409 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002410 install_rpath : rootlibexecdir,
2411 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002412public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002413
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002414exe = executable('systemd-stdio-bridge',
2415 'src/stdio-bridge/stdio-bridge.c',
2416 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002417 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002418 install_rpath : rootlibexecdir,
2419 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002420public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002421
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002422exe = executable('busctl',
2423 'src/busctl/busctl.c',
2424 'src/busctl/busctl-introspect.c',
2425 'src/busctl/busctl-introspect.h',
2426 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002427 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002428 install_rpath : rootlibexecdir,
2429 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002430public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002431
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002432if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002433 exe = executable('systemd-sysusers',
2434 'src/sysusers/sysusers.c',
2435 include_directories : includes,
2436 link_with : [libshared],
2437 install_rpath : rootlibexecdir,
2438 install : true,
2439 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002440 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002441endif
2442
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002443if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002444 exe = executable('systemd-tmpfiles',
2445 'src/tmpfiles/tmpfiles.c',
2446 include_directories : includes,
2447 link_with : [libshared],
2448 dependencies : [libacl],
2449 install_rpath : rootlibexecdir,
2450 install : true,
2451 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002452 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002453
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002454 if want_tests != 'false'
2455 test('test-systemd-tmpfiles',
2456 test_systemd_tmpfiles_py,
2457 # https://github.com/mesonbuild/meson/issues/2681
2458 args : exe.full_path())
2459 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002460endif
2461
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002462if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002463 exe = executable('systemd-hwdb',
2464 'src/hwdb/hwdb.c',
2465 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2466 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002467 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002468 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002469 install : true,
2470 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002471 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002472endif
2473
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002474if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002475 executable('systemd-quotacheck',
2476 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002477 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002478 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002479 install_rpath : rootlibexecdir,
2480 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002481 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002482endif
2483
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002484exe = executable('systemd-socket-proxyd',
2485 'src/socket-proxy/socket-proxyd.c',
2486 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002487 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002488 dependencies : [threads],
2489 install_rpath : rootlibexecdir,
2490 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('systemd-udevd',
2495 systemd_udevd_sources,
2496 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002497 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002498 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 : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002509public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002510
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002511exe = executable('udevadm',
2512 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002513 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002514 include_directories : includes,
2515 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002516 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002517 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002518 dependencies : [threads,
2519 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002520 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002521 libacl,
2522 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002523 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002524 install : true,
2525 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002526public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002527
2528executable('systemd-shutdown',
2529 systemd_shutdown_sources,
2530 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002531 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002532 dependencies : [libmount],
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
2537executable('systemd-update-done',
2538 'src/update-done/update-done.c',
2539 include_directories : includes,
2540 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002541 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002542 install : true,
2543 install_dir : rootlibexecdir)
2544
2545executable('systemd-update-utmp',
2546 'src/update-utmp/update-utmp.c',
2547 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002548 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002549 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002550 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002551 install : true,
2552 install_dir : rootlibexecdir)
2553
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002554if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002555 executable('systemd-modules-load',
2556 'src/modules-load/modules-load.c',
2557 include_directories : includes,
2558 link_with : [libshared],
2559 dependencies : [libkmod],
2560 install_rpath : rootlibexecdir,
2561 install : true,
2562 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002563
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002564 meson.add_install_script('sh', '-c',
2565 mkdir_p.format(modulesloaddir))
2566 meson.add_install_script('sh', '-c',
2567 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002568endif
2569
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002570exe = executable('systemd-nspawn',
2571 systemd_nspawn_sources,
2572 'src/core/mount-setup.c', # FIXME: use a variable?
2573 'src/core/mount-setup.h',
2574 'src/core/loopback-setup.c',
2575 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002576 include_directories : includes,
2577 link_with : [libnspawn_core,
2578 libshared],
2579 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002580 install_rpath : rootlibexecdir,
2581 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002582public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002583
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002584if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002585 executable('systemd-networkd',
2586 systemd_networkd_sources,
2587 include_directories : includes,
2588 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002589 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002590 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002591 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002592 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002593 install_rpath : rootlibexecdir,
2594 install : true,
2595 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002596
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002597 executable('systemd-networkd-wait-online',
2598 systemd_networkd_wait_online_sources,
2599 include_directories : includes,
2600 link_with : [libnetworkd_core,
2601 libshared],
2602 install_rpath : rootlibexecdir,
2603 install : true,
2604 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002605
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002606 exe = executable('networkctl',
2607 networkctl_sources,
2608 include_directories : includes,
2609 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002610 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002611 install_rpath : rootlibexecdir,
2612 install : true,
2613 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002614 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002615endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002616
2617executable('systemd-sulogin-shell',
2618 ['src/sulogin-shell/sulogin-shell.c'],
2619 include_directories : includes,
2620 link_with : [libshared],
2621 install_rpath : rootlibexecdir,
2622 install : true,
2623 install_dir : rootlibexecdir)
2624
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002625############################################################
2626
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002627custom_target(
2628 'systemd-runtest.env',
2629 output : 'systemd-runtest.env',
2630 command : ['sh', '-c', '{ ' +
2631 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(meson.current_source_dir(), 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002632 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002633 '} >@OUTPUT@'],
2634 build_by_default : true)
2635
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002636foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002637 sources = tuple[0]
2638 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2639 dependencies = tuple[2]
2640 condition = tuple.length() >= 4 ? tuple[3] : ''
2641 type = tuple.length() >= 5 ? tuple[4] : ''
2642 defs = tuple.length() >= 6 ? tuple[5] : []
2643 incs = tuple.length() >= 7 ? tuple[6] : includes
2644 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002645
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002646 name = sources[0].split('/')[-1].split('.')[0]
2647 if type.startswith('timeout=')
2648 timeout = type.split('=')[1].to_int()
2649 type = ''
2650 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002651
2652 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002653 exe = executable(
2654 name,
2655 sources,
2656 include_directories : incs,
2657 link_with : link_with,
2658 dependencies : dependencies,
2659 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002660 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002661 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002662 install : install_tests,
2663 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002664
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002665 if type == 'manual'
2666 message('@0@ is a manual test'.format(name))
2667 elif type == 'unsafe' and want_tests != 'unsafe'
2668 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002669 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002670 test(name, exe,
2671 env : test_env,
2672 timeout : timeout)
2673 endif
2674 else
2675 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2676 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002677endforeach
2678
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002679exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002680 'test-libsystemd-sym',
2681 test_libsystemd_sym_c,
2682 include_directories : includes,
2683 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002684 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002685 install : install_tests,
2686 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002687if want_tests != 'false'
2688 test('test-libsystemd-sym', exe)
2689endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002690
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002691exe = executable(
2692 'test-libsystemd-static-sym',
2693 test_libsystemd_sym_c,
2694 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002695 link_with : [install_libsystemd_static],
2696 dependencies : [threads], # threads is already included in dependencies on the library,
2697 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002698 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002699 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002700 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002701if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002702 test('test-libsystemd-static-sym', exe)
2703endif
2704
2705exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002706 'test-libudev-sym',
2707 test_libudev_sym_c,
2708 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002709 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002710 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002711 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002712 install : install_tests,
2713 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002714if want_tests != 'false'
2715 test('test-libudev-sym', exe)
2716endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002717
2718exe = executable(
2719 'test-libudev-static-sym',
2720 test_libudev_sym_c,
2721 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002722 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002723 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002724 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002725 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002726 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002727if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002728 test('test-libudev-static-sym', exe)
2729endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002730
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002731############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002732
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002733fuzzer_exes = []
2734
2735foreach tuple : fuzzers
2736 sources = tuple[0]
2737 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2738 dependencies = tuple[2]
2739 defs = tuple.length() >= 4 ? tuple[3] : []
2740 incs = tuple.length() >= 5 ? tuple[4] : includes
2741
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002742 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002743 dependencies += fuzzing_engine
2744 else
2745 sources += 'src/fuzz/fuzz-main.c'
2746 endif
2747
2748 name = sources[0].split('/')[-1].split('.')[0]
2749
2750 fuzzer_exes += executable(
2751 name,
2752 sources,
2753 include_directories : [incs, include_directories('src/fuzz')],
2754 link_with : link_with,
2755 dependencies : dependencies,
2756 c_args : defs,
2757 install : false)
2758endforeach
2759
2760run_target('fuzzers',
2761 depends : fuzzer_exes,
2762 command : ['true'])
2763
2764############################################################
2765
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002766make_directive_index_py = find_program('tools/make-directive-index.py')
2767make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002768xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002769hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002770
2771subdir('units')
2772subdir('sysctl.d')
2773subdir('sysusers.d')
2774subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002775subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002776subdir('hwdb')
2777subdir('network')
2778subdir('man')
2779subdir('shell-completion/bash')
2780subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002781subdir('docs/sysvinit')
2782subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002783
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002784install_subdir('factory/etc',
2785 install_dir : factorydir)
2786
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002787install_data('xorg/50-systemd-user.sh',
2788 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002789install_data('modprobe.d/systemd.conf',
2790 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002791install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002792 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002793 'NEWS',
2794 'README',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002795 'docs/CODING_STYLE',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002796 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002797 'docs/ENVIRONMENT.md',
2798 'docs/HACKING',
2799 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002800 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002801 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002802 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2803 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002804
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002805meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2806meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2807
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002808############################################################
2809
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002810meson_check_help = find_program('tools/meson-check-help.sh')
2811
2812foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002813 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002814 if want_tests != 'false'
2815 test('check-help-' + name,
2816 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002817 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002818 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002819endforeach
2820
2821############################################################
2822
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002823# Enable tests for all supported sanitizers
2824foreach tuple : sanitizers
2825 sanitizer = tuple[0]
2826 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002827
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002828 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002829 prev = ''
2830 foreach p : fuzz_regression_tests
2831 b = p.split('/')[-2]
2832 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002833
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002834 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002835
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002836 if name != prev
2837 if want_tests == 'false'
2838 message('Not compiling @0@ because tests is set to false'.format(name))
2839 elif slow_tests
2840 exe = custom_target(
2841 name,
2842 output : name,
2843 depends : build,
2844 command : [env, 'ln', '-fs',
2845 join_paths(build.full_path(), b),
2846 '@OUTPUT@'],
2847 build_by_default : true)
2848 else
2849 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2850 endif
2851 endif
2852 prev = name
2853
2854 if want_tests != 'false' and slow_tests
2855 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2856 env,
2857 args : [exe.full_path(),
Zbigniew Jędrzejewski-Szmeke6bad672018-08-10 17:15:05 +02002858 join_paths(meson.source_root(), p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002859 endif
2860 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002861 endif
2862endforeach
2863
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002864
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002865############################################################
2866
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002867if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002868 all_files = run_command(
2869 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002870 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002871 'ls-files',
2872 ':/*.[ch]'])
2873 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002874
userwithuide85a6902017-08-09 13:41:44 +00002875 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002876 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002877 output : 'tags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002878 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.source_root())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00002879 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002880 'ctags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002881 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.source_root())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002882endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002883
2884if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002885 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002886 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002887 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002888 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002889endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002890
2891if git.found()
2892 git_head = run_command(
2893 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002894 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002895 'rev-parse', 'HEAD']).stdout().strip()
2896 git_head_short = run_command(
2897 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002898 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002899 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2900
2901 run_target(
2902 'git-snapshot',
2903 command : ['git', 'archive',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002904 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.source_root(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002905 git_head_short),
2906 '--prefix', 'systemd-@0@/'.format(git_head),
2907 'HEAD'])
2908endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002909
2910############################################################
2911
Lennart Poettering51b13862017-12-20 12:51:14 +01002912meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2913run_target(
2914 'check-api-docs',
2915 depends : [man, libsystemd, libudev],
2916 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2917
Lennart Poettering0bc7a222018-10-02 09:53:05 +02002918run_target(
2919 'make-index-md',
2920 command : ['sh', '@0@/tools/make-index-md.sh'.format(meson.source_root()), meson.source_root()])
2921
Lennart Poettering51b13862017-12-20 12:51:14 +01002922############################################################
2923
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002924status = [
2925 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2926
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002927 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002928 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002929 'prefix directory: @0@'.format(prefixdir),
2930 'rootprefix directory: @0@'.format(rootprefixdir),
2931 'sysconf directory: @0@'.format(sysconfdir),
2932 'include directory: @0@'.format(includedir),
2933 'lib directory: @0@'.format(libdir),
2934 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002935 'SysV init scripts: @0@'.format(sysvinit_path),
2936 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002937 'PAM modules directory: @0@'.format(pamlibdir),
2938 'PAM configuration directory: @0@'.format(pamconfdir),
2939 'RPM macros directory: @0@'.format(rpmmacrosdir),
2940 'modprobe.d directory: @0@'.format(modprobedir),
2941 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2942 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2943 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2944 'bash completions directory: @0@'.format(bashcompletiondir),
2945 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002946 'extra start script: @0@'.format(get_option('rc-local')),
2947 'extra stop script: @0@'.format(get_option('halt-local')),
2948 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2949 get_option('debug-tty')),
2950 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09002951 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002952 'maximum system UID: @0@'.format(system_uid_max),
2953 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002954 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2955 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2956 'minimum container UID base: @0@'.format(container_uid_base_min),
2957 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002958 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002959 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002960 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002961 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002962 'nobody user name: @0@'.format(nobody_user),
2963 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002964 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002965 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002966
2967 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02002968 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002969 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2970 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2971
2972alt_dns_servers = '\n '.join(dns_servers.split(' '))
2973alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2974status += [
2975 'default DNS servers: @0@'.format(alt_dns_servers),
2976 'default NTP servers: @0@'.format(alt_ntp_servers)]
2977
2978alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2979 '@@0@'.format(time_epoch)).stdout().strip()
2980status += [
2981 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2982
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02002983status += [
2984 'static libsystemd: @0@'.format(get_option('static-libsystemd')),
2985 'static libudev: @0@'.format(get_option('static-libudev'))]
2986
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002987# TODO:
2988# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2989# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2990# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2991
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002992if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002993 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002994
2995 if have_gnu_efi
2996 status += [
2997 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2998 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002999 'EFI lib directory: @0@'.format(efi_libdir),
3000 'EFI lds directory: @0@'.format(efi_ldsdir),
3001 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003002 endif
3003endif
3004
3005found = []
3006missing = []
3007
3008foreach tuple : [
3009 ['libcryptsetup'],
3010 ['PAM'],
3011 ['AUDIT'],
3012 ['IMA'],
3013 ['AppArmor'],
3014 ['SELinux'],
3015 ['SECCOMP'],
3016 ['SMACK'],
3017 ['zlib'],
3018 ['xz'],
3019 ['lz4'],
3020 ['bzip2'],
3021 ['ACL'],
3022 ['gcrypt'],
3023 ['qrencode'],
3024 ['microhttpd'],
3025 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003026 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003027 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003028 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003029 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003030 ['libidn'],
3031 ['libiptc'],
3032 ['elfutils'],
3033 ['binfmt'],
3034 ['vconsole'],
3035 ['quotacheck'],
3036 ['tmpfiles'],
3037 ['environment.d'],
3038 ['sysusers'],
3039 ['firstboot'],
3040 ['randomseed'],
3041 ['backlight'],
3042 ['rfkill'],
3043 ['logind'],
3044 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003045 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003046 ['importd'],
3047 ['hostnamed'],
3048 ['timedated'],
3049 ['timesyncd'],
3050 ['localed'],
3051 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003052 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003053 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3054 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003055 ['coredump'],
3056 ['polkit'],
3057 ['legacy pkla', install_polkit_pkla],
3058 ['efi'],
3059 ['gnu-efi', have_gnu_efi],
3060 ['kmod'],
3061 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003062 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003063 ['blkid'],
3064 ['dbus'],
3065 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003066 ['nss-myhostname'],
3067 ['nss-mymachines'],
3068 ['nss-resolve'],
3069 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003070 ['hwdb'],
3071 ['tpm'],
3072 ['man pages', want_man],
3073 ['html pages', want_html],
3074 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003075 ['SysV compat'],
3076 ['utmp'],
3077 ['ldconfig'],
3078 ['hibernate'],
3079 ['adm group', get_option('adm-group')],
3080 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003081 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003082 ['debug hashmap'],
3083 ['debug mmap cache'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003084 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003085 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003086 ['link-udev-shared', get_option('link-udev-shared')],
3087 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003088]
3089
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003090 if tuple.length() >= 2
3091 cond = tuple[1]
3092 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003093 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3094 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003095 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003096 endif
3097 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003098 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003099 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003100 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003101 endif
3102endforeach
3103
3104status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003105 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003106 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003107 '',
3108 'disabled features: @0@'.format(', '.join(missing)),
3109 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003110message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003111
3112if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003113 warning('\n' +
3114 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3115 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3116 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003117endif