blob: 1ef07ae1a31f79c1559160b7ab5dd73688e4af31 [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-Szmek56d50ab2017-09-28 19:24:16 +02001383 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001384 include_directories : includes,
1385 link_args : ['-shared',
1386 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001387 link_with : [libbasic,
1388 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001389 link_whole : [libsystemd_static,
1390 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001391 dependencies : [threads,
1392 librt,
1393 libxz,
1394 liblz4],
1395 link_depends : libsystemd_sym,
1396 install : true,
1397 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001398
Davide Cavalca70848ec2018-04-09 02:43:35 -07001399static_libsystemd = get_option('static-libsystemd')
1400static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1401
1402install_libsystemd_static = static_library(
1403 'systemd',
1404 libsystemd_sources,
1405 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001406 basic_sources,
1407 basic_gcrypt_sources,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001408 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001409 build_by_default : static_libsystemd != 'false',
1410 install : static_libsystemd != 'false',
1411 install_dir : rootlibdir,
1412 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1413 dependencies : [threads,
1414 librt,
1415 libxz,
1416 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001417 libcap,
1418 libblkid,
1419 libmount,
1420 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001421 libgcrypt],
1422 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1423
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001424############################################################
1425
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001426# binaries that have --help and are intended for use by humans,
1427# usually, but not always, installed in /bin.
1428public_programs = []
1429
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001430subdir('src/libudev')
1431subdir('src/shared')
1432subdir('src/core')
1433subdir('src/udev')
1434subdir('src/network')
1435
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001436subdir('src/analyze')
1437subdir('src/journal-remote')
1438subdir('src/coredump')
1439subdir('src/hostname')
1440subdir('src/import')
1441subdir('src/kernel-install')
1442subdir('src/locale')
1443subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001444subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001445subdir('src/nspawn')
1446subdir('src/resolve')
1447subdir('src/timedate')
1448subdir('src/timesync')
1449subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001450subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001451
1452subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001453subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001454subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001455subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001456
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001457############################################################
1458
1459# only static linking apart from libdl, to make sure that the
1460# module is linked to all libraries that it uses.
1461test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001462 'test-dlopen',
1463 test_dlopen_c,
1464 include_directories : includes,
1465 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001466 dependencies : [libdl],
1467 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001468
Yu Watanabe08540a92018-07-18 09:25:57 +09001469foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001470 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001471 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1472 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001473
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001474 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001475 if condition
1476 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001477
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001478 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001479 version_script_arg = join_paths(meson.source_root(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001480
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001481 nss = shared_library(
1482 'nss_' + module,
1483 'src/nss-@0@/nss-@0@.c'.format(module),
1484 version : '2',
1485 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001486 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1487 link_args : ['-Wl,-z,nodelete',
1488 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001489 '-Wl,--version-script=' + version_script_arg,
1490 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001491 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001492 libbasic],
1493 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001494 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001495 link_depends : sym,
1496 install : true,
1497 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001498
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001499 # We cannot use shared_module because it does not support version suffix.
1500 # Unfortunately shared_library insists on creating the symlink…
1501 meson.add_install_script('sh', '-c',
1502 'rm $DESTDIR@0@/libnss_@1@.so'
1503 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001504
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001505 if want_tests != 'false'
1506 test('dlopen-nss_' + module,
1507 test_dlopen,
1508 # path to dlopen must include a slash
1509 args : nss.full_path())
1510 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001511 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001512endforeach
1513
1514############################################################
1515
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001516executable('systemd',
1517 systemd_sources,
1518 include_directories : includes,
1519 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001520 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001521 dependencies : [threads,
1522 librt,
1523 libseccomp,
1524 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001525 libmount,
1526 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001527 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001528 install : true,
1529 install_dir : rootlibexecdir)
1530
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001531meson.add_install_script(meson_make_symlink,
1532 join_paths(rootlibexecdir, 'systemd'),
1533 join_paths(rootsbindir, 'init'))
1534
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001535exe = executable('systemd-analyze',
1536 systemd_analyze_sources,
1537 include_directories : includes,
1538 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001539 libshared],
1540 dependencies : [threads,
1541 librt,
1542 libseccomp,
1543 libselinux,
1544 libmount,
1545 libblkid],
1546 install_rpath : rootlibexecdir,
1547 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001548public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001549
1550executable('systemd-journald',
1551 systemd_journald_sources,
1552 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001553 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001554 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001555 dependencies : [threads,
1556 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001557 liblz4,
1558 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001559 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001560 install : true,
1561 install_dir : rootlibexecdir)
1562
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001563exe = executable('systemd-cat',
1564 systemd_cat_sources,
1565 include_directories : includes,
1566 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001567 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001568 dependencies : [threads],
1569 install_rpath : rootlibexecdir,
1570 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001571public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001572
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001573exe = executable('journalctl',
1574 journalctl_sources,
1575 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001576 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001577 dependencies : [threads,
1578 libqrencode,
1579 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001580 liblz4,
1581 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001582 install_rpath : rootlibexecdir,
1583 install : true,
1584 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001585public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001586
1587executable('systemd-getty-generator',
1588 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001589 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001590 link_with : [libshared],
1591 install_rpath : rootlibexecdir,
1592 install : true,
1593 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001594
1595executable('systemd-debug-generator',
1596 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001597 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001598 link_with : [libshared],
1599 install_rpath : rootlibexecdir,
1600 install : true,
1601 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001602
1603executable('systemd-fstab-generator',
1604 'src/fstab-generator/fstab-generator.c',
1605 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001606 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001607 link_with : [libshared],
1608 install_rpath : rootlibexecdir,
1609 install : true,
1610 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001611
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001612if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001613 executable('30-systemd-environment-d-generator',
1614 'src/environment-d-generator/environment-d-generator.c',
1615 include_directories : includes,
1616 link_with : [libshared],
1617 install_rpath : rootlibexecdir,
1618 install : true,
1619 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001620
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001621 meson.add_install_script(meson_make_symlink,
1622 join_paths(sysconfdir, 'environment'),
1623 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001624endif
1625
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001626if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001627 executable('systemd-hibernate-resume-generator',
1628 'src/hibernate-resume/hibernate-resume-generator.c',
1629 include_directories : includes,
1630 link_with : [libshared],
1631 install_rpath : rootlibexecdir,
1632 install : true,
1633 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001634
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001635 executable('systemd-hibernate-resume',
1636 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001637 include_directories : includes,
1638 link_with : [libshared],
1639 install_rpath : rootlibexecdir,
1640 install : true,
1641 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001642endif
1643
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001644if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001645 executable('systemd-gpt-auto-generator',
1646 'src/gpt-auto-generator/gpt-auto-generator.c',
1647 'src/basic/blkid-util.h',
1648 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001649 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001650 dependencies : libblkid,
1651 install_rpath : rootlibexecdir,
1652 install : true,
1653 install_dir : systemgeneratordir)
1654
1655 exe = executable('systemd-dissect',
1656 'src/dissect/dissect.c',
1657 include_directories : includes,
1658 link_with : [libshared],
1659 install_rpath : rootlibexecdir,
1660 install : true,
1661 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001662 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001663endif
1664
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001665if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001666 executable('systemd-resolved',
1667 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001668 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001669 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001670 libbasic_gcrypt,
1671 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001672 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001673 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001674 install : true,
1675 install_dir : rootlibexecdir)
1676
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001677 exe = executable('resolvectl',
1678 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001679 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001680 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001681 libbasic_gcrypt,
1682 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001683 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001684 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001685 libm,
1686 libidn],
1687 install_rpath : rootlibexecdir,
1688 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001689 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001690
1691 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001692 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001693 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001694
1695 meson.add_install_script(meson_make_symlink,
1696 join_paths(bindir, 'resolvectl'),
1697 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001698endif
1699
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001700if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001701 executable('systemd-logind',
1702 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001703 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001704 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001705 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001706 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001707 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001708 install_rpath : rootlibexecdir,
1709 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001710 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001711
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001712 exe = executable('loginctl',
1713 loginctl_sources,
1714 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001715 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001716 dependencies : [threads,
1717 liblz4,
1718 libxz],
1719 install_rpath : rootlibexecdir,
1720 install : true,
1721 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001722 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001723
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001724 exe = executable('systemd-inhibit',
1725 'src/login/inhibit.c',
1726 include_directories : includes,
1727 link_with : [libshared],
1728 install_rpath : rootlibexecdir,
1729 install : true,
1730 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001731 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001732
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001733 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001734 version_script_arg = join_paths(meson.source_root(), pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001735 pam_systemd = shared_library(
1736 'pam_systemd',
1737 pam_systemd_c,
1738 name_prefix : '',
1739 include_directories : includes,
1740 link_args : ['-shared',
1741 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001742 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001743 libshared_static],
1744 dependencies : [threads,
1745 libpam,
1746 libpam_misc],
1747 link_depends : pam_systemd_sym,
1748 install : true,
1749 install_dir : pamlibdir)
1750
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001751 if want_tests != 'false'
1752 test('dlopen-pam_systemd',
1753 test_dlopen,
1754 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001755 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001756 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001757 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001758endif
1759
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001760executable('systemd-user-runtime-dir',
1761 user_runtime_dir_sources,
1762 include_directories : includes,
1763 link_with : [libshared, liblogind_core],
1764 install_rpath : rootlibexecdir,
1765 install : true,
1766 install_dir : rootlibexecdir)
1767
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001768if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001769 executable('systemd-user-sessions',
1770 'src/user-sessions/user-sessions.c',
1771 include_directories : includes,
1772 link_with : [libshared],
1773 install_rpath : rootlibexecdir,
1774 install : true,
1775 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001776endif
1777
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001778if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001779 exe = executable('bootctl',
1780 'src/boot/bootctl.c',
1781 include_directories : includes,
1782 link_with : [libshared],
1783 dependencies : [libblkid],
1784 install_rpath : rootlibexecdir,
1785 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001786 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001787endif
1788
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001789exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1790 include_directories : includes,
1791 link_with : [libshared],
1792 dependencies : [threads],
1793 install_rpath : rootlibexecdir,
1794 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001795public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001796
Felipe Satelerf3794362018-05-22 15:08:57 -04001797
1798if get_option('link-systemctl-shared')
1799 systemctl_link_with = [libshared]
1800else
1801 systemctl_link_with = [libsystemd_static,
1802 libshared_static,
1803 libjournal_client,
1804 libbasic_gcrypt]
1805endif
1806
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001807exe = executable('systemctl', 'src/systemctl/systemctl.c',
1808 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001809 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001810 dependencies : [threads,
1811 libcap,
1812 libselinux,
1813 libxz,
1814 liblz4],
1815 install_rpath : rootlibexecdir,
1816 install : true,
1817 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001818public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001819
Lennart Poettering61d05782018-04-16 21:41:40 +02001820if conf.get('ENABLE_PORTABLED') == 1
1821 executable('systemd-portabled',
1822 systemd_portabled_sources,
1823 include_directories : includes,
1824 link_with : [libshared],
1825 dependencies : [threads],
1826 install_rpath : rootlibexecdir,
1827 install : true,
1828 install_dir : rootlibexecdir)
1829
1830 exe = executable('portablectl', 'src/portable/portablectl.c',
1831 include_directories : includes,
1832 link_with : [libshared],
1833 dependencies : [threads],
1834 install_rpath : rootlibexecdir,
1835 install : true,
1836 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001837 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001838endif
1839
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001840foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1841 meson.add_install_script(meson_make_symlink,
1842 join_paths(rootbindir, 'systemctl'),
1843 join_paths(rootsbindir, alias))
1844endforeach
1845
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001846if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001847 executable('systemd-backlight',
1848 'src/backlight/backlight.c',
1849 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001850 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001851 install_rpath : rootlibexecdir,
1852 install : true,
1853 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001854endif
1855
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001856if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001857 executable('systemd-rfkill',
1858 'src/rfkill/rfkill.c',
1859 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001860 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001861 install_rpath : rootlibexecdir,
1862 install : true,
1863 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001864endif
1865
1866executable('systemd-system-update-generator',
1867 'src/system-update-generator/system-update-generator.c',
1868 include_directories : includes,
1869 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001870 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001871 install : true,
1872 install_dir : systemgeneratordir)
1873
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001874if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001875 executable('systemd-cryptsetup',
1876 'src/cryptsetup/cryptsetup.c',
1877 include_directories : includes,
1878 link_with : [libshared],
1879 dependencies : [libcryptsetup],
1880 install_rpath : rootlibexecdir,
1881 install : true,
1882 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001883
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001884 executable('systemd-cryptsetup-generator',
1885 'src/cryptsetup/cryptsetup-generator.c',
1886 include_directories : includes,
1887 link_with : [libshared],
1888 dependencies : [libcryptsetup],
1889 install_rpath : rootlibexecdir,
1890 install : true,
1891 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001892
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001893 executable('systemd-veritysetup',
1894 'src/veritysetup/veritysetup.c',
1895 include_directories : includes,
1896 link_with : [libshared],
1897 dependencies : [libcryptsetup],
1898 install_rpath : rootlibexecdir,
1899 install : true,
1900 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001901
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001902 executable('systemd-veritysetup-generator',
1903 'src/veritysetup/veritysetup-generator.c',
1904 include_directories : includes,
1905 link_with : [libshared],
1906 dependencies : [libcryptsetup],
1907 install_rpath : rootlibexecdir,
1908 install : true,
1909 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001910endif
1911
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001912if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001913 executable('systemd-sysv-generator',
1914 'src/sysv-generator/sysv-generator.c',
1915 include_directories : includes,
1916 link_with : [libshared],
1917 install_rpath : rootlibexecdir,
1918 install : true,
1919 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001920
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001921 executable('systemd-rc-local-generator',
1922 'src/rc-local-generator/rc-local-generator.c',
1923 include_directories : includes,
1924 link_with : [libshared],
1925 install_rpath : rootlibexecdir,
1926 install : true,
1927 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001928endif
1929
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001930if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001931 executable('systemd-hostnamed',
1932 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001933 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001934 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001935 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001936 install : true,
1937 install_dir : rootlibexecdir)
1938
1939 exe = executable('hostnamectl',
1940 'src/hostname/hostnamectl.c',
1941 include_directories : includes,
1942 link_with : [libshared],
1943 install_rpath : rootlibexecdir,
1944 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001945 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001946endif
1947
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001948if conf.get('ENABLE_LOCALED') == 1
1949 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001950 # logind will load libxkbcommon.so dynamically on its own
1951 deps = [libdl]
1952 else
1953 deps = []
1954 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001955
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001956 executable('systemd-localed',
1957 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001958 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001959 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001960 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001961 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001962 install : true,
1963 install_dir : rootlibexecdir)
1964
1965 exe = executable('localectl',
1966 localectl_sources,
1967 include_directories : includes,
1968 link_with : [libshared],
1969 install_rpath : rootlibexecdir,
1970 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001971 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001972endif
1973
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001974if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001975 executable('systemd-timedated',
1976 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001977 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001978 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001979 install_rpath : rootlibexecdir,
1980 install : true,
1981 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09001982endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001983
Yu Watanabe6129ec82018-05-03 18:07:43 +09001984if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001985 exe = executable('timedatectl',
1986 'src/timedate/timedatectl.c',
1987 include_directories : includes,
1988 install_rpath : rootlibexecdir,
1989 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09001990 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001991 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001992 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001993endif
1994
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001995if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001996 executable('systemd-timesyncd',
1997 systemd_timesyncd_sources,
1998 include_directories : includes,
1999 link_with : [libshared],
2000 dependencies : [threads,
2001 libm],
2002 install_rpath : rootlibexecdir,
2003 install : true,
2004 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002005
2006 executable('systemd-time-wait-sync',
2007 'src/time-wait-sync/time-wait-sync.c',
2008 include_directories : includes,
2009 link_with : [libshared],
2010 install_rpath : rootlibexecdir,
2011 install : true,
2012 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002013endif
2014
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002015if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002016 executable('systemd-machined',
2017 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002018 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002019 link_with : [libmachine_core,
2020 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002021 install_rpath : rootlibexecdir,
2022 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002023 install_dir : rootlibexecdir)
2024
2025 exe = executable('machinectl',
2026 'src/machine/machinectl.c',
2027 include_directories : includes,
2028 link_with : [libshared],
2029 dependencies : [threads,
2030 libxz,
2031 liblz4],
2032 install_rpath : rootlibexecdir,
2033 install : true,
2034 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002035 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002036endif
2037
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002038if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002039 executable('systemd-importd',
2040 systemd_importd_sources,
2041 include_directories : includes,
2042 link_with : [libshared],
2043 dependencies : [threads],
2044 install_rpath : rootlibexecdir,
2045 install : true,
2046 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002047
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002048 systemd_pull = executable('systemd-pull',
2049 systemd_pull_sources,
2050 include_directories : includes,
2051 link_with : [libshared],
2052 dependencies : [libcurl,
2053 libz,
2054 libbzip2,
2055 libxz,
2056 libgcrypt],
2057 install_rpath : rootlibexecdir,
2058 install : true,
2059 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002060
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002061 systemd_import = executable('systemd-import',
2062 systemd_import_sources,
2063 include_directories : includes,
2064 link_with : [libshared],
2065 dependencies : [libcurl,
2066 libz,
2067 libbzip2,
2068 libxz],
2069 install_rpath : rootlibexecdir,
2070 install : true,
2071 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002072
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002073 systemd_export = executable('systemd-export',
2074 systemd_export_sources,
2075 include_directories : includes,
2076 link_with : [libshared],
2077 dependencies : [libcurl,
2078 libz,
2079 libbzip2,
2080 libxz],
2081 install_rpath : rootlibexecdir,
2082 install : true,
2083 install_dir : rootlibexecdir)
2084 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002085endif
2086
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002087if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002088 exe = executable('systemd-journal-upload',
2089 systemd_journal_upload_sources,
2090 include_directories : includes,
2091 link_with : [libshared],
2092 dependencies : [threads,
2093 libcurl,
2094 libgnutls,
2095 libxz,
2096 liblz4],
2097 install_rpath : rootlibexecdir,
2098 install : true,
2099 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002100 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002101endif
2102
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002103if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002104 s_j_remote = executable('systemd-journal-remote',
2105 systemd_journal_remote_sources,
2106 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002107 link_with : [libshared,
2108 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002109 dependencies : [threads,
2110 libmicrohttpd,
2111 libgnutls,
2112 libxz,
2113 liblz4],
2114 install_rpath : rootlibexecdir,
2115 install : true,
2116 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002117
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002118 s_j_gatewayd = executable('systemd-journal-gatewayd',
2119 systemd_journal_gatewayd_sources,
2120 include_directories : includes,
2121 link_with : [libshared],
2122 dependencies : [threads,
2123 libmicrohttpd,
2124 libgnutls,
2125 libxz,
2126 liblz4],
2127 install_rpath : rootlibexecdir,
2128 install : true,
2129 install_dir : rootlibexecdir)
2130 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002131endif
2132
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002133if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002134 executable('systemd-coredump',
2135 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002136 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002137 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002138 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002139 libacl,
2140 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002141 libxz,
2142 liblz4],
2143 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002144 install : true,
2145 install_dir : rootlibexecdir)
2146
2147 exe = executable('coredumpctl',
2148 coredumpctl_sources,
2149 include_directories : includes,
2150 link_with : [libshared],
2151 dependencies : [threads,
2152 libxz,
2153 liblz4],
2154 install_rpath : rootlibexecdir,
2155 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002156 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002157endif
2158
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002159if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002160 exe = executable('systemd-binfmt',
2161 'src/binfmt/binfmt.c',
2162 include_directories : includes,
2163 link_with : [libshared],
2164 install_rpath : rootlibexecdir,
2165 install : true,
2166 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002167 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002168
2169 meson.add_install_script('sh', '-c',
2170 mkdir_p.format(binfmtdir))
2171 meson.add_install_script('sh', '-c',
2172 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2173endif
2174
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002175if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002176 executable('systemd-vconsole-setup',
2177 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002178 include_directories : includes,
2179 link_with : [libshared],
2180 install_rpath : rootlibexecdir,
2181 install : true,
2182 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002183endif
2184
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002185if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002186 executable('systemd-random-seed',
2187 'src/random-seed/random-seed.c',
2188 include_directories : includes,
2189 link_with : [libshared],
2190 install_rpath : rootlibexecdir,
2191 install : true,
2192 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002193endif
2194
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002195if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002196 executable('systemd-firstboot',
2197 'src/firstboot/firstboot.c',
2198 include_directories : includes,
2199 link_with : [libshared],
2200 dependencies : [libcrypt],
2201 install_rpath : rootlibexecdir,
2202 install : true,
2203 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002204endif
2205
2206executable('systemd-remount-fs',
2207 'src/remount-fs/remount-fs.c',
2208 'src/core/mount-setup.c',
2209 'src/core/mount-setup.h',
2210 include_directories : includes,
2211 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002212 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002213 install : true,
2214 install_dir : rootlibexecdir)
2215
2216executable('systemd-machine-id-setup',
2217 'src/machine-id-setup/machine-id-setup-main.c',
2218 'src/core/machine-id-setup.c',
2219 'src/core/machine-id-setup.h',
2220 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002221 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002222 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002223 install : true,
2224 install_dir : rootbindir)
2225
2226executable('systemd-fsck',
2227 'src/fsck/fsck.c',
2228 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002229 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002230 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002231 install : true,
2232 install_dir : rootlibexecdir)
2233
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002234executable('systemd-growfs',
2235 'src/partition/growfs.c',
2236 include_directories : includes,
2237 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002238 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002239 install_rpath : rootlibexecdir,
2240 install : true,
2241 install_dir : rootlibexecdir)
2242
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002243executable('systemd-makefs',
2244 'src/partition/makefs.c',
2245 include_directories : includes,
2246 link_with : [libshared],
2247 install_rpath : rootlibexecdir,
2248 install : true,
2249 install_dir : rootlibexecdir)
2250
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002251executable('systemd-sleep',
2252 'src/sleep/sleep.c',
2253 include_directories : includes,
2254 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002255 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002256 install : true,
2257 install_dir : rootlibexecdir)
2258
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002259exe = executable('systemd-sysctl',
2260 'src/sysctl/sysctl.c',
2261 include_directories : includes,
2262 link_with : [libshared],
2263 install_rpath : rootlibexecdir,
2264 install : true,
2265 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002266public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002267
2268executable('systemd-ac-power',
2269 'src/ac-power/ac-power.c',
2270 include_directories : includes,
2271 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002272 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002273 install : true,
2274 install_dir : rootlibexecdir)
2275
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002276exe = executable('systemd-detect-virt',
2277 'src/detect-virt/detect-virt.c',
2278 include_directories : includes,
2279 link_with : [libshared],
2280 install_rpath : rootlibexecdir,
2281 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002282public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002283
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002284exe = executable('systemd-delta',
2285 'src/delta/delta.c',
2286 include_directories : includes,
2287 link_with : [libshared],
2288 install_rpath : rootlibexecdir,
2289 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002290public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002291
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002292exe = executable('systemd-escape',
2293 'src/escape/escape.c',
2294 include_directories : includes,
2295 link_with : [libshared],
2296 install_rpath : rootlibexecdir,
2297 install : true,
2298 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002299public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002300
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002301exe = executable('systemd-notify',
2302 'src/notify/notify.c',
2303 include_directories : includes,
2304 link_with : [libshared],
2305 install_rpath : rootlibexecdir,
2306 install : true,
2307 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002308public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002309
2310executable('systemd-volatile-root',
2311 'src/volatile-root/volatile-root.c',
2312 include_directories : includes,
2313 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002314 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002315 install : true,
2316 install_dir : rootlibexecdir)
2317
2318executable('systemd-cgroups-agent',
2319 'src/cgroups-agent/cgroups-agent.c',
2320 include_directories : includes,
2321 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002322 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002323 install : true,
2324 install_dir : rootlibexecdir)
2325
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002326exe = executable('systemd-id128',
2327 'src/id128/id128.c',
2328 include_directories : includes,
2329 link_with : [libshared],
2330 install_rpath : rootlibexecdir,
2331 install : true)
2332public_programs += exe
2333
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002334exe = executable('systemd-path',
2335 'src/path/path.c',
2336 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002337 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002338 install_rpath : rootlibexecdir,
2339 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002340public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002341
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002342exe = executable('systemd-ask-password',
2343 'src/ask-password/ask-password.c',
2344 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002345 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002346 install_rpath : rootlibexecdir,
2347 install : true,
2348 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002349public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002350
2351executable('systemd-reply-password',
2352 'src/reply-password/reply-password.c',
2353 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002354 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002355 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002356 install : true,
2357 install_dir : rootlibexecdir)
2358
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002359exe = executable('systemd-tty-ask-password-agent',
2360 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2361 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002362 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002363 install_rpath : rootlibexecdir,
2364 install : true,
2365 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002366public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002367
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002368exe = executable('systemd-cgls',
2369 'src/cgls/cgls.c',
2370 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002371 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002372 install_rpath : rootlibexecdir,
2373 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002374public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002375
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002376exe = executable('systemd-cgtop',
2377 'src/cgtop/cgtop.c',
2378 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002379 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002380 install_rpath : rootlibexecdir,
2381 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002382public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002383
2384executable('systemd-initctl',
2385 'src/initctl/initctl.c',
2386 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002387 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002388 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002389 install : true,
2390 install_dir : rootlibexecdir)
2391
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002392exe = executable('systemd-mount',
2393 'src/mount/mount-tool.c',
2394 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002395 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002396 install_rpath : rootlibexecdir,
2397 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002398public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002399
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002400meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002401 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002402
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002403exe = executable('systemd-run',
2404 'src/run/run.c',
2405 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002406 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002407 install_rpath : rootlibexecdir,
2408 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002409public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002410
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002411exe = executable('systemd-stdio-bridge',
2412 'src/stdio-bridge/stdio-bridge.c',
2413 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002414 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002415 install_rpath : rootlibexecdir,
2416 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002417public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002418
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002419exe = executable('busctl',
2420 'src/busctl/busctl.c',
2421 'src/busctl/busctl-introspect.c',
2422 'src/busctl/busctl-introspect.h',
2423 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002424 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002425 install_rpath : rootlibexecdir,
2426 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002427public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002428
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002429if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002430 exe = executable('systemd-sysusers',
2431 'src/sysusers/sysusers.c',
2432 include_directories : includes,
2433 link_with : [libshared],
2434 install_rpath : rootlibexecdir,
2435 install : true,
2436 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002437 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002438endif
2439
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002440if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002441 exe = executable('systemd-tmpfiles',
2442 'src/tmpfiles/tmpfiles.c',
2443 include_directories : includes,
2444 link_with : [libshared],
2445 dependencies : [libacl],
2446 install_rpath : rootlibexecdir,
2447 install : true,
2448 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002449 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002450
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002451 if want_tests != 'false'
2452 test('test-systemd-tmpfiles',
2453 test_systemd_tmpfiles_py,
2454 # https://github.com/mesonbuild/meson/issues/2681
2455 args : exe.full_path())
2456 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002457endif
2458
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002459if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002460 exe = executable('systemd-hwdb',
2461 'src/hwdb/hwdb.c',
2462 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2463 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002464 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002465 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002466 install : true,
2467 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002468 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002469endif
2470
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002471if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002472 executable('systemd-quotacheck',
2473 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002474 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002475 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002476 install_rpath : rootlibexecdir,
2477 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002478 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002479endif
2480
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002481exe = executable('systemd-socket-proxyd',
2482 'src/socket-proxy/socket-proxyd.c',
2483 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002484 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002485 dependencies : [threads],
2486 install_rpath : rootlibexecdir,
2487 install : true,
2488 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002489public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002490
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002491exe = executable('systemd-udevd',
2492 systemd_udevd_sources,
2493 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002494 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002495 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002496 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002497 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002498 dependencies : [threads,
2499 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002500 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002501 libacl,
2502 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002503 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002504 install : true,
2505 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002506public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002507
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002508exe = executable('udevadm',
2509 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002510 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002511 include_directories : includes,
2512 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002513 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002514 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002515 dependencies : [threads,
2516 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002517 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002518 libacl,
2519 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002520 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002521 install : true,
2522 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002523public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002524
2525executable('systemd-shutdown',
2526 systemd_shutdown_sources,
2527 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002528 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002529 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002530 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002531 install : true,
2532 install_dir : rootlibexecdir)
2533
2534executable('systemd-update-done',
2535 'src/update-done/update-done.c',
2536 include_directories : includes,
2537 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002538 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002539 install : true,
2540 install_dir : rootlibexecdir)
2541
2542executable('systemd-update-utmp',
2543 'src/update-utmp/update-utmp.c',
2544 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002545 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002546 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002547 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002548 install : true,
2549 install_dir : rootlibexecdir)
2550
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002551if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002552 executable('systemd-modules-load',
2553 'src/modules-load/modules-load.c',
2554 include_directories : includes,
2555 link_with : [libshared],
2556 dependencies : [libkmod],
2557 install_rpath : rootlibexecdir,
2558 install : true,
2559 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002560
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002561 meson.add_install_script('sh', '-c',
2562 mkdir_p.format(modulesloaddir))
2563 meson.add_install_script('sh', '-c',
2564 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002565endif
2566
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002567exe = executable('systemd-nspawn',
2568 systemd_nspawn_sources,
2569 'src/core/mount-setup.c', # FIXME: use a variable?
2570 'src/core/mount-setup.h',
2571 'src/core/loopback-setup.c',
2572 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002573 include_directories : includes,
2574 link_with : [libnspawn_core,
2575 libshared],
2576 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002577 install_rpath : rootlibexecdir,
2578 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002579public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002580
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002581if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002582 executable('systemd-networkd',
2583 systemd_networkd_sources,
2584 include_directories : includes,
2585 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002586 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002587 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002588 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002589 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002590 install_rpath : rootlibexecdir,
2591 install : true,
2592 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002593
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002594 executable('systemd-networkd-wait-online',
2595 systemd_networkd_wait_online_sources,
2596 include_directories : includes,
2597 link_with : [libnetworkd_core,
2598 libshared],
2599 install_rpath : rootlibexecdir,
2600 install : true,
2601 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002602
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002603 exe = executable('networkctl',
2604 networkctl_sources,
2605 include_directories : includes,
2606 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002607 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002608 install_rpath : rootlibexecdir,
2609 install : true,
2610 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002611 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002612endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002613
2614executable('systemd-sulogin-shell',
2615 ['src/sulogin-shell/sulogin-shell.c'],
2616 include_directories : includes,
2617 link_with : [libshared],
2618 install_rpath : rootlibexecdir,
2619 install : true,
2620 install_dir : rootlibexecdir)
2621
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002622############################################################
2623
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002624custom_target(
2625 'systemd-runtest.env',
2626 output : 'systemd-runtest.env',
2627 command : ['sh', '-c', '{ ' +
2628 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(meson.current_source_dir(), 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002629 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002630 '} >@OUTPUT@'],
2631 build_by_default : true)
2632
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002633foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002634 sources = tuple[0]
2635 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2636 dependencies = tuple[2]
2637 condition = tuple.length() >= 4 ? tuple[3] : ''
2638 type = tuple.length() >= 5 ? tuple[4] : ''
2639 defs = tuple.length() >= 6 ? tuple[5] : []
2640 incs = tuple.length() >= 7 ? tuple[6] : includes
2641 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002642
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002643 name = sources[0].split('/')[-1].split('.')[0]
2644 if type.startswith('timeout=')
2645 timeout = type.split('=')[1].to_int()
2646 type = ''
2647 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002648
2649 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002650 exe = executable(
2651 name,
2652 sources,
2653 include_directories : incs,
2654 link_with : link_with,
2655 dependencies : dependencies,
2656 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002657 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002658 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002659 install : install_tests,
2660 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002661
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002662 if type == 'manual'
2663 message('@0@ is a manual test'.format(name))
2664 elif type == 'unsafe' and want_tests != 'unsafe'
2665 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002666 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002667 test(name, exe,
2668 env : test_env,
2669 timeout : timeout)
2670 endif
2671 else
2672 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2673 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002674endforeach
2675
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002676exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002677 'test-libsystemd-sym',
2678 test_libsystemd_sym_c,
2679 include_directories : includes,
2680 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002681 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002682 install : install_tests,
2683 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002684if want_tests != 'false'
2685 test('test-libsystemd-sym', exe)
2686endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002687
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002688exe = executable(
2689 'test-libsystemd-static-sym',
2690 test_libsystemd_sym_c,
2691 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002692 link_with : [install_libsystemd_static],
2693 dependencies : [threads], # threads is already included in dependencies on the library,
2694 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002695 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002696 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002697 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002698if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002699 test('test-libsystemd-static-sym', exe)
2700endif
2701
2702exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002703 'test-libudev-sym',
2704 test_libudev_sym_c,
2705 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002706 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002707 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002708 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002709 install : install_tests,
2710 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002711if want_tests != 'false'
2712 test('test-libudev-sym', exe)
2713endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002714
2715exe = executable(
2716 'test-libudev-static-sym',
2717 test_libudev_sym_c,
2718 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002719 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002720 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002721 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002722 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002723 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002724if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002725 test('test-libudev-static-sym', exe)
2726endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002727
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002728############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002729
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002730fuzzer_exes = []
2731
2732foreach tuple : fuzzers
2733 sources = tuple[0]
2734 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2735 dependencies = tuple[2]
2736 defs = tuple.length() >= 4 ? tuple[3] : []
2737 incs = tuple.length() >= 5 ? tuple[4] : includes
2738
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002739 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002740 dependencies += fuzzing_engine
2741 else
2742 sources += 'src/fuzz/fuzz-main.c'
2743 endif
2744
2745 name = sources[0].split('/')[-1].split('.')[0]
2746
2747 fuzzer_exes += executable(
2748 name,
2749 sources,
2750 include_directories : [incs, include_directories('src/fuzz')],
2751 link_with : link_with,
2752 dependencies : dependencies,
2753 c_args : defs,
2754 install : false)
2755endforeach
2756
2757run_target('fuzzers',
2758 depends : fuzzer_exes,
2759 command : ['true'])
2760
2761############################################################
2762
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002763make_directive_index_py = find_program('tools/make-directive-index.py')
2764make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002765xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002766hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002767
2768subdir('units')
2769subdir('sysctl.d')
2770subdir('sysusers.d')
2771subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002772subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002773subdir('hwdb')
2774subdir('network')
2775subdir('man')
2776subdir('shell-completion/bash')
2777subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002778subdir('docs/sysvinit')
2779subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002780
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002781install_subdir('factory/etc',
2782 install_dir : factorydir)
2783
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002784install_data('xorg/50-systemd-user.sh',
2785 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002786install_data('modprobe.d/systemd.conf',
2787 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002788install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002789 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002790 'NEWS',
2791 'README',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002792 'docs/CODING_STYLE',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002793 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002794 'docs/ENVIRONMENT.md',
2795 'docs/HACKING',
2796 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002797 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002798 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002799 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2800 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002801
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002802meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2803meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2804
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002805############################################################
2806
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002807meson_check_help = find_program('tools/meson-check-help.sh')
2808
2809foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002810 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002811 if want_tests != 'false'
2812 test('check-help-' + name,
2813 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002814 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002815 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002816endforeach
2817
2818############################################################
2819
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002820# Enable tests for all supported sanitizers
2821foreach tuple : sanitizers
2822 sanitizer = tuple[0]
2823 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002824
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002825 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002826 prev = ''
2827 foreach p : fuzz_regression_tests
2828 b = p.split('/')[-2]
2829 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002830
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002831 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002832
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002833 if name != prev
2834 if want_tests == 'false'
2835 message('Not compiling @0@ because tests is set to false'.format(name))
2836 elif slow_tests
2837 exe = custom_target(
2838 name,
2839 output : name,
2840 depends : build,
2841 command : [env, 'ln', '-fs',
2842 join_paths(build.full_path(), b),
2843 '@OUTPUT@'],
2844 build_by_default : true)
2845 else
2846 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2847 endif
2848 endif
2849 prev = name
2850
2851 if want_tests != 'false' and slow_tests
2852 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2853 env,
2854 args : [exe.full_path(),
Zbigniew Jędrzejewski-Szmeke6bad672018-08-10 17:15:05 +02002855 join_paths(meson.source_root(), p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002856 endif
2857 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002858 endif
2859endforeach
2860
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002861
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002862############################################################
2863
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002864if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002865 all_files = run_command(
2866 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002867 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002868 'ls-files',
2869 ':/*.[ch]'])
2870 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002871
userwithuide85a6902017-08-09 13:41:44 +00002872 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002873 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002874 output : 'tags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002875 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.source_root())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00002876 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002877 'ctags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002878 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.source_root())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002879endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002880
2881if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002882 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002883 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002884 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002885 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002886endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002887
2888if git.found()
2889 git_head = run_command(
2890 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002891 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002892 'rev-parse', 'HEAD']).stdout().strip()
2893 git_head_short = run_command(
2894 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002895 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002896 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2897
2898 run_target(
2899 'git-snapshot',
2900 command : ['git', 'archive',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002901 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.source_root(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002902 git_head_short),
2903 '--prefix', 'systemd-@0@/'.format(git_head),
2904 'HEAD'])
2905endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002906
2907############################################################
2908
Lennart Poettering51b13862017-12-20 12:51:14 +01002909meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2910run_target(
2911 'check-api-docs',
2912 depends : [man, libsystemd, libudev],
2913 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2914
Lennart Poettering0bc7a222018-10-02 09:53:05 +02002915run_target(
2916 'make-index-md',
2917 command : ['sh', '@0@/tools/make-index-md.sh'.format(meson.source_root()), meson.source_root()])
2918
Lennart Poettering51b13862017-12-20 12:51:14 +01002919############################################################
2920
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002921status = [
2922 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2923
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002924 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002925 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002926 'prefix directory: @0@'.format(prefixdir),
2927 'rootprefix directory: @0@'.format(rootprefixdir),
2928 'sysconf directory: @0@'.format(sysconfdir),
2929 'include directory: @0@'.format(includedir),
2930 'lib directory: @0@'.format(libdir),
2931 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002932 'SysV init scripts: @0@'.format(sysvinit_path),
2933 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002934 'PAM modules directory: @0@'.format(pamlibdir),
2935 'PAM configuration directory: @0@'.format(pamconfdir),
2936 'RPM macros directory: @0@'.format(rpmmacrosdir),
2937 'modprobe.d directory: @0@'.format(modprobedir),
2938 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2939 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2940 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2941 'bash completions directory: @0@'.format(bashcompletiondir),
2942 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002943 'extra start script: @0@'.format(get_option('rc-local')),
2944 'extra stop script: @0@'.format(get_option('halt-local')),
2945 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2946 get_option('debug-tty')),
2947 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09002948 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002949 'maximum system UID: @0@'.format(system_uid_max),
2950 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002951 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2952 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2953 'minimum container UID base: @0@'.format(container_uid_base_min),
2954 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002955 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002956 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002957 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002958 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002959 'nobody user name: @0@'.format(nobody_user),
2960 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002961 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002962 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002963
2964 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02002965 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002966 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2967 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2968
2969alt_dns_servers = '\n '.join(dns_servers.split(' '))
2970alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2971status += [
2972 'default DNS servers: @0@'.format(alt_dns_servers),
2973 'default NTP servers: @0@'.format(alt_ntp_servers)]
2974
2975alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2976 '@@0@'.format(time_epoch)).stdout().strip()
2977status += [
2978 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2979
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02002980status += [
2981 'static libsystemd: @0@'.format(get_option('static-libsystemd')),
2982 'static libudev: @0@'.format(get_option('static-libudev'))]
2983
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002984# TODO:
2985# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2986# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2987# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2988
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002989if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002990 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002991
2992 if have_gnu_efi
2993 status += [
2994 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2995 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002996 'EFI lib directory: @0@'.format(efi_libdir),
2997 'EFI lds directory: @0@'.format(efi_ldsdir),
2998 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002999 endif
3000endif
3001
3002found = []
3003missing = []
3004
3005foreach tuple : [
3006 ['libcryptsetup'],
3007 ['PAM'],
3008 ['AUDIT'],
3009 ['IMA'],
3010 ['AppArmor'],
3011 ['SELinux'],
3012 ['SECCOMP'],
3013 ['SMACK'],
3014 ['zlib'],
3015 ['xz'],
3016 ['lz4'],
3017 ['bzip2'],
3018 ['ACL'],
3019 ['gcrypt'],
3020 ['qrencode'],
3021 ['microhttpd'],
3022 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003023 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003024 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003025 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003026 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003027 ['libidn'],
3028 ['libiptc'],
3029 ['elfutils'],
3030 ['binfmt'],
3031 ['vconsole'],
3032 ['quotacheck'],
3033 ['tmpfiles'],
3034 ['environment.d'],
3035 ['sysusers'],
3036 ['firstboot'],
3037 ['randomseed'],
3038 ['backlight'],
3039 ['rfkill'],
3040 ['logind'],
3041 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003042 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003043 ['importd'],
3044 ['hostnamed'],
3045 ['timedated'],
3046 ['timesyncd'],
3047 ['localed'],
3048 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003049 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003050 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3051 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003052 ['coredump'],
3053 ['polkit'],
3054 ['legacy pkla', install_polkit_pkla],
3055 ['efi'],
3056 ['gnu-efi', have_gnu_efi],
3057 ['kmod'],
3058 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003059 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003060 ['blkid'],
3061 ['dbus'],
3062 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003063 ['nss-myhostname'],
3064 ['nss-mymachines'],
3065 ['nss-resolve'],
3066 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003067 ['hwdb'],
3068 ['tpm'],
3069 ['man pages', want_man],
3070 ['html pages', want_html],
3071 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003072 ['SysV compat'],
3073 ['utmp'],
3074 ['ldconfig'],
3075 ['hibernate'],
3076 ['adm group', get_option('adm-group')],
3077 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003078 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003079 ['debug hashmap'],
3080 ['debug mmap cache'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003081 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003082 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003083 ['link-udev-shared', get_option('link-udev-shared')],
3084 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003085]
3086
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003087 if tuple.length() >= 2
3088 cond = tuple[1]
3089 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003090 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3091 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003092 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003093 endif
3094 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003095 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003096 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003097 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003098 endif
3099endforeach
3100
3101status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003102 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003103 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003104 '',
3105 'disabled features: @0@'.format(', '.join(missing)),
3106 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003107message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003108
3109if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003110 warning('\n' +
3111 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3112 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3113 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003114endif