blob: a7d48a2c45578aedd825327de0f02a11332f758b [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-Szmek7f1ea2c2017-12-20 09:12:08 +01001383 'src/systemd/sd-id128.h', # pick a header file at random to work around old meson bug
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001384 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001385 include_directories : includes,
1386 link_args : ['-shared',
1387 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001388 link_with : [libbasic,
1389 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001390 link_whole : [libsystemd_static,
1391 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001392 dependencies : [threads,
1393 librt,
1394 libxz,
1395 liblz4],
1396 link_depends : libsystemd_sym,
1397 install : true,
1398 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001399
Davide Cavalca70848ec2018-04-09 02:43:35 -07001400static_libsystemd = get_option('static-libsystemd')
1401static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1402
1403install_libsystemd_static = static_library(
1404 'systemd',
1405 libsystemd_sources,
1406 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001407 basic_sources,
1408 basic_gcrypt_sources,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001409 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001410 build_by_default : static_libsystemd != 'false',
1411 install : static_libsystemd != 'false',
1412 install_dir : rootlibdir,
1413 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1414 dependencies : [threads,
1415 librt,
1416 libxz,
1417 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001418 libcap,
1419 libblkid,
1420 libmount,
1421 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001422 libgcrypt],
1423 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1424
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001425############################################################
1426
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001427# binaries that have --help and are intended for use by humans,
1428# usually, but not always, installed in /bin.
1429public_programs = []
1430
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001431subdir('src/libudev')
1432subdir('src/shared')
1433subdir('src/core')
1434subdir('src/udev')
1435subdir('src/network')
1436
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001437subdir('src/analyze')
1438subdir('src/journal-remote')
1439subdir('src/coredump')
1440subdir('src/hostname')
1441subdir('src/import')
1442subdir('src/kernel-install')
1443subdir('src/locale')
1444subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001445subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001446subdir('src/nspawn')
1447subdir('src/resolve')
1448subdir('src/timedate')
1449subdir('src/timesync')
1450subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001451subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001452
1453subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001454subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001455subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001456subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001457
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001458############################################################
1459
1460# only static linking apart from libdl, to make sure that the
1461# module is linked to all libraries that it uses.
1462test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001463 'test-dlopen',
1464 test_dlopen_c,
1465 include_directories : includes,
1466 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001467 dependencies : [libdl],
1468 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001469
Yu Watanabe08540a92018-07-18 09:25:57 +09001470foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001471 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001472 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1473 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001474
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001475 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001476 if condition
1477 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001478
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001479 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1480 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001481
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001482 nss = shared_library(
1483 'nss_' + module,
1484 'src/nss-@0@/nss-@0@.c'.format(module),
1485 version : '2',
1486 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001487 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1488 link_args : ['-Wl,-z,nodelete',
1489 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001490 '-Wl,--version-script=' + version_script_arg,
1491 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001492 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001493 libbasic],
1494 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001495 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001496 link_depends : sym,
1497 install : true,
1498 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001499
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001500 # We cannot use shared_module because it does not support version suffix.
1501 # Unfortunately shared_library insists on creating the symlink…
1502 meson.add_install_script('sh', '-c',
1503 'rm $DESTDIR@0@/libnss_@1@.so'
1504 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001505
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001506 if want_tests != 'false'
1507 test('dlopen-nss_' + module,
1508 test_dlopen,
1509 # path to dlopen must include a slash
1510 args : nss.full_path())
1511 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001512 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001513endforeach
1514
1515############################################################
1516
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001517executable('systemd',
1518 systemd_sources,
1519 include_directories : includes,
1520 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001521 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001522 dependencies : [threads,
1523 librt,
1524 libseccomp,
1525 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001526 libmount,
1527 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001528 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001529 install : true,
1530 install_dir : rootlibexecdir)
1531
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001532meson.add_install_script(meson_make_symlink,
1533 join_paths(rootlibexecdir, 'systemd'),
1534 join_paths(rootsbindir, 'init'))
1535
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001536exe = executable('systemd-analyze',
1537 systemd_analyze_sources,
1538 include_directories : includes,
1539 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001540 libshared],
1541 dependencies : [threads,
1542 librt,
1543 libseccomp,
1544 libselinux,
1545 libmount,
1546 libblkid],
1547 install_rpath : rootlibexecdir,
1548 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001549public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001550
1551executable('systemd-journald',
1552 systemd_journald_sources,
1553 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001554 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001555 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001556 dependencies : [threads,
1557 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001558 liblz4,
1559 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001560 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001561 install : true,
1562 install_dir : rootlibexecdir)
1563
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001564exe = executable('systemd-cat',
1565 systemd_cat_sources,
1566 include_directories : includes,
1567 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001568 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001569 dependencies : [threads],
1570 install_rpath : rootlibexecdir,
1571 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001572public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001573
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001574exe = executable('journalctl',
1575 journalctl_sources,
1576 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001577 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001578 dependencies : [threads,
1579 libqrencode,
1580 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001581 liblz4,
1582 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001583 install_rpath : rootlibexecdir,
1584 install : true,
1585 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001586public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001587
1588executable('systemd-getty-generator',
1589 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001590 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001591 link_with : [libshared],
1592 install_rpath : rootlibexecdir,
1593 install : true,
1594 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001595
1596executable('systemd-debug-generator',
1597 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001598 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001599 link_with : [libshared],
1600 install_rpath : rootlibexecdir,
1601 install : true,
1602 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001603
1604executable('systemd-fstab-generator',
1605 'src/fstab-generator/fstab-generator.c',
1606 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001607 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001608 link_with : [libshared],
1609 install_rpath : rootlibexecdir,
1610 install : true,
1611 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001612
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001613if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001614 executable('30-systemd-environment-d-generator',
1615 'src/environment-d-generator/environment-d-generator.c',
1616 include_directories : includes,
1617 link_with : [libshared],
1618 install_rpath : rootlibexecdir,
1619 install : true,
1620 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001621
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001622 meson.add_install_script(meson_make_symlink,
1623 join_paths(sysconfdir, 'environment'),
1624 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001625endif
1626
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001627if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001628 executable('systemd-hibernate-resume-generator',
1629 'src/hibernate-resume/hibernate-resume-generator.c',
1630 include_directories : includes,
1631 link_with : [libshared],
1632 install_rpath : rootlibexecdir,
1633 install : true,
1634 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001635
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001636 executable('systemd-hibernate-resume',
1637 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001638 include_directories : includes,
1639 link_with : [libshared],
1640 install_rpath : rootlibexecdir,
1641 install : true,
1642 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001643endif
1644
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001645if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001646 executable('systemd-gpt-auto-generator',
1647 'src/gpt-auto-generator/gpt-auto-generator.c',
1648 'src/basic/blkid-util.h',
1649 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001650 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001651 dependencies : libblkid,
1652 install_rpath : rootlibexecdir,
1653 install : true,
1654 install_dir : systemgeneratordir)
1655
1656 exe = executable('systemd-dissect',
1657 'src/dissect/dissect.c',
1658 include_directories : includes,
1659 link_with : [libshared],
1660 install_rpath : rootlibexecdir,
1661 install : true,
1662 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001663 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001664endif
1665
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001666if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001667 executable('systemd-resolved',
1668 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001669 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001670 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001671 libbasic_gcrypt,
1672 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001673 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001674 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001675 install : true,
1676 install_dir : rootlibexecdir)
1677
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001678 exe = executable('resolvectl',
1679 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001680 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001681 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001682 libbasic_gcrypt,
1683 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001684 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001685 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001686 libm,
1687 libidn],
1688 install_rpath : rootlibexecdir,
1689 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001690 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001691
1692 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001693 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001694 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001695
1696 meson.add_install_script(meson_make_symlink,
1697 join_paths(bindir, 'resolvectl'),
1698 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001699endif
1700
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001701if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001702 executable('systemd-logind',
1703 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001704 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001705 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001706 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001707 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001708 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001709 install_rpath : rootlibexecdir,
1710 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001711 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001712
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001713 exe = executable('loginctl',
1714 loginctl_sources,
1715 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001716 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001717 dependencies : [threads,
1718 liblz4,
1719 libxz],
1720 install_rpath : rootlibexecdir,
1721 install : true,
1722 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001723 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001724
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001725 exe = executable('systemd-inhibit',
1726 'src/login/inhibit.c',
1727 include_directories : includes,
1728 link_with : [libshared],
1729 install_rpath : rootlibexecdir,
1730 install : true,
1731 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001732 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001733
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001734 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001735 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1736 pam_systemd = shared_library(
1737 'pam_systemd',
1738 pam_systemd_c,
1739 name_prefix : '',
1740 include_directories : includes,
1741 link_args : ['-shared',
1742 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001743 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001744 libshared_static],
1745 dependencies : [threads,
1746 libpam,
1747 libpam_misc],
1748 link_depends : pam_systemd_sym,
1749 install : true,
1750 install_dir : pamlibdir)
1751
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001752 if want_tests != 'false'
1753 test('dlopen-pam_systemd',
1754 test_dlopen,
1755 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001756 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001757 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001758 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001759endif
1760
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001761executable('systemd-user-runtime-dir',
1762 user_runtime_dir_sources,
1763 include_directories : includes,
1764 link_with : [libshared, liblogind_core],
1765 install_rpath : rootlibexecdir,
1766 install : true,
1767 install_dir : rootlibexecdir)
1768
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001769if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001770 executable('systemd-user-sessions',
1771 'src/user-sessions/user-sessions.c',
1772 include_directories : includes,
1773 link_with : [libshared],
1774 install_rpath : rootlibexecdir,
1775 install : true,
1776 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001777endif
1778
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001779if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001780 exe = executable('bootctl',
1781 'src/boot/bootctl.c',
1782 include_directories : includes,
1783 link_with : [libshared],
1784 dependencies : [libblkid],
1785 install_rpath : rootlibexecdir,
1786 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001787 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001788endif
1789
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001790exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1791 include_directories : includes,
1792 link_with : [libshared],
1793 dependencies : [threads],
1794 install_rpath : rootlibexecdir,
1795 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001796public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001797
Felipe Satelerf3794362018-05-22 15:08:57 -04001798
1799if get_option('link-systemctl-shared')
1800 systemctl_link_with = [libshared]
1801else
1802 systemctl_link_with = [libsystemd_static,
1803 libshared_static,
1804 libjournal_client,
1805 libbasic_gcrypt]
1806endif
1807
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001808exe = executable('systemctl', 'src/systemctl/systemctl.c',
1809 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001810 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001811 dependencies : [threads,
1812 libcap,
1813 libselinux,
1814 libxz,
1815 liblz4],
1816 install_rpath : rootlibexecdir,
1817 install : true,
1818 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001819public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001820
Lennart Poettering61d05782018-04-16 21:41:40 +02001821if conf.get('ENABLE_PORTABLED') == 1
1822 executable('systemd-portabled',
1823 systemd_portabled_sources,
1824 include_directories : includes,
1825 link_with : [libshared],
1826 dependencies : [threads],
1827 install_rpath : rootlibexecdir,
1828 install : true,
1829 install_dir : rootlibexecdir)
1830
1831 exe = executable('portablectl', 'src/portable/portablectl.c',
1832 include_directories : includes,
1833 link_with : [libshared],
1834 dependencies : [threads],
1835 install_rpath : rootlibexecdir,
1836 install : true,
1837 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001838 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001839endif
1840
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001841foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1842 meson.add_install_script(meson_make_symlink,
1843 join_paths(rootbindir, 'systemctl'),
1844 join_paths(rootsbindir, alias))
1845endforeach
1846
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001847if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001848 executable('systemd-backlight',
1849 'src/backlight/backlight.c',
1850 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001851 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001852 install_rpath : rootlibexecdir,
1853 install : true,
1854 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001855endif
1856
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001857if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001858 executable('systemd-rfkill',
1859 'src/rfkill/rfkill.c',
1860 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001861 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001862 install_rpath : rootlibexecdir,
1863 install : true,
1864 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001865endif
1866
1867executable('systemd-system-update-generator',
1868 'src/system-update-generator/system-update-generator.c',
1869 include_directories : includes,
1870 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001871 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001872 install : true,
1873 install_dir : systemgeneratordir)
1874
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001875if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001876 executable('systemd-cryptsetup',
1877 'src/cryptsetup/cryptsetup.c',
1878 include_directories : includes,
1879 link_with : [libshared],
1880 dependencies : [libcryptsetup],
1881 install_rpath : rootlibexecdir,
1882 install : true,
1883 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001884
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001885 executable('systemd-cryptsetup-generator',
1886 'src/cryptsetup/cryptsetup-generator.c',
1887 include_directories : includes,
1888 link_with : [libshared],
1889 dependencies : [libcryptsetup],
1890 install_rpath : rootlibexecdir,
1891 install : true,
1892 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001893
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001894 executable('systemd-veritysetup',
1895 'src/veritysetup/veritysetup.c',
1896 include_directories : includes,
1897 link_with : [libshared],
1898 dependencies : [libcryptsetup],
1899 install_rpath : rootlibexecdir,
1900 install : true,
1901 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001902
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001903 executable('systemd-veritysetup-generator',
1904 'src/veritysetup/veritysetup-generator.c',
1905 include_directories : includes,
1906 link_with : [libshared],
1907 dependencies : [libcryptsetup],
1908 install_rpath : rootlibexecdir,
1909 install : true,
1910 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001911endif
1912
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001913if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001914 executable('systemd-sysv-generator',
1915 'src/sysv-generator/sysv-generator.c',
1916 include_directories : includes,
1917 link_with : [libshared],
1918 install_rpath : rootlibexecdir,
1919 install : true,
1920 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001921
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001922 executable('systemd-rc-local-generator',
1923 'src/rc-local-generator/rc-local-generator.c',
1924 include_directories : includes,
1925 link_with : [libshared],
1926 install_rpath : rootlibexecdir,
1927 install : true,
1928 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001929endif
1930
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001931if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001932 executable('systemd-hostnamed',
1933 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001934 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001935 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001936 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001937 install : true,
1938 install_dir : rootlibexecdir)
1939
1940 exe = executable('hostnamectl',
1941 'src/hostname/hostnamectl.c',
1942 include_directories : includes,
1943 link_with : [libshared],
1944 install_rpath : rootlibexecdir,
1945 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001946 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001947endif
1948
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001949if conf.get('ENABLE_LOCALED') == 1
1950 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001951 # logind will load libxkbcommon.so dynamically on its own
1952 deps = [libdl]
1953 else
1954 deps = []
1955 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001956
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001957 executable('systemd-localed',
1958 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001959 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001960 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001961 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001962 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001963 install : true,
1964 install_dir : rootlibexecdir)
1965
1966 exe = executable('localectl',
1967 localectl_sources,
1968 include_directories : includes,
1969 link_with : [libshared],
1970 install_rpath : rootlibexecdir,
1971 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001972 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001973endif
1974
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001975if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001976 executable('systemd-timedated',
1977 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001978 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001979 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001980 install_rpath : rootlibexecdir,
1981 install : true,
1982 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09001983endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001984
Yu Watanabe6129ec82018-05-03 18:07:43 +09001985if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001986 exe = executable('timedatectl',
1987 'src/timedate/timedatectl.c',
1988 include_directories : includes,
1989 install_rpath : rootlibexecdir,
1990 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09001991 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001992 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001993 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001994endif
1995
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001996if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001997 executable('systemd-timesyncd',
1998 systemd_timesyncd_sources,
1999 include_directories : includes,
2000 link_with : [libshared],
2001 dependencies : [threads,
2002 libm],
2003 install_rpath : rootlibexecdir,
2004 install : true,
2005 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002006
2007 executable('systemd-time-wait-sync',
2008 'src/time-wait-sync/time-wait-sync.c',
2009 include_directories : includes,
2010 link_with : [libshared],
2011 install_rpath : rootlibexecdir,
2012 install : true,
2013 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002014endif
2015
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002016if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002017 executable('systemd-machined',
2018 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002019 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002020 link_with : [libmachine_core,
2021 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002022 install_rpath : rootlibexecdir,
2023 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002024 install_dir : rootlibexecdir)
2025
2026 exe = executable('machinectl',
2027 'src/machine/machinectl.c',
2028 include_directories : includes,
2029 link_with : [libshared],
2030 dependencies : [threads,
2031 libxz,
2032 liblz4],
2033 install_rpath : rootlibexecdir,
2034 install : true,
2035 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002036 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002037endif
2038
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002039if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002040 executable('systemd-importd',
2041 systemd_importd_sources,
2042 include_directories : includes,
2043 link_with : [libshared],
2044 dependencies : [threads],
2045 install_rpath : rootlibexecdir,
2046 install : true,
2047 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002048
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002049 systemd_pull = executable('systemd-pull',
2050 systemd_pull_sources,
2051 include_directories : includes,
2052 link_with : [libshared],
2053 dependencies : [libcurl,
2054 libz,
2055 libbzip2,
2056 libxz,
2057 libgcrypt],
2058 install_rpath : rootlibexecdir,
2059 install : true,
2060 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002061
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002062 systemd_import = executable('systemd-import',
2063 systemd_import_sources,
2064 include_directories : includes,
2065 link_with : [libshared],
2066 dependencies : [libcurl,
2067 libz,
2068 libbzip2,
2069 libxz],
2070 install_rpath : rootlibexecdir,
2071 install : true,
2072 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002073
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002074 systemd_export = executable('systemd-export',
2075 systemd_export_sources,
2076 include_directories : includes,
2077 link_with : [libshared],
2078 dependencies : [libcurl,
2079 libz,
2080 libbzip2,
2081 libxz],
2082 install_rpath : rootlibexecdir,
2083 install : true,
2084 install_dir : rootlibexecdir)
2085 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002086endif
2087
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002088if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002089 exe = executable('systemd-journal-upload',
2090 systemd_journal_upload_sources,
2091 include_directories : includes,
2092 link_with : [libshared],
2093 dependencies : [threads,
2094 libcurl,
2095 libgnutls,
2096 libxz,
2097 liblz4],
2098 install_rpath : rootlibexecdir,
2099 install : true,
2100 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002101 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002102endif
2103
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002104if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002105 s_j_remote = executable('systemd-journal-remote',
2106 systemd_journal_remote_sources,
2107 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002108 link_with : [libshared,
2109 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002110 dependencies : [threads,
2111 libmicrohttpd,
2112 libgnutls,
2113 libxz,
2114 liblz4],
2115 install_rpath : rootlibexecdir,
2116 install : true,
2117 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002118
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002119 s_j_gatewayd = executable('systemd-journal-gatewayd',
2120 systemd_journal_gatewayd_sources,
2121 include_directories : includes,
2122 link_with : [libshared],
2123 dependencies : [threads,
2124 libmicrohttpd,
2125 libgnutls,
2126 libxz,
2127 liblz4],
2128 install_rpath : rootlibexecdir,
2129 install : true,
2130 install_dir : rootlibexecdir)
2131 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002132endif
2133
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002134if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002135 executable('systemd-coredump',
2136 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002137 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002138 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002139 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002140 libacl,
2141 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002142 libxz,
2143 liblz4],
2144 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002145 install : true,
2146 install_dir : rootlibexecdir)
2147
2148 exe = executable('coredumpctl',
2149 coredumpctl_sources,
2150 include_directories : includes,
2151 link_with : [libshared],
2152 dependencies : [threads,
2153 libxz,
2154 liblz4],
2155 install_rpath : rootlibexecdir,
2156 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002157 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002158endif
2159
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002160if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002161 exe = executable('systemd-binfmt',
2162 'src/binfmt/binfmt.c',
2163 include_directories : includes,
2164 link_with : [libshared],
2165 install_rpath : rootlibexecdir,
2166 install : true,
2167 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002168 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002169
2170 meson.add_install_script('sh', '-c',
2171 mkdir_p.format(binfmtdir))
2172 meson.add_install_script('sh', '-c',
2173 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2174endif
2175
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002176if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002177 executable('systemd-vconsole-setup',
2178 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002179 include_directories : includes,
2180 link_with : [libshared],
2181 install_rpath : rootlibexecdir,
2182 install : true,
2183 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002184endif
2185
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002186if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002187 executable('systemd-random-seed',
2188 'src/random-seed/random-seed.c',
2189 include_directories : includes,
2190 link_with : [libshared],
2191 install_rpath : rootlibexecdir,
2192 install : true,
2193 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002194endif
2195
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002196if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002197 executable('systemd-firstboot',
2198 'src/firstboot/firstboot.c',
2199 include_directories : includes,
2200 link_with : [libshared],
2201 dependencies : [libcrypt],
2202 install_rpath : rootlibexecdir,
2203 install : true,
2204 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002205endif
2206
2207executable('systemd-remount-fs',
2208 'src/remount-fs/remount-fs.c',
2209 'src/core/mount-setup.c',
2210 'src/core/mount-setup.h',
2211 include_directories : includes,
2212 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002213 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002214 install : true,
2215 install_dir : rootlibexecdir)
2216
2217executable('systemd-machine-id-setup',
2218 'src/machine-id-setup/machine-id-setup-main.c',
2219 'src/core/machine-id-setup.c',
2220 'src/core/machine-id-setup.h',
2221 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002222 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002223 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002224 install : true,
2225 install_dir : rootbindir)
2226
2227executable('systemd-fsck',
2228 'src/fsck/fsck.c',
2229 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002230 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002231 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002232 install : true,
2233 install_dir : rootlibexecdir)
2234
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002235executable('systemd-growfs',
2236 'src/partition/growfs.c',
2237 include_directories : includes,
2238 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002239 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002240 install_rpath : rootlibexecdir,
2241 install : true,
2242 install_dir : rootlibexecdir)
2243
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002244executable('systemd-makefs',
2245 'src/partition/makefs.c',
2246 include_directories : includes,
2247 link_with : [libshared],
2248 install_rpath : rootlibexecdir,
2249 install : true,
2250 install_dir : rootlibexecdir)
2251
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002252executable('systemd-sleep',
2253 'src/sleep/sleep.c',
2254 include_directories : includes,
2255 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002256 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002257 install : true,
2258 install_dir : rootlibexecdir)
2259
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002260exe = executable('systemd-sysctl',
2261 'src/sysctl/sysctl.c',
2262 include_directories : includes,
2263 link_with : [libshared],
2264 install_rpath : rootlibexecdir,
2265 install : true,
2266 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002267public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002268
2269executable('systemd-ac-power',
2270 'src/ac-power/ac-power.c',
2271 include_directories : includes,
2272 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002273 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002274 install : true,
2275 install_dir : rootlibexecdir)
2276
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002277exe = executable('systemd-detect-virt',
2278 'src/detect-virt/detect-virt.c',
2279 include_directories : includes,
2280 link_with : [libshared],
2281 install_rpath : rootlibexecdir,
2282 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002283public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002284
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002285exe = executable('systemd-delta',
2286 'src/delta/delta.c',
2287 include_directories : includes,
2288 link_with : [libshared],
2289 install_rpath : rootlibexecdir,
2290 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002291public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002292
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002293exe = executable('systemd-escape',
2294 'src/escape/escape.c',
2295 include_directories : includes,
2296 link_with : [libshared],
2297 install_rpath : rootlibexecdir,
2298 install : true,
2299 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002300public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002301
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002302exe = executable('systemd-notify',
2303 'src/notify/notify.c',
2304 include_directories : includes,
2305 link_with : [libshared],
2306 install_rpath : rootlibexecdir,
2307 install : true,
2308 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002309public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002310
2311executable('systemd-volatile-root',
2312 'src/volatile-root/volatile-root.c',
2313 include_directories : includes,
2314 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002315 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002316 install : true,
2317 install_dir : rootlibexecdir)
2318
2319executable('systemd-cgroups-agent',
2320 'src/cgroups-agent/cgroups-agent.c',
2321 include_directories : includes,
2322 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002323 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002324 install : true,
2325 install_dir : rootlibexecdir)
2326
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002327exe = executable('systemd-path',
2328 'src/path/path.c',
2329 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002330 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002331 install_rpath : rootlibexecdir,
2332 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002333public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002334
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002335exe = executable('systemd-ask-password',
2336 'src/ask-password/ask-password.c',
2337 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002338 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002339 install_rpath : rootlibexecdir,
2340 install : true,
2341 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002342public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002343
2344executable('systemd-reply-password',
2345 'src/reply-password/reply-password.c',
2346 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002347 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002348 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002349 install : true,
2350 install_dir : rootlibexecdir)
2351
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002352exe = executable('systemd-tty-ask-password-agent',
2353 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2354 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002355 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002356 install_rpath : rootlibexecdir,
2357 install : true,
2358 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002359public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002360
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002361exe = executable('systemd-cgls',
2362 'src/cgls/cgls.c',
2363 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002364 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002365 install_rpath : rootlibexecdir,
2366 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002367public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002368
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002369exe = executable('systemd-cgtop',
2370 'src/cgtop/cgtop.c',
2371 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002372 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002373 install_rpath : rootlibexecdir,
2374 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002375public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002376
2377executable('systemd-initctl',
2378 'src/initctl/initctl.c',
2379 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002380 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002381 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002382 install : true,
2383 install_dir : rootlibexecdir)
2384
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002385exe = executable('systemd-mount',
2386 'src/mount/mount-tool.c',
2387 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002388 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002389 install_rpath : rootlibexecdir,
2390 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002391public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002392
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002393meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002394 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002395
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002396exe = executable('systemd-run',
2397 'src/run/run.c',
2398 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002399 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002400 install_rpath : rootlibexecdir,
2401 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002402public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002403
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002404exe = executable('systemd-stdio-bridge',
2405 'src/stdio-bridge/stdio-bridge.c',
2406 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002407 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002408 install_rpath : rootlibexecdir,
2409 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002410public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002411
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002412exe = executable('busctl',
2413 'src/busctl/busctl.c',
2414 'src/busctl/busctl-introspect.c',
2415 'src/busctl/busctl-introspect.h',
2416 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002417 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002418 install_rpath : rootlibexecdir,
2419 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002420public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002421
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002422if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002423 exe = executable('systemd-sysusers',
2424 'src/sysusers/sysusers.c',
2425 include_directories : includes,
2426 link_with : [libshared],
2427 install_rpath : rootlibexecdir,
2428 install : true,
2429 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002430 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002431endif
2432
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002433if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002434 exe = executable('systemd-tmpfiles',
2435 'src/tmpfiles/tmpfiles.c',
2436 include_directories : includes,
2437 link_with : [libshared],
2438 dependencies : [libacl],
2439 install_rpath : rootlibexecdir,
2440 install : true,
2441 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002442 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002443
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002444 if want_tests != 'false'
2445 test('test-systemd-tmpfiles',
2446 test_systemd_tmpfiles_py,
2447 # https://github.com/mesonbuild/meson/issues/2681
2448 args : exe.full_path())
2449 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002450endif
2451
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002452if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002453 exe = executable('systemd-hwdb',
2454 'src/hwdb/hwdb.c',
2455 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2456 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002457 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002458 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002459 install : true,
2460 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002461 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002462endif
2463
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002464if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002465 executable('systemd-quotacheck',
2466 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002467 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002468 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002469 install_rpath : rootlibexecdir,
2470 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002471 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002472endif
2473
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002474exe = executable('systemd-socket-proxyd',
2475 'src/socket-proxy/socket-proxyd.c',
2476 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002477 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002478 dependencies : [threads],
2479 install_rpath : rootlibexecdir,
2480 install : true,
2481 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002482public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002483
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002484exe = executable('systemd-udevd',
2485 systemd_udevd_sources,
2486 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002487 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002488 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002489 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002490 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002491 dependencies : [threads,
2492 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002493 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002494 libacl,
2495 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002496 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002497 install : true,
2498 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002499public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002500
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002501exe = executable('udevadm',
2502 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002503 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002504 include_directories : includes,
2505 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002506 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002507 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002508 dependencies : [threads,
2509 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002510 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002511 libacl,
2512 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002513 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002514 install : true,
2515 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002516public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002517
2518executable('systemd-shutdown',
2519 systemd_shutdown_sources,
2520 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002521 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002522 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002523 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002524 install : true,
2525 install_dir : rootlibexecdir)
2526
2527executable('systemd-update-done',
2528 'src/update-done/update-done.c',
2529 include_directories : includes,
2530 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002531 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002532 install : true,
2533 install_dir : rootlibexecdir)
2534
2535executable('systemd-update-utmp',
2536 'src/update-utmp/update-utmp.c',
2537 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002538 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002539 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002540 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002541 install : true,
2542 install_dir : rootlibexecdir)
2543
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002544if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002545 executable('systemd-modules-load',
2546 'src/modules-load/modules-load.c',
2547 include_directories : includes,
2548 link_with : [libshared],
2549 dependencies : [libkmod],
2550 install_rpath : rootlibexecdir,
2551 install : true,
2552 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002553
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002554 meson.add_install_script('sh', '-c',
2555 mkdir_p.format(modulesloaddir))
2556 meson.add_install_script('sh', '-c',
2557 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002558endif
2559
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002560exe = executable('systemd-nspawn',
2561 systemd_nspawn_sources,
2562 'src/core/mount-setup.c', # FIXME: use a variable?
2563 'src/core/mount-setup.h',
2564 'src/core/loopback-setup.c',
2565 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002566 include_directories : includes,
2567 link_with : [libnspawn_core,
2568 libshared],
2569 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002570 install_rpath : rootlibexecdir,
2571 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002572public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002573
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002574if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002575 executable('systemd-networkd',
2576 systemd_networkd_sources,
2577 include_directories : includes,
2578 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002579 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002580 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002581 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002582 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002583 install_rpath : rootlibexecdir,
2584 install : true,
2585 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002586
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002587 executable('systemd-networkd-wait-online',
2588 systemd_networkd_wait_online_sources,
2589 include_directories : includes,
2590 link_with : [libnetworkd_core,
2591 libshared],
2592 install_rpath : rootlibexecdir,
2593 install : true,
2594 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002595
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002596 exe = executable('networkctl',
2597 networkctl_sources,
2598 include_directories : includes,
2599 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002600 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002601 install_rpath : rootlibexecdir,
2602 install : true,
2603 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002604 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002605endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002606
2607executable('systemd-sulogin-shell',
2608 ['src/sulogin-shell/sulogin-shell.c'],
2609 include_directories : includes,
2610 link_with : [libshared],
2611 install_rpath : rootlibexecdir,
2612 install : true,
2613 install_dir : rootlibexecdir)
2614
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002615############################################################
2616
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002617custom_target(
2618 'systemd-runtest.env',
2619 output : 'systemd-runtest.env',
2620 command : ['sh', '-c', '{ ' +
2621 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(meson.current_source_dir(), 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002622 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002623 '} >@OUTPUT@'],
2624 build_by_default : true)
2625
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002626foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002627 sources = tuple[0]
2628 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2629 dependencies = tuple[2]
2630 condition = tuple.length() >= 4 ? tuple[3] : ''
2631 type = tuple.length() >= 5 ? tuple[4] : ''
2632 defs = tuple.length() >= 6 ? tuple[5] : []
2633 incs = tuple.length() >= 7 ? tuple[6] : includes
2634 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002635
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002636 name = sources[0].split('/')[-1].split('.')[0]
2637 if type.startswith('timeout=')
2638 timeout = type.split('=')[1].to_int()
2639 type = ''
2640 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002641
2642 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002643 exe = executable(
2644 name,
2645 sources,
2646 include_directories : incs,
2647 link_with : link_with,
2648 dependencies : dependencies,
2649 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002650 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002651 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002652 install : install_tests,
2653 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002654
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002655 if type == 'manual'
2656 message('@0@ is a manual test'.format(name))
2657 elif type == 'unsafe' and want_tests != 'unsafe'
2658 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002659 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002660 test(name, exe,
2661 env : test_env,
2662 timeout : timeout)
2663 endif
2664 else
2665 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2666 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002667endforeach
2668
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002669exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002670 'test-libsystemd-sym',
2671 test_libsystemd_sym_c,
2672 include_directories : includes,
2673 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002674 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002675 install : install_tests,
2676 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002677if want_tests != 'false'
2678 test('test-libsystemd-sym', exe)
2679endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002680
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002681exe = executable(
2682 'test-libsystemd-static-sym',
2683 test_libsystemd_sym_c,
2684 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002685 link_with : [install_libsystemd_static],
2686 dependencies : [threads], # threads is already included in dependencies on the library,
2687 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002688 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002689 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002690 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002691if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002692 test('test-libsystemd-static-sym', exe)
2693endif
2694
2695exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002696 'test-libudev-sym',
2697 test_libudev_sym_c,
2698 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002699 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002700 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002701 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002702 install : install_tests,
2703 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002704if want_tests != 'false'
2705 test('test-libudev-sym', exe)
2706endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002707
2708exe = executable(
2709 'test-libudev-static-sym',
2710 test_libudev_sym_c,
2711 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002712 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002713 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002714 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002715 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002716 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002717if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002718 test('test-libudev-static-sym', exe)
2719endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002720
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002721############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002722
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002723fuzzer_exes = []
2724
2725foreach tuple : fuzzers
2726 sources = tuple[0]
2727 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2728 dependencies = tuple[2]
2729 defs = tuple.length() >= 4 ? tuple[3] : []
2730 incs = tuple.length() >= 5 ? tuple[4] : includes
2731
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002732 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002733 dependencies += fuzzing_engine
2734 else
2735 sources += 'src/fuzz/fuzz-main.c'
2736 endif
2737
2738 name = sources[0].split('/')[-1].split('.')[0]
2739
2740 fuzzer_exes += executable(
2741 name,
2742 sources,
2743 include_directories : [incs, include_directories('src/fuzz')],
2744 link_with : link_with,
2745 dependencies : dependencies,
2746 c_args : defs,
2747 install : false)
2748endforeach
2749
2750run_target('fuzzers',
2751 depends : fuzzer_exes,
2752 command : ['true'])
2753
2754############################################################
2755
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002756make_directive_index_py = find_program('tools/make-directive-index.py')
2757make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002758xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002759hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002760
2761subdir('units')
2762subdir('sysctl.d')
2763subdir('sysusers.d')
2764subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002765subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002766subdir('hwdb')
2767subdir('network')
2768subdir('man')
2769subdir('shell-completion/bash')
2770subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002771subdir('docs/sysvinit')
2772subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002773
2774# FIXME: figure out if the warning is true:
2775# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2776install_subdir('factory/etc',
2777 install_dir : factorydir)
2778
2779
2780install_data('xorg/50-systemd-user.sh',
2781 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002782install_data('modprobe.d/systemd.conf',
2783 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002784install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002785 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002786 'NEWS',
2787 'README',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002788 'docs/CODING_STYLE',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002789 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002790 'docs/ENVIRONMENT.md',
2791 'docs/HACKING',
2792 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002793 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002794 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002795 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2796 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002797
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002798meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2799meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2800
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002801############################################################
2802
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002803meson_check_help = find_program('tools/meson-check-help.sh')
2804
2805foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002806 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002807 if want_tests != 'false'
2808 test('check-help-' + name,
2809 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002810 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002811 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002812endforeach
2813
2814############################################################
2815
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002816# Enable tests for all supported sanitizers
2817foreach tuple : sanitizers
2818 sanitizer = tuple[0]
2819 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002820
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002821 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002822 prev = ''
2823 foreach p : fuzz_regression_tests
2824 b = p.split('/')[-2]
2825 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002826
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002827 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002828
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002829 if name != prev
2830 if want_tests == 'false'
2831 message('Not compiling @0@ because tests is set to false'.format(name))
2832 elif slow_tests
2833 exe = custom_target(
2834 name,
2835 output : name,
2836 depends : build,
2837 command : [env, 'ln', '-fs',
2838 join_paths(build.full_path(), b),
2839 '@OUTPUT@'],
2840 build_by_default : true)
2841 else
2842 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2843 endif
2844 endif
2845 prev = name
2846
2847 if want_tests != 'false' and slow_tests
2848 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2849 env,
2850 args : [exe.full_path(),
Zbigniew Jędrzejewski-Szmekc74a3f92018-07-07 18:09:21 +02002851 join_paths(meson.source_root(), 'test/fuzz', p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002852 endif
2853 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002854 endif
2855endforeach
2856
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002857
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002858############################################################
2859
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002860if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002861 all_files = run_command(
2862 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002863 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002864 'ls-files',
2865 ':/*.[ch]'])
2866 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002867
userwithuide85a6902017-08-09 13:41:44 +00002868 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002869 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002870 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002871 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00002872 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002873 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002874 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002875endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002876
2877if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002878 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002879 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002880 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002881 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002882endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002883
2884if git.found()
2885 git_head = run_command(
2886 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002887 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002888 'rev-parse', 'HEAD']).stdout().strip()
2889 git_head_short = run_command(
2890 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002891 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002892 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2893
2894 run_target(
2895 'git-snapshot',
2896 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002897 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002898 git_head_short),
2899 '--prefix', 'systemd-@0@/'.format(git_head),
2900 'HEAD'])
2901endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002902
2903############################################################
2904
Lennart Poettering51b13862017-12-20 12:51:14 +01002905meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2906run_target(
2907 'check-api-docs',
2908 depends : [man, libsystemd, libudev],
2909 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2910
2911############################################################
2912
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002913status = [
2914 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2915
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002916 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002917 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002918 'prefix directory: @0@'.format(prefixdir),
2919 'rootprefix directory: @0@'.format(rootprefixdir),
2920 'sysconf directory: @0@'.format(sysconfdir),
2921 'include directory: @0@'.format(includedir),
2922 'lib directory: @0@'.format(libdir),
2923 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002924 'SysV init scripts: @0@'.format(sysvinit_path),
2925 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002926 'PAM modules directory: @0@'.format(pamlibdir),
2927 'PAM configuration directory: @0@'.format(pamconfdir),
2928 'RPM macros directory: @0@'.format(rpmmacrosdir),
2929 'modprobe.d directory: @0@'.format(modprobedir),
2930 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2931 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2932 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2933 'bash completions directory: @0@'.format(bashcompletiondir),
2934 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002935 'extra start script: @0@'.format(get_option('rc-local')),
2936 'extra stop script: @0@'.format(get_option('halt-local')),
2937 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2938 get_option('debug-tty')),
2939 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09002940 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002941 'maximum system UID: @0@'.format(system_uid_max),
2942 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002943 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2944 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2945 'minimum container UID base: @0@'.format(container_uid_base_min),
2946 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002947 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002948 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002949 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002950 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002951 'nobody user name: @0@'.format(nobody_user),
2952 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002953 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002954 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002955
2956 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02002957 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002958 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2959 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2960
2961alt_dns_servers = '\n '.join(dns_servers.split(' '))
2962alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2963status += [
2964 'default DNS servers: @0@'.format(alt_dns_servers),
2965 'default NTP servers: @0@'.format(alt_ntp_servers)]
2966
2967alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2968 '@@0@'.format(time_epoch)).stdout().strip()
2969status += [
2970 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2971
2972# TODO:
2973# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2974# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2975# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2976
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002977if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002978 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002979
2980 if have_gnu_efi
2981 status += [
2982 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2983 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002984 'EFI lib directory: @0@'.format(efi_libdir),
2985 'EFI lds directory: @0@'.format(efi_ldsdir),
2986 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002987 endif
2988endif
2989
2990found = []
2991missing = []
2992
2993foreach tuple : [
2994 ['libcryptsetup'],
2995 ['PAM'],
2996 ['AUDIT'],
2997 ['IMA'],
2998 ['AppArmor'],
2999 ['SELinux'],
3000 ['SECCOMP'],
3001 ['SMACK'],
3002 ['zlib'],
3003 ['xz'],
3004 ['lz4'],
3005 ['bzip2'],
3006 ['ACL'],
3007 ['gcrypt'],
3008 ['qrencode'],
3009 ['microhttpd'],
3010 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003011 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003012 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003013 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003014 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003015 ['libidn'],
3016 ['libiptc'],
3017 ['elfutils'],
3018 ['binfmt'],
3019 ['vconsole'],
3020 ['quotacheck'],
3021 ['tmpfiles'],
3022 ['environment.d'],
3023 ['sysusers'],
3024 ['firstboot'],
3025 ['randomseed'],
3026 ['backlight'],
3027 ['rfkill'],
3028 ['logind'],
3029 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003030 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003031 ['importd'],
3032 ['hostnamed'],
3033 ['timedated'],
3034 ['timesyncd'],
3035 ['localed'],
3036 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003037 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003038 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3039 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003040 ['coredump'],
3041 ['polkit'],
3042 ['legacy pkla', install_polkit_pkla],
3043 ['efi'],
3044 ['gnu-efi', have_gnu_efi],
3045 ['kmod'],
3046 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003047 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003048 ['blkid'],
3049 ['dbus'],
3050 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003051 ['nss-myhostname'],
3052 ['nss-mymachines'],
3053 ['nss-resolve'],
3054 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003055 ['hwdb'],
3056 ['tpm'],
3057 ['man pages', want_man],
3058 ['html pages', want_html],
3059 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003060 ['SysV compat'],
3061 ['utmp'],
3062 ['ldconfig'],
3063 ['hibernate'],
3064 ['adm group', get_option('adm-group')],
3065 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003066 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003067 ['debug hashmap'],
3068 ['debug mmap cache'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003069 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003070 ['trace logging', conf.get('LOG_TRACE') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003071]
3072
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003073 if tuple.length() >= 2
3074 cond = tuple[1]
3075 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003076 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3077 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003078 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003079 endif
3080 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003081 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003082 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003083 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003084 endif
3085endforeach
3086
3087status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003088 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003089 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003090 '',
3091 'disabled features: @0@'.format(', '.join(missing)),
3092 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003093message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003094
3095if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003096 warning('\n' +
3097 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3098 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3099 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003100endif