blob: 12ddddd3ebe7ecc3dd51d1d926942231d31a5782 [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01002
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003project('systemd', 'c',
Lennart Poetteringde7436b2018-06-22 13:03:47 +02004 version : '239',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04005 license : 'LGPLv2+',
6 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04007 'c_std=gnu99',
8 'prefix=/usr',
9 'sysconfdir=/etc',
10 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040011 ],
Yu Watanabe7a6397d2018-05-15 20:18:24 +090012 meson_version : '>= 0.46',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040013 )
14
Lennart Poetteringde7436b2018-06-22 13:03:47 +020015libsystemd_version = '0.23.0'
16libudev_version = '1.6.11'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020017
Yu Watanabe348b4432018-05-07 18:17:35 +090018# We need the same data in two different formats, ugh!
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040019# Also, for hysterical reasons, we use different variable
20# names, sometimes. Not all variables are included in every
21# set. Ugh, ugh, ugh!
22conf = configuration_data()
23conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
24conf.set_quoted('PACKAGE_VERSION', meson.project_version())
25
26substs = configuration_data()
27substs.set('PACKAGE_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
28substs.set('PACKAGE_VERSION', meson.project_version())
29
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040030#####################################################################
31
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040032# Try to install the git pre-commit hook
33git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
34if git_hook.returncode() == 0
35 message(git_hook.stdout().strip())
36endif
37
38#####################################################################
39
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010040if get_option('split-usr') == 'auto'
41 split_usr = run_command('test', '-L', '/bin').returncode() != 0
42else
43 split_usr = get_option('split-usr') == 'true'
44endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010045conf.set10('HAVE_SPLIT_USR', split_usr,
46 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010047
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010048if get_option('split-bin') == 'auto'
49 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
50else
51 split_bin = get_option('split-bin') == 'true'
52endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010053conf.set10('HAVE_SPLIT_BIN', split_bin,
54 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010055
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010056rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010057# Unusual rootprefixdir values are used by some distros
58# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010059rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010060if rootprefixdir == ''
61 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010062endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040063
64sysvinit_path = get_option('sysvinit-path')
65sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090066conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020067 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040068
69# join_paths ignore the preceding arguments if an absolute component is
70# encountered, so this should canonicalize various paths when they are
71# absolute or relative.
72prefixdir = get_option('prefix')
73if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040074 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040075endif
76bindir = join_paths(prefixdir, get_option('bindir'))
77libdir = join_paths(prefixdir, get_option('libdir'))
78sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
79includedir = join_paths(prefixdir, get_option('includedir'))
80datadir = join_paths(prefixdir, get_option('datadir'))
81localstatedir = join_paths('/', get_option('localstatedir'))
82
83rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010084rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040085rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
86
87rootlibdir = get_option('rootlibdir')
88if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040089 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040090endif
91
92# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +020093pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
94pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -040095polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
96polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
97polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
98varlogdir = join_paths(localstatedir, 'log')
99xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900100rpmmacrosdir = get_option('rpmmacrosdir')
101if rpmmacrosdir != 'no'
102 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
103endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200104modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400105
106# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400107pkgdatadir = join_paths(datadir, 'systemd')
108environmentdir = join_paths(prefixdir, 'lib/environment.d')
109pkgsysconfdir = join_paths(sysconfdir, 'systemd')
110userunitdir = join_paths(prefixdir, 'lib/systemd/user')
111userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
112tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
113sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
114sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
115binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
116modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
117networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
118pkgincludedir = join_paths(includedir, 'systemd')
119systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
120usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
121systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
122userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
123systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
124systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
125systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
126systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
127udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
128udevhomedir = udevlibexecdir
129udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
130udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
131catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
132kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
133factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400134bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
135testsdir = join_paths(prefixdir, 'lib/systemd/tests')
136systemdstatedir = join_paths(localstatedir, 'lib/systemd')
137catalogstatedir = join_paths(systemdstatedir, 'catalog')
138randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200139profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400140
tblume75aaade2018-02-01 22:46:15 +0100141docdir = get_option('docdir')
142if docdir == ''
143 docdir = join_paths(datadir, 'doc/systemd')
144endif
145
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400146dbuspolicydir = get_option('dbuspolicydir')
147if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400148 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400149endif
150
151dbussessionservicedir = get_option('dbussessionservicedir')
152if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400153 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400154endif
155
156dbussystemservicedir = get_option('dbussystemservicedir')
157if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400158 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400159endif
160
161pamlibdir = get_option('pamlibdir')
162if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400163 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400164endif
165
166pamconfdir = get_option('pamconfdir')
167if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400168 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400169endif
170
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100171memory_accounting_default = get_option('memory-accounting-default')
172
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400173conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400174conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400175conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
176conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
177conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400178conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
179conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100180
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100181conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100182
Michael Bieble17e5ba2017-04-13 10:30:56 -0400183conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400184conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
185conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400186conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
187conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
188conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
189conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100190conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100191conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400192conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
193conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
194conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
195conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
196conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100197conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400198conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400199conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
200conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400201conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
202conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
203conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
204conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
205conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
206conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400207conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
208conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700209conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700210conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400211conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400212conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400213conf.set_quoted('LIBDIR', libdir)
214conf.set_quoted('ROOTLIBDIR', rootlibdir)
215conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
216conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400217conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
218conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
219conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
220conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
221conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
222conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100223conf.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'true' : 'false')
Michal Koutný7f672e82018-03-09 18:27:13 +0100224conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400225
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400226substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400227substs.set('exec_prefix', prefixdir)
228substs.set('libdir', libdir)
229substs.set('rootlibdir', rootlibdir)
230substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400231substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400232substs.set('bindir', bindir)
233substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400234substs.set('rootlibexecdir', rootlibexecdir)
235substs.set('systemunitdir', systemunitdir)
236substs.set('userunitdir', userunitdir)
237substs.set('systempresetdir', systempresetdir)
238substs.set('userpresetdir', userpresetdir)
239substs.set('udevhwdbdir', udevhwdbdir)
240substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400241substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200242substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400243substs.set('catalogdir', catalogdir)
244substs.set('tmpfilesdir', tmpfilesdir)
245substs.set('sysusersdir', sysusersdir)
246substs.set('sysctldir', sysctldir)
247substs.set('binfmtdir', binfmtdir)
248substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200249substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400250substs.set('systemgeneratordir', systemgeneratordir)
251substs.set('usergeneratordir', usergeneratordir)
252substs.set('systemenvgeneratordir', systemenvgeneratordir)
253substs.set('userenvgeneratordir', userenvgeneratordir)
254substs.set('systemshutdowndir', systemshutdowndir)
255substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400256substs.set('VARLOGDIR', varlogdir)
257substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400258substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
259substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400260substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
261substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
262substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
263substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100264substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400265
266#####################################################################
267
268cc = meson.get_compiler('c')
269pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400270check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100271meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400272
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200273want_tests = get_option('tests')
274slow_tests = want_tests != 'false' and get_option('slow-tests')
275install_tests = get_option('install-tests')
276
277if want_tests != 'false'
Adam Duskett08318a22018-01-15 06:25:46 -0500278 cxx = find_program('c++', required : false)
279 if cxx.found()
280 # Used only for tests
281 add_languages('cpp')
282 endif
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400283endif
284
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500285want_ossfuzz = get_option('oss-fuzz')
286want_libfuzzer = get_option('llvm-fuzz')
287fuzzer_build = want_ossfuzz or want_libfuzzer
288if want_ossfuzz and want_libfuzzer
289 error('only one of oss-fuzz and llvm-fuzz can be specified')
290endif
291if want_libfuzzer
292 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
293endif
294if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500295 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
296endif
297
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900298possible_cc_flags = [
299 '-Wextra',
300 '-Werror=undef',
301 '-Wlogical-op',
302 '-Wmissing-include-dirs',
303 '-Wold-style-definition',
304 '-Wpointer-arith',
305 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900306 '-Wfloat-equal',
307 '-Wsuggest-attribute=noreturn',
308 '-Werror=missing-prototypes',
309 '-Werror=implicit-function-declaration',
310 '-Werror=missing-declarations',
311 '-Werror=return-type',
312 '-Werror=incompatible-pointer-types',
313 '-Werror=format=2',
314 '-Wstrict-prototypes',
315 '-Wredundant-decls',
316 '-Wmissing-noreturn',
317 '-Wimplicit-fallthrough=5',
318 '-Wshadow',
319 '-Wendif-labels',
320 '-Wstrict-aliasing=2',
321 '-Wwrite-strings',
322 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200323 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200324 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900325 '-Wdate-time',
326 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700327
328 # negative arguments are correctly detected starting with meson 0.46.
329 '-Wno-unused-parameter',
330 '-Wno-missing-field-initializers',
331 '-Wno-unused-result',
332 '-Wno-format-signedness',
333
334 # work-around for gcc 7.1 turning this on on its own.
335 '-Wno-error=nonnull',
336
337 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
338 # optimizations enabled, producing essentially false positives.
339 '-Wno-maybe-uninitialized',
340
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900341 '-ffast-math',
342 '-fno-common',
343 '-fdiagnostics-show-option',
344 '-fno-strict-aliasing',
345 '-fvisibility=hidden',
346 '-fstack-protector',
347 '-fstack-protector-strong',
348 '--param=ssp-buffer-size=4',
349]
350
351# --as-needed and --no-undefined are provided by meson by default,
352# run mesonconf to see what is enabled
353possible_link_flags = [
354 '-Wl,-z,relro',
355 '-Wl,-z,now',
356]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400357
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500358# the oss-fuzz fuzzers are not built with -fPIE, so don't
359# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500360if not fuzzer_build
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900361 possible_cc_flags += '-fPIE'
362 possible_link_flags += '-pie'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500363endif
364
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900365if cc.get_id() == 'clang'
366 possible_cc_flags += [
367 '-Wno-typedef-redefinition',
368 '-Wno-gnu-variable-sized-type-not-at-end',
369 ]
370endif
371
372if get_option('buildtype') != 'debug'
373 possible_cc_flags += [
374 '-ffunction-sections',
375 '-fdata-sections',
376 ]
377
378 possible_link_flags += '-Wl,--gc-sections'
379endif
380
381add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900382add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900383
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800384if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400385 #include <time.h>
386 #include <inttypes.h>
387 typedef uint64_t usec_t;
388 usec_t now(clockid_t clock);
389 int main(void) {
390 struct timespec now;
391 return 0;
392 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800393''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400394 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400395endif
396
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400397cpp = ' '.join(cc.cmd_array()) + ' -E'
398
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400399#####################################################################
400# compilation result tests
401
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400402conf.set('_GNU_SOURCE', true)
403conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400404
405conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
406conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
407conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
408conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
409conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
410conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
411conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
412
413decl_headers = '''
414#include <uchar.h>
415#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000416#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100417#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400418'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400419
420foreach decl : ['char16_t',
421 'char32_t',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400422 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000423 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100424 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400425 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400426
427 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200428 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
429
430 if decl == 'struct statx'
431 if have
432 want_linux_stat_h = false
433 else
434 have = cc.sizeof(decl,
435 prefix : decl_headers + '#include <linux/stat.h>',
436 args : '-D_GNU_SOURCE') > 0
437 want_linux_stat_h = have
438 endif
439 endif
440
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200441 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400442endforeach
443
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200444conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700445
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400446foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
447 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
448 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
449 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530450 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400451 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
452 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
453 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
454 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
455 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530456 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400457 # if_tunnel.h is buggy and cannot be included on its own
458 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
459 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
460 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
461 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
462 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
463 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
464 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530465 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400466 ['NDA_IFINDEX', 'linux/neighbour.h'],
467 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000468 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400469 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530470 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Susant Sahani53cb5012018-06-03 12:37:41 +0530471 ['FOU_ATTR_REMCSUM_NOPARTIAL', 'linux/fou.h'],
472 ['FOU_CMD_GET', 'linux/fou.h'],
473 ['FOU_ENCAP_GUE', 'linux/fou.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400474 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400475 prefix = decl.length() > 2 ? decl[2] : ''
476 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200477 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400478endforeach
479
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400480foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200481 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400482endforeach
483
484foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100485 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100486 ['gettid', '''#include <sys/types.h>
487 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100488 ['pivot_root', '''#include <stdlib.h>
489 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100490 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400491 #include <sys/stat.h>
492 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100493 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100494 ['renameat2', '''#include <stdio.h>
495 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400496 ['kcmp', '''#include <linux/kcmp.h>'''],
497 ['keyctl', '''#include <sys/types.h>
498 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100499 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400500 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200501 ['bpf', '''#include <sys/syscall.h>
502 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100503 ['statx', '''#include <sys/types.h>
504 #include <sys/stat.h>
505 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100506 ['explicit_bzero' , '''#include <string.h>'''],
507 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400508]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400509
Lennart Poettering85db59b2017-12-25 12:01:14 +0100510 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200511 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400512endforeach
513
Lennart Poettering85db59b2017-12-25 12:01:14 +0100514if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200515 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200516 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400517else
518 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200519 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200520 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400521endif
522
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400523#####################################################################
524
525sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400526awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400527m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400528stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400529git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100530env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100531perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400532
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400533meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400534mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400535test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
536splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400537
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400538# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
539# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500540progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400541 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400542 ['kmod', '/usr/bin/kmod' ],
543 ['kexec', '/usr/sbin/kexec' ],
544 ['sulogin', '/usr/sbin/sulogin' ],
545 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
546 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
547 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
548 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
549 ]
550foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400551 path = get_option(prog[0] + '-path')
552 if path != ''
553 message('Using @1@ for @0@'.format(prog[0], path))
554 else
555 exe = find_program(prog[0],
556 '/usr/sbin/' + prog[0],
557 '/sbin/' + prog[0],
558 required: false)
559 path = exe.found() ? exe.path() : prog[1]
560 endif
561 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
562 conf.set_quoted(name, path)
563 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400564endforeach
565
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500566conf.set_quoted('TELINIT', get_option('telinit-path'))
567
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400568if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100569 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400570endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400571
572############################################################
573
574gperf = find_program('gperf')
575
576gperf_test_format = '''
577#include <string.h>
578const char * in_word_set(const char *, @0@);
579@1@
580'''
581gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
582gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
583gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
584if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400585 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400586else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400587 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
588 if cc.compiles(gperf_test)
589 gperf_len_type = 'unsigned'
590 else
591 error('unable to determine gperf len type')
592 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400593endif
594message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400595conf.set('GPERF_LEN_TYPE', gperf_len_type,
596 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400597
598############################################################
599
600if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400601 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400602endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100603foreach header : ['crypt.h',
604 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400605 'linux/memfd.h',
606 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200607 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400608 'valgrind/memcheck.h',
609 'valgrind/valgrind.h',
610 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400611
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200612 conf.set10('HAVE_' + header.underscorify().to_upper(),
613 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400614endforeach
615
616############################################################
617
618conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400619conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
620gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400621
622default_hierarchy = get_option('default-hierarchy')
623conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
624 description : 'default cgroup hierarchy as string')
625if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400626 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400627elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400628 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400629else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400630 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400631endif
632
633time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900634if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400635 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900636 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400637endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400638conf.set('TIME_EPOCH', time_epoch)
639
640system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900641if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400642 system_uid_max = run_command(
643 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800644 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
645 '/etc/login.defs').stdout().strip()
646 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900647 system_uid_max = 999
648 else
649 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800650 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400651endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400652conf.set('SYSTEM_UID_MAX', system_uid_max)
653substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400654
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400655system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900656if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400657 system_gid_max = run_command(
658 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800659 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
660 '/etc/login.defs').stdout().strip()
661 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900662 system_gid_max = 999
663 else
664 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800665 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400666endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400667conf.set('SYSTEM_GID_MAX', system_gid_max)
668substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400669
Yu Watanabeac093402018-05-10 16:04:16 +0900670dynamic_uid_min = get_option('dynamic-uid-min')
671dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100672conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
673conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
674substs.set('dynamicuidmin', dynamic_uid_min)
675substs.set('dynamicuidmax', dynamic_uid_max)
676
Yu Watanabeac093402018-05-10 16:04:16 +0900677container_uid_base_min = get_option('container-uid-base-min')
678container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100679conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
680conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
681substs.set('containeruidbasemin', container_uid_base_min)
682substs.set('containeruidbasemax', container_uid_base_max)
683
Lennart Poetteringafde4572017-12-05 11:00:24 +0100684nobody_user = get_option('nobody-user')
685nobody_group = get_option('nobody-group')
686
Chen Qi2484bff2018-07-23 14:53:09 +0800687if not meson.is_cross_build()
688 getent_result = run_command('getent', 'passwd', '65534')
689 if getent_result.returncode() == 0
690 name = getent_result.stdout().split(':')[0]
691 if name != nobody_user
692 warning('\n' +
693 'The local user with the UID 65534 does not match the configured user name "@0@" of the nobody user (its name is @1@).\n'.format(nobody_user, name) +
694 'Your build will result in an user table setup that is incompatible with the local system.')
695 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100696 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800697 id_result = run_command('id', '-u', nobody_user)
698 if id_result.returncode() == 0
699 id = id_result.stdout().to_int()
700 if id != 65534
701 warning('\n' +
702 'The local user with the configured user name "@0@" of the nobody user does not have UID 65534 (it has @1@).\n'.format(nobody_user, id) +
703 'Your build will result in an user table setup that is incompatible with the local system.')
704 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100705 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100706
Chen Qi2484bff2018-07-23 14:53:09 +0800707 getent_result = run_command('getent', 'group', '65534')
708 if getent_result.returncode() == 0
709 name = getent_result.stdout().split(':')[0]
710 if name != nobody_group
711 warning('\n' +
712 'The local group with the GID 65534 does not match the configured group name "@0@" of the nobody group (its name is @1@).\n'.format(nobody_group, name) +
713 'Your build will result in an group table setup that is incompatible with the local system.')
714 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100715 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800716 id_result = run_command('id', '-g', nobody_group)
717 if id_result.returncode() == 0
718 id = id_result.stdout().to_int()
719 if id != 65534
720 warning('\n' +
721 'The local group with the configured group name "@0@" of the nobody group does not have UID 65534 (it has @1@).\n'.format(nobody_group, id) +
722 'Your build will result in an group table setup that is incompatible with the local system.')
723 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100724 endif
725endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900726if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900727 warning('\n' +
728 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
729 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900730endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100731
732conf.set_quoted('NOBODY_USER_NAME', nobody_user)
733conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900734substs.set('NOBODY_USER_NAME', nobody_user)
735substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100736
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400737tty_gid = get_option('tty-gid')
738conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400739substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400740
Ikey Doherty84786b82017-12-03 12:28:23 +0000741# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900742users_gid = get_option('users-gid')
743substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000744
Yu Watanabe348b4432018-05-07 18:17:35 +0900745conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
746conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400747
Michael Bieblace5e312018-07-13 23:36:13 +0200748dev_kvm_mode = get_option('dev-kvm-mode')
749substs.set('DEV_KVM_MODE', dev_kvm_mode)
750conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Tom Stellard4e15a732017-10-31 08:46:24 -0700751substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400752
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400753kill_user_processes = get_option('default-kill-user-processes')
754conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100755conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400756substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400757
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400758dns_servers = get_option('dns-servers')
759conf.set_quoted('DNS_SERVERS', dns_servers)
760substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400761
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400762ntp_servers = get_option('ntp-servers')
763conf.set_quoted('NTP_SERVERS', ntp_servers)
764substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400765
766conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
767
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400768substs.set('SUSHELL', get_option('debug-shell'))
769substs.set('DEBUGTTY', get_option('debug-tty'))
770
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200771enable_debug_hashmap = false
772enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200773foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900774 if name == 'hashmap'
775 enable_debug_hashmap = true
776 elif name == 'mmap-cache'
777 enable_debug_mmap_cache = true
778 else
779 message('unknown debug option "@0@", ignoring'.format(name))
780 endif
781endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200782conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
783conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400784
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200785conf.set10('VALGRIND', get_option('valgrind'))
786
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400787#####################################################################
788
789threads = dependency('threads')
790librt = cc.find_library('rt')
791libm = cc.find_library('m')
792libdl = cc.find_library('dl')
793libcrypt = cc.find_library('crypt')
794
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400795libcap = dependency('libcap', required : false)
796if not libcap.found()
797 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
798 libcap = cc.find_library('cap')
799endif
800
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400801libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100802 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400803
804want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500805if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400806 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400807 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400808 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200809 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400810else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200811 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400812 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400813endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200814conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400815
816want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500817if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400818 libselinux = dependency('libselinux',
819 version : '>= 2.1.9',
820 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200821 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400822else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200823 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400824 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400825endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200826conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400827
828want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500829if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400830 libapparmor = dependency('libapparmor',
831 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200832 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400833else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200834 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400835 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400836endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200837conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400838
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400839smack_run_label = get_option('smack-run-label')
840if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400841 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400842endif
843
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400844want_polkit = get_option('polkit')
845install_polkit = false
846install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500847if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400848 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400849
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400850 libpolkit = dependency('polkit-gobject-1',
851 required : false)
852 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
853 message('Old polkit detected, will install pkla files')
854 install_polkit_pkla = true
855 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400856endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200857conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400858
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400859want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500860if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400861 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200862 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400863else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200864 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400865 libacl = []
866endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200867conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400868
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400869want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500870if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400871 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200872 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400873else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200874 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400875 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400876endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200877conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400878
879want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500880if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400881 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200882 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400883else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200884 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400885 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400886endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200887conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400888
889want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500890if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400891 libkmod = dependency('libkmod',
892 version : '>= 15',
893 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200894 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400895else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200896 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400897 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400898endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400900
901want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500902if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400903 libpam = cc.find_library('pam', required : want_pam == 'true')
904 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200905 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400906else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200907 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400908 libpam = []
909 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400910endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200911conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400912
913want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500914if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400915 libmicrohttpd = dependency('libmicrohttpd',
916 version : '>= 0.9.33',
917 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200918 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400919else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200920 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400921 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400922endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200923conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400924
925want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500926if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400927 libcryptsetup = dependency('libcryptsetup',
928 version : '>= 1.6.0',
929 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200930 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100931 have_sector = cc.has_member(
932 'struct crypt_params_plain',
933 'sector_size',
934 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400935else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200936 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100937 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400938 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400939endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200940conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100941conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400942
943want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500944if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400945 libcurl = dependency('libcurl',
946 version : '>= 7.32.0',
947 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200948 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400949else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200950 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400951 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400952endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200953conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400954
955want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400956want_libidn2 = get_option('libidn2')
957if want_libidn == 'true' and want_libidn2 == 'true'
958 error('libidn and libidn2 cannot be requested simultaneously')
959endif
960
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500961if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400962 libidn = dependency('libidn',
963 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200964 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400965else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200966 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400967 libidn = []
968endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200969conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500970if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400971 # libidn is used for both libidn and libidn2 objects
972 libidn = dependency('libidn2',
973 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200974 have = libidn.found()
975else
976 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400977endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200978conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400979
980want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500981if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400982 libiptc = dependency('libiptc',
983 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200984 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400985else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200986 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400987 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400988endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200989conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400990
991want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500992if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400993 libqrencode = dependency('libqrencode',
994 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200995 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400996else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200997 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400998 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400999endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001000conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001001
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001002want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001003if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001004 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1005 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001006 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001007else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001008 have = false
1009endif
1010if not have
1011 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001012 libgcrypt = []
1013 libgpg_error = []
1014endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001015conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001016
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001017want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001018if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001019 libgnutls = dependency('gnutls',
1020 version : '>= 3.1.4',
1021 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001022 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001023else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001024 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001025 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001026endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001027conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001028
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001029want_openssl = get_option('openssl')
1030if want_openssl != 'false' and not fuzzer_build
1031 libopenssl = dependency('openssl',
1032 version : '>= 1.1.0',
1033 required : want_openssl == 'true')
1034 have = libopenssl.found()
1035else
1036 have = false
1037 libopenssl = []
1038endif
1039conf.set10('HAVE_OPENSSL', have)
1040
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001041want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001042if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001043 libdw = dependency('libdw',
1044 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001045 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001046else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001047 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001048 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001049endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001050conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001051
1052want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001053if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001054 libz = dependency('zlib',
1055 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001056 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001057else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001058 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001059 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001060endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001061conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001062
1063want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001064if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001065 libbzip2 = cc.find_library('bz2',
1066 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001067 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001068else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001069 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001070 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001071endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001072conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001073
1074want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001075if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001076 libxz = dependency('liblzma',
1077 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001079else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001081 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001082endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001083conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001084
1085want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001086if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001087 liblz4 = dependency('liblz4',
1088 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001089 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001090else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001091 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001092 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001093endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001094conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001095
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001096want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001097if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001098 libxkbcommon = dependency('xkbcommon',
1099 version : '>= 0.3.0',
1100 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001101 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001102else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001103 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001104 libxkbcommon = []
1105endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001106conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001107
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001108want_pcre2 = get_option('pcre2')
1109if want_pcre2 != 'false'
1110 libpcre2 = dependency('libpcre2-8',
1111 required : want_pcre2 == 'true')
1112 have = libpcre2.found()
1113else
1114 have = false
1115 libpcre2 = []
1116endif
1117conf.set10('HAVE_PCRE2', have)
1118
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001119want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001120if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001121 libglib = dependency('glib-2.0',
1122 version : '>= 2.22.0',
1123 required : want_glib == 'true')
1124 libgobject = dependency('gobject-2.0',
1125 version : '>= 2.22.0',
1126 required : want_glib == 'true')
1127 libgio = dependency('gio-2.0',
1128 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001129 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001130else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001131 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001132 libglib = []
1133 libgobject = []
1134 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001135endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001136conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001137
1138want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001139if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001140 libdbus = dependency('dbus-1',
1141 version : '>= 1.3.2',
1142 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001143 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001144else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001145 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001146 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001147endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001148conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001149
Yu Watanabe42303dc2017-06-18 05:22:32 +09001150default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001151if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001152 default_dnssec = 'no'
1153endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001154if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001155 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1156 default_dnssec = 'no'
1157endif
1158conf.set('DEFAULT_DNSSEC_MODE',
1159 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1160substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1161
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001162dns_over_tls = get_option('dns-over-tls')
1163if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001164 if dns_over_tls == 'openssl'
1165 have_gnutls = false
1166 else
1167 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1168 if dns_over_tls == 'gnutls' and not have_gnutls
1169 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1170 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001171 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001172 if dns_over_tls == 'gnutls' or have_gnutls
1173 have_openssl = false
1174 else
1175 have_openssl = conf.get('HAVE_OPENSSL') == 1
1176 if dns_over_tls != 'auto' and not have_openssl
1177 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1178 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1179 endif
1180 endif
1181 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001182else
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001183 have = have_gnutls = have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001184endif
1185conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001186conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1187conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001188
Iwan Timmerc9299be2018-06-13 20:26:24 +02001189default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001190if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001191 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001192endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001193if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1194 message('default-dns-over-tls cannot be set to opportunistic when DNS-over-TLS support is disabled. Setting default-dns-over-tls to no.')
Iwan Timmerc9299be2018-06-13 20:26:24 +02001195 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001196endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001197conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1198 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1199substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001200
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001201want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001202if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001203 have = (conf.get('HAVE_LIBCURL') == 1 and
1204 conf.get('HAVE_ZLIB') == 1 and
1205 conf.get('HAVE_BZIP2') == 1 and
1206 conf.get('HAVE_XZ') == 1 and
1207 conf.get('HAVE_GCRYPT') == 1)
1208 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001209 error('importd support was requested, but dependencies are not available')
1210 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001211else
1212 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001213endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001214conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001215
1216want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001217if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001218 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1219 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001220 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1221 # it's possible to build one without the other. Complain only if
1222 # support was explictly requested. The auxiliary files like sysusers
1223 # config should be installed when any of the programs are built.
1224 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1225 error('remote support was requested, but dependencies are not available')
1226 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001227 have = have_deps[0] or have_deps[1]
1228else
1229 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001230endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001231conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001232
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001233foreach term : ['utmp',
1234 'hibernate',
1235 'environment-d',
1236 'binfmt',
1237 'coredump',
1238 'resolve',
1239 'logind',
1240 'hostnamed',
1241 'localed',
1242 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001243 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001244 'networkd',
1245 'timedated',
1246 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001247 'firstboot',
1248 'randomseed',
1249 'backlight',
1250 'vconsole',
1251 'quotacheck',
1252 'sysusers',
1253 'tmpfiles',
1254 'hwdb',
1255 'rfkill',
1256 'ldconfig',
1257 'efi',
1258 'tpm',
1259 'ima',
1260 'smack',
1261 'gshadow',
1262 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001263 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001264 'nss-systemd']
1265 have = get_option(term)
1266 name = 'ENABLE_' + term.underscorify().to_upper()
1267 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001268endforeach
1269
Yu Watanabe08540a92018-07-18 09:25:57 +09001270foreach tuple : [['nss-mymachines', 'machined'],
1271 ['nss-resolve', 'resolve']]
1272 want = get_option(tuple[0])
1273 if want != 'false'
1274 have = get_option(tuple[1])
1275 if want == 'true' and not have
1276 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1277 endif
1278 else
1279 have = false
1280 endif
1281 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1282 conf.set10(name, have)
1283endforeach
1284
1285enable_nss = false
1286foreach term : ['ENABLE_NSS_MYHOSTNAME',
1287 'ENABLE_NSS_MYMACHINES',
1288 'ENABLE_NSS_RESOLVE',
1289 'ENABLE_NSS_SYSTEMD']
1290 if conf.get(term) == 1
1291 enable_nss = true
1292 endif
1293endforeach
1294conf.set10('ENABLE_NSS', enable_nss)
1295
Yu Watanabe348b4432018-05-07 18:17:35 +09001296conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001297
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001298tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001299fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001300
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001301conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001302
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001303#####################################################################
1304
1305if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001306 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001307
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001308 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001309 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001310 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001311 elif efi_arch == 'x86_64'
1312 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001313 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001314 elif efi_arch == 'arm'
1315 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001316 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001317 elif efi_arch == 'aarch64'
1318 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001319 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001320 else
1321 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001322 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001323 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001324
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001325 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001326 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001327
Yu Watanabeac093402018-05-10 16:04:16 +09001328 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001329else
1330 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001331endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001332conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001333
1334#####################################################################
1335
1336config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001337 output : 'config.h',
1338 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001339
Yu Watanabe348b4432018-05-07 18:17:35 +09001340meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1341
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001342includes = include_directories('src/basic',
1343 'src/shared',
1344 'src/systemd',
1345 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001346 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001347 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001348 'src/resolve',
1349 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001350 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001351 'src/login',
1352 'src/udev',
1353 'src/libudev',
1354 'src/core',
1355 'src/libsystemd/sd-bus',
1356 'src/libsystemd/sd-device',
1357 'src/libsystemd/sd-hwdb',
1358 'src/libsystemd/sd-id128',
1359 'src/libsystemd/sd-netlink',
1360 'src/libsystemd/sd-network',
1361 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001362 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001363
1364add_project_arguments('-include', 'config.h', language : 'c')
1365
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001366subdir('po')
1367subdir('catalog')
1368subdir('src/systemd')
1369subdir('src/basic')
1370subdir('src/libsystemd')
1371subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001372subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001373subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001374
1375libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001376 'journal-core',
1377 libjournal_core_sources,
1378 journald_gperf_c,
1379 include_directories : includes,
1380 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001381
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001382libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001383libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001384 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001385 'src/systemd/sd-id128.h', # pick a header file at random to work around old meson bug
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001386 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001387 include_directories : includes,
1388 link_args : ['-shared',
1389 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001390 link_with : [libbasic,
1391 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001392 link_whole : [libsystemd_static,
1393 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001394 dependencies : [threads,
1395 librt,
1396 libxz,
1397 liblz4],
1398 link_depends : libsystemd_sym,
1399 install : true,
1400 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001401
Davide Cavalca70848ec2018-04-09 02:43:35 -07001402static_libsystemd = get_option('static-libsystemd')
1403static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1404
1405install_libsystemd_static = static_library(
1406 'systemd',
1407 libsystemd_sources,
1408 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001409 basic_sources,
1410 basic_gcrypt_sources,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001411 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001412 build_by_default : static_libsystemd != 'false',
1413 install : static_libsystemd != 'false',
1414 install_dir : rootlibdir,
1415 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1416 dependencies : [threads,
1417 librt,
1418 libxz,
1419 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001420 libcap,
1421 libblkid,
1422 libmount,
1423 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001424 libgcrypt],
1425 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1426
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001427############################################################
1428
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001429# binaries that have --help and are intended for use by humans,
1430# usually, but not always, installed in /bin.
1431public_programs = []
1432
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001433subdir('src/libudev')
1434subdir('src/shared')
1435subdir('src/core')
1436subdir('src/udev')
1437subdir('src/network')
1438
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001439subdir('src/analyze')
1440subdir('src/journal-remote')
1441subdir('src/coredump')
1442subdir('src/hostname')
1443subdir('src/import')
1444subdir('src/kernel-install')
1445subdir('src/locale')
1446subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001447subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001448subdir('src/nspawn')
1449subdir('src/resolve')
1450subdir('src/timedate')
1451subdir('src/timesync')
1452subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001453subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001454
1455subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001456subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001457subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001458subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001459
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001460############################################################
1461
1462# only static linking apart from libdl, to make sure that the
1463# module is linked to all libraries that it uses.
1464test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001465 'test-dlopen',
1466 test_dlopen_c,
1467 include_directories : includes,
1468 link_with : [libbasic],
1469 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001470
Yu Watanabe08540a92018-07-18 09:25:57 +09001471foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001472 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001473 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1474 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001475
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001476 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001477 if condition
1478 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001479
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001480 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1481 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001482
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001483 nss = shared_library(
1484 'nss_' + module,
1485 'src/nss-@0@/nss-@0@.c'.format(module),
1486 version : '2',
1487 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001488 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1489 link_args : ['-Wl,-z,nodelete',
1490 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001491 '-Wl,--version-script=' + version_script_arg,
1492 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001493 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001494 libbasic],
1495 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001496 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001497 link_depends : sym,
1498 install : true,
1499 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001500
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001501 # We cannot use shared_module because it does not support version suffix.
1502 # Unfortunately shared_library insists on creating the symlink…
1503 meson.add_install_script('sh', '-c',
1504 'rm $DESTDIR@0@/libnss_@1@.so'
1505 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001506
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001507 if want_tests != 'false'
1508 test('dlopen-nss_' + module,
1509 test_dlopen,
1510 # path to dlopen must include a slash
1511 args : nss.full_path())
1512 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001513 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001514endforeach
1515
1516############################################################
1517
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001518executable('systemd',
1519 systemd_sources,
1520 include_directories : includes,
1521 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001522 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001523 dependencies : [threads,
1524 librt,
1525 libseccomp,
1526 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001527 libmount,
1528 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001529 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001530 install : true,
1531 install_dir : rootlibexecdir)
1532
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001533meson.add_install_script(meson_make_symlink,
1534 join_paths(rootlibexecdir, 'systemd'),
1535 join_paths(rootsbindir, 'init'))
1536
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001537exe = executable('systemd-analyze',
1538 systemd_analyze_sources,
1539 include_directories : includes,
1540 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001541 libshared],
1542 dependencies : [threads,
1543 librt,
1544 libseccomp,
1545 libselinux,
1546 libmount,
1547 libblkid],
1548 install_rpath : rootlibexecdir,
1549 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001550public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001551
1552executable('systemd-journald',
1553 systemd_journald_sources,
1554 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001555 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001556 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001557 dependencies : [threads,
1558 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001559 liblz4,
1560 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001561 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001562 install : true,
1563 install_dir : rootlibexecdir)
1564
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001565exe = executable('systemd-cat',
1566 systemd_cat_sources,
1567 include_directories : includes,
1568 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001569 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001570 dependencies : [threads],
1571 install_rpath : rootlibexecdir,
1572 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001573public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001574
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001575exe = executable('journalctl',
1576 journalctl_sources,
1577 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001578 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001579 dependencies : [threads,
1580 libqrencode,
1581 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001582 liblz4,
1583 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001584 install_rpath : rootlibexecdir,
1585 install : true,
1586 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001587public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001588
1589executable('systemd-getty-generator',
1590 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001591 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001592 link_with : [libshared],
1593 install_rpath : rootlibexecdir,
1594 install : true,
1595 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001596
1597executable('systemd-debug-generator',
1598 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001599 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001600 link_with : [libshared],
1601 install_rpath : rootlibexecdir,
1602 install : true,
1603 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001604
1605executable('systemd-fstab-generator',
1606 'src/fstab-generator/fstab-generator.c',
1607 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001608 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001609 link_with : [libshared],
1610 install_rpath : rootlibexecdir,
1611 install : true,
1612 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001613
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001614if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001615 executable('30-systemd-environment-d-generator',
1616 'src/environment-d-generator/environment-d-generator.c',
1617 include_directories : includes,
1618 link_with : [libshared],
1619 install_rpath : rootlibexecdir,
1620 install : true,
1621 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001622
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001623 meson.add_install_script(meson_make_symlink,
1624 join_paths(sysconfdir, 'environment'),
1625 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001626endif
1627
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001628if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001629 executable('systemd-hibernate-resume-generator',
1630 'src/hibernate-resume/hibernate-resume-generator.c',
1631 include_directories : includes,
1632 link_with : [libshared],
1633 install_rpath : rootlibexecdir,
1634 install : true,
1635 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001636
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001637 executable('systemd-hibernate-resume',
1638 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001639 include_directories : includes,
1640 link_with : [libshared],
1641 install_rpath : rootlibexecdir,
1642 install : true,
1643 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001644endif
1645
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001646if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001647 executable('systemd-gpt-auto-generator',
1648 'src/gpt-auto-generator/gpt-auto-generator.c',
1649 'src/basic/blkid-util.h',
1650 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001651 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001652 dependencies : libblkid,
1653 install_rpath : rootlibexecdir,
1654 install : true,
1655 install_dir : systemgeneratordir)
1656
1657 exe = executable('systemd-dissect',
1658 'src/dissect/dissect.c',
1659 include_directories : includes,
1660 link_with : [libshared],
1661 install_rpath : rootlibexecdir,
1662 install : true,
1663 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001664 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001665endif
1666
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001667if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001668 executable('systemd-resolved',
1669 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001670 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001671 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001672 libbasic_gcrypt,
1673 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001674 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001675 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001676 install : true,
1677 install_dir : rootlibexecdir)
1678
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001679 exe = executable('resolvectl',
1680 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001681 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001682 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001683 libbasic_gcrypt,
1684 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001685 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001686 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001687 libm,
1688 libidn],
1689 install_rpath : rootlibexecdir,
1690 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001691 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001692
1693 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001694 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001695 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001696
1697 meson.add_install_script(meson_make_symlink,
1698 join_paths(bindir, 'resolvectl'),
1699 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001700endif
1701
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001702if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001703 executable('systemd-logind',
1704 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001705 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001706 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001707 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001708 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001709 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001710 install_rpath : rootlibexecdir,
1711 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001712 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001713
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001714 exe = executable('loginctl',
1715 loginctl_sources,
1716 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001717 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001718 dependencies : [threads,
1719 liblz4,
1720 libxz],
1721 install_rpath : rootlibexecdir,
1722 install : true,
1723 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001724 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001725
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001726 exe = executable('systemd-inhibit',
1727 'src/login/inhibit.c',
1728 include_directories : includes,
1729 link_with : [libshared],
1730 install_rpath : rootlibexecdir,
1731 install : true,
1732 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001733 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001734
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001735 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001736 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1737 pam_systemd = shared_library(
1738 'pam_systemd',
1739 pam_systemd_c,
1740 name_prefix : '',
1741 include_directories : includes,
1742 link_args : ['-shared',
1743 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001744 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001745 libshared_static],
1746 dependencies : [threads,
1747 libpam,
1748 libpam_misc],
1749 link_depends : pam_systemd_sym,
1750 install : true,
1751 install_dir : pamlibdir)
1752
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001753 if want_tests != 'false'
1754 test('dlopen-pam_systemd',
1755 test_dlopen,
1756 # path to dlopen must include a slash
1757 args : [pam_systemd.full_path()])
1758 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001759 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001760endif
1761
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001762executable('systemd-user-runtime-dir',
1763 user_runtime_dir_sources,
1764 include_directories : includes,
1765 link_with : [libshared, liblogind_core],
1766 install_rpath : rootlibexecdir,
1767 install : true,
1768 install_dir : rootlibexecdir)
1769
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001770if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001771 executable('systemd-user-sessions',
1772 'src/user-sessions/user-sessions.c',
1773 include_directories : includes,
1774 link_with : [libshared],
1775 install_rpath : rootlibexecdir,
1776 install : true,
1777 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001778endif
1779
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001780if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001781 exe = executable('bootctl',
1782 'src/boot/bootctl.c',
1783 include_directories : includes,
1784 link_with : [libshared],
1785 dependencies : [libblkid],
1786 install_rpath : rootlibexecdir,
1787 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001788 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001789endif
1790
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001791exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1792 include_directories : includes,
1793 link_with : [libshared],
1794 dependencies : [threads],
1795 install_rpath : rootlibexecdir,
1796 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001797public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001798
Felipe Satelerf3794362018-05-22 15:08:57 -04001799
1800if get_option('link-systemctl-shared')
1801 systemctl_link_with = [libshared]
1802else
1803 systemctl_link_with = [libsystemd_static,
1804 libshared_static,
1805 libjournal_client,
1806 libbasic_gcrypt]
1807endif
1808
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001809exe = executable('systemctl', 'src/systemctl/systemctl.c',
1810 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001811 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001812 dependencies : [threads,
1813 libcap,
1814 libselinux,
1815 libxz,
1816 liblz4],
1817 install_rpath : rootlibexecdir,
1818 install : true,
1819 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001820public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001821
Lennart Poettering61d05782018-04-16 21:41:40 +02001822if conf.get('ENABLE_PORTABLED') == 1
1823 executable('systemd-portabled',
1824 systemd_portabled_sources,
1825 include_directories : includes,
1826 link_with : [libshared],
1827 dependencies : [threads],
1828 install_rpath : rootlibexecdir,
1829 install : true,
1830 install_dir : rootlibexecdir)
1831
1832 exe = executable('portablectl', 'src/portable/portablectl.c',
1833 include_directories : includes,
1834 link_with : [libshared],
1835 dependencies : [threads],
1836 install_rpath : rootlibexecdir,
1837 install : true,
1838 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001839 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001840endif
1841
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001842foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1843 meson.add_install_script(meson_make_symlink,
1844 join_paths(rootbindir, 'systemctl'),
1845 join_paths(rootsbindir, alias))
1846endforeach
1847
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001848if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001849 executable('systemd-backlight',
1850 'src/backlight/backlight.c',
1851 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001852 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001853 install_rpath : rootlibexecdir,
1854 install : true,
1855 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001856endif
1857
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001858if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001859 executable('systemd-rfkill',
1860 'src/rfkill/rfkill.c',
1861 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001862 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001863 install_rpath : rootlibexecdir,
1864 install : true,
1865 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001866endif
1867
1868executable('systemd-system-update-generator',
1869 'src/system-update-generator/system-update-generator.c',
1870 include_directories : includes,
1871 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001872 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001873 install : true,
1874 install_dir : systemgeneratordir)
1875
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001876if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001877 executable('systemd-cryptsetup',
1878 'src/cryptsetup/cryptsetup.c',
1879 include_directories : includes,
1880 link_with : [libshared],
1881 dependencies : [libcryptsetup],
1882 install_rpath : rootlibexecdir,
1883 install : true,
1884 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001885
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001886 executable('systemd-cryptsetup-generator',
1887 'src/cryptsetup/cryptsetup-generator.c',
1888 include_directories : includes,
1889 link_with : [libshared],
1890 dependencies : [libcryptsetup],
1891 install_rpath : rootlibexecdir,
1892 install : true,
1893 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001894
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001895 executable('systemd-veritysetup',
1896 'src/veritysetup/veritysetup.c',
1897 include_directories : includes,
1898 link_with : [libshared],
1899 dependencies : [libcryptsetup],
1900 install_rpath : rootlibexecdir,
1901 install : true,
1902 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001903
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001904 executable('systemd-veritysetup-generator',
1905 'src/veritysetup/veritysetup-generator.c',
1906 include_directories : includes,
1907 link_with : [libshared],
1908 dependencies : [libcryptsetup],
1909 install_rpath : rootlibexecdir,
1910 install : true,
1911 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001912endif
1913
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001914if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001915 executable('systemd-sysv-generator',
1916 'src/sysv-generator/sysv-generator.c',
1917 include_directories : includes,
1918 link_with : [libshared],
1919 install_rpath : rootlibexecdir,
1920 install : true,
1921 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001922
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001923 executable('systemd-rc-local-generator',
1924 'src/rc-local-generator/rc-local-generator.c',
1925 include_directories : includes,
1926 link_with : [libshared],
1927 install_rpath : rootlibexecdir,
1928 install : true,
1929 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001930endif
1931
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001932if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001933 executable('systemd-hostnamed',
1934 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001935 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001936 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001937 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001938 install : true,
1939 install_dir : rootlibexecdir)
1940
1941 exe = executable('hostnamectl',
1942 'src/hostname/hostnamectl.c',
1943 include_directories : includes,
1944 link_with : [libshared],
1945 install_rpath : rootlibexecdir,
1946 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001947 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001948endif
1949
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001950if conf.get('ENABLE_LOCALED') == 1
1951 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001952 # logind will load libxkbcommon.so dynamically on its own
1953 deps = [libdl]
1954 else
1955 deps = []
1956 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001957
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001958 executable('systemd-localed',
1959 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001960 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001961 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001962 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001963 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001964 install : true,
1965 install_dir : rootlibexecdir)
1966
1967 exe = executable('localectl',
1968 localectl_sources,
1969 include_directories : includes,
1970 link_with : [libshared],
1971 install_rpath : rootlibexecdir,
1972 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001973 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001974endif
1975
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001976if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001977 executable('systemd-timedated',
1978 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001979 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001980 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001981 install_rpath : rootlibexecdir,
1982 install : true,
1983 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09001984endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001985
Yu Watanabe6129ec82018-05-03 18:07:43 +09001986if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001987 exe = executable('timedatectl',
1988 'src/timedate/timedatectl.c',
1989 include_directories : includes,
1990 install_rpath : rootlibexecdir,
1991 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09001992 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001993 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001994 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001995endif
1996
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001997if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001998 executable('systemd-timesyncd',
1999 systemd_timesyncd_sources,
2000 include_directories : includes,
2001 link_with : [libshared],
2002 dependencies : [threads,
2003 libm],
2004 install_rpath : rootlibexecdir,
2005 install : true,
2006 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002007
2008 executable('systemd-time-wait-sync',
2009 'src/time-wait-sync/time-wait-sync.c',
2010 include_directories : includes,
2011 link_with : [libshared],
2012 install_rpath : rootlibexecdir,
2013 install : true,
2014 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002015endif
2016
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002017if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002018 executable('systemd-machined',
2019 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002020 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002021 link_with : [libmachine_core,
2022 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002023 install_rpath : rootlibexecdir,
2024 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002025 install_dir : rootlibexecdir)
2026
2027 exe = executable('machinectl',
2028 'src/machine/machinectl.c',
2029 include_directories : includes,
2030 link_with : [libshared],
2031 dependencies : [threads,
2032 libxz,
2033 liblz4],
2034 install_rpath : rootlibexecdir,
2035 install : true,
2036 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002037 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002038endif
2039
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002040if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002041 executable('systemd-importd',
2042 systemd_importd_sources,
2043 include_directories : includes,
2044 link_with : [libshared],
2045 dependencies : [threads],
2046 install_rpath : rootlibexecdir,
2047 install : true,
2048 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002049
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002050 systemd_pull = executable('systemd-pull',
2051 systemd_pull_sources,
2052 include_directories : includes,
2053 link_with : [libshared],
2054 dependencies : [libcurl,
2055 libz,
2056 libbzip2,
2057 libxz,
2058 libgcrypt],
2059 install_rpath : rootlibexecdir,
2060 install : true,
2061 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002062
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002063 systemd_import = executable('systemd-import',
2064 systemd_import_sources,
2065 include_directories : includes,
2066 link_with : [libshared],
2067 dependencies : [libcurl,
2068 libz,
2069 libbzip2,
2070 libxz],
2071 install_rpath : rootlibexecdir,
2072 install : true,
2073 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002074
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002075 systemd_export = executable('systemd-export',
2076 systemd_export_sources,
2077 include_directories : includes,
2078 link_with : [libshared],
2079 dependencies : [libcurl,
2080 libz,
2081 libbzip2,
2082 libxz],
2083 install_rpath : rootlibexecdir,
2084 install : true,
2085 install_dir : rootlibexecdir)
2086 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002087endif
2088
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002089if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002090 exe = executable('systemd-journal-upload',
2091 systemd_journal_upload_sources,
2092 include_directories : includes,
2093 link_with : [libshared],
2094 dependencies : [threads,
2095 libcurl,
2096 libgnutls,
2097 libxz,
2098 liblz4],
2099 install_rpath : rootlibexecdir,
2100 install : true,
2101 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002102 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002103endif
2104
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002105if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002106 s_j_remote = executable('systemd-journal-remote',
2107 systemd_journal_remote_sources,
2108 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002109 link_with : [libshared,
2110 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002111 dependencies : [threads,
2112 libmicrohttpd,
2113 libgnutls,
2114 libxz,
2115 liblz4],
2116 install_rpath : rootlibexecdir,
2117 install : true,
2118 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002119
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002120 s_j_gatewayd = executable('systemd-journal-gatewayd',
2121 systemd_journal_gatewayd_sources,
2122 include_directories : includes,
2123 link_with : [libshared],
2124 dependencies : [threads,
2125 libmicrohttpd,
2126 libgnutls,
2127 libxz,
2128 liblz4],
2129 install_rpath : rootlibexecdir,
2130 install : true,
2131 install_dir : rootlibexecdir)
2132 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002133endif
2134
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002135if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002136 executable('systemd-coredump',
2137 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002138 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002139 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002140 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002141 libacl,
2142 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002143 libxz,
2144 liblz4],
2145 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002146 install : true,
2147 install_dir : rootlibexecdir)
2148
2149 exe = executable('coredumpctl',
2150 coredumpctl_sources,
2151 include_directories : includes,
2152 link_with : [libshared],
2153 dependencies : [threads,
2154 libxz,
2155 liblz4],
2156 install_rpath : rootlibexecdir,
2157 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002158 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002159endif
2160
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002161if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002162 exe = executable('systemd-binfmt',
2163 'src/binfmt/binfmt.c',
2164 include_directories : includes,
2165 link_with : [libshared],
2166 install_rpath : rootlibexecdir,
2167 install : true,
2168 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002169 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002170
2171 meson.add_install_script('sh', '-c',
2172 mkdir_p.format(binfmtdir))
2173 meson.add_install_script('sh', '-c',
2174 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2175endif
2176
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002177if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002178 executable('systemd-vconsole-setup',
2179 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002180 include_directories : includes,
2181 link_with : [libshared],
2182 install_rpath : rootlibexecdir,
2183 install : true,
2184 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002185endif
2186
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002187if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002188 executable('systemd-random-seed',
2189 'src/random-seed/random-seed.c',
2190 include_directories : includes,
2191 link_with : [libshared],
2192 install_rpath : rootlibexecdir,
2193 install : true,
2194 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002195endif
2196
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002197if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002198 executable('systemd-firstboot',
2199 'src/firstboot/firstboot.c',
2200 include_directories : includes,
2201 link_with : [libshared],
2202 dependencies : [libcrypt],
2203 install_rpath : rootlibexecdir,
2204 install : true,
2205 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002206endif
2207
2208executable('systemd-remount-fs',
2209 'src/remount-fs/remount-fs.c',
2210 'src/core/mount-setup.c',
2211 'src/core/mount-setup.h',
2212 include_directories : includes,
2213 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002214 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002215 install : true,
2216 install_dir : rootlibexecdir)
2217
2218executable('systemd-machine-id-setup',
2219 'src/machine-id-setup/machine-id-setup-main.c',
2220 'src/core/machine-id-setup.c',
2221 'src/core/machine-id-setup.h',
2222 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002223 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002224 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002225 install : true,
2226 install_dir : rootbindir)
2227
2228executable('systemd-fsck',
2229 'src/fsck/fsck.c',
2230 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002231 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002232 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002233 install : true,
2234 install_dir : rootlibexecdir)
2235
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002236executable('systemd-growfs',
2237 'src/partition/growfs.c',
2238 include_directories : includes,
2239 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002240 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002241 install_rpath : rootlibexecdir,
2242 install : true,
2243 install_dir : rootlibexecdir)
2244
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002245executable('systemd-makefs',
2246 'src/partition/makefs.c',
2247 include_directories : includes,
2248 link_with : [libshared],
2249 install_rpath : rootlibexecdir,
2250 install : true,
2251 install_dir : rootlibexecdir)
2252
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002253executable('systemd-sleep',
2254 'src/sleep/sleep.c',
2255 include_directories : includes,
2256 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002257 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002258 install : true,
2259 install_dir : rootlibexecdir)
2260
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002261exe = executable('systemd-sysctl',
2262 'src/sysctl/sysctl.c',
2263 include_directories : includes,
2264 link_with : [libshared],
2265 install_rpath : rootlibexecdir,
2266 install : true,
2267 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002268public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002269
2270executable('systemd-ac-power',
2271 'src/ac-power/ac-power.c',
2272 include_directories : includes,
2273 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002274 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002275 install : true,
2276 install_dir : rootlibexecdir)
2277
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002278exe = executable('systemd-detect-virt',
2279 'src/detect-virt/detect-virt.c',
2280 include_directories : includes,
2281 link_with : [libshared],
2282 install_rpath : rootlibexecdir,
2283 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002284public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002285
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002286exe = executable('systemd-delta',
2287 'src/delta/delta.c',
2288 include_directories : includes,
2289 link_with : [libshared],
2290 install_rpath : rootlibexecdir,
2291 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002292public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002293
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002294exe = executable('systemd-escape',
2295 'src/escape/escape.c',
2296 include_directories : includes,
2297 link_with : [libshared],
2298 install_rpath : rootlibexecdir,
2299 install : true,
2300 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002301public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002302
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002303exe = executable('systemd-notify',
2304 'src/notify/notify.c',
2305 include_directories : includes,
2306 link_with : [libshared],
2307 install_rpath : rootlibexecdir,
2308 install : true,
2309 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002310public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002311
2312executable('systemd-volatile-root',
2313 'src/volatile-root/volatile-root.c',
2314 include_directories : includes,
2315 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002316 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002317 install : true,
2318 install_dir : rootlibexecdir)
2319
2320executable('systemd-cgroups-agent',
2321 'src/cgroups-agent/cgroups-agent.c',
2322 include_directories : includes,
2323 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002324 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002325 install : true,
2326 install_dir : rootlibexecdir)
2327
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002328exe = executable('systemd-path',
2329 'src/path/path.c',
2330 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002331 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002332 install_rpath : rootlibexecdir,
2333 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002334public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002335
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002336exe = executable('systemd-ask-password',
2337 'src/ask-password/ask-password.c',
2338 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002339 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002340 install_rpath : rootlibexecdir,
2341 install : true,
2342 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002343public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002344
2345executable('systemd-reply-password',
2346 'src/reply-password/reply-password.c',
2347 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002348 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002349 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002350 install : true,
2351 install_dir : rootlibexecdir)
2352
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002353exe = executable('systemd-tty-ask-password-agent',
2354 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2355 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002356 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002357 install_rpath : rootlibexecdir,
2358 install : true,
2359 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002360public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002361
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002362exe = executable('systemd-cgls',
2363 'src/cgls/cgls.c',
2364 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002365 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002366 install_rpath : rootlibexecdir,
2367 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002368public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002369
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002370exe = executable('systemd-cgtop',
2371 'src/cgtop/cgtop.c',
2372 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002373 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002374 install_rpath : rootlibexecdir,
2375 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002376public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002377
2378executable('systemd-initctl',
2379 'src/initctl/initctl.c',
2380 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002381 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002382 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002383 install : true,
2384 install_dir : rootlibexecdir)
2385
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002386exe = executable('systemd-mount',
2387 'src/mount/mount-tool.c',
2388 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002389 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002390 install_rpath : rootlibexecdir,
2391 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002392public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002393
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002394meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002395 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002396
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002397exe = executable('systemd-run',
2398 'src/run/run.c',
2399 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002400 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002401 install_rpath : rootlibexecdir,
2402 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002403public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002404
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002405exe = executable('systemd-stdio-bridge',
2406 'src/stdio-bridge/stdio-bridge.c',
2407 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002408 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002409 install_rpath : rootlibexecdir,
2410 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002411public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002412
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002413exe = executable('busctl',
2414 'src/busctl/busctl.c',
2415 'src/busctl/busctl-introspect.c',
2416 'src/busctl/busctl-introspect.h',
2417 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002418 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002419 install_rpath : rootlibexecdir,
2420 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002421public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002422
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002423if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002424 exe = executable('systemd-sysusers',
2425 'src/sysusers/sysusers.c',
2426 include_directories : includes,
2427 link_with : [libshared],
2428 install_rpath : rootlibexecdir,
2429 install : true,
2430 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002431 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002432endif
2433
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002434if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002435 exe = executable('systemd-tmpfiles',
2436 'src/tmpfiles/tmpfiles.c',
2437 include_directories : includes,
2438 link_with : [libshared],
2439 dependencies : [libacl],
2440 install_rpath : rootlibexecdir,
2441 install : true,
2442 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002443 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002444
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002445 if want_tests != 'false'
2446 test('test-systemd-tmpfiles',
2447 test_systemd_tmpfiles_py,
2448 # https://github.com/mesonbuild/meson/issues/2681
2449 args : exe.full_path())
2450 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002451endif
2452
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002453if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002454 exe = executable('systemd-hwdb',
2455 'src/hwdb/hwdb.c',
2456 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2457 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002458 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002459 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002460 install : true,
2461 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002462 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002463endif
2464
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002465if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002466 executable('systemd-quotacheck',
2467 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002468 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002469 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002470 install_rpath : rootlibexecdir,
2471 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002472 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002473endif
2474
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002475exe = executable('systemd-socket-proxyd',
2476 'src/socket-proxy/socket-proxyd.c',
2477 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002478 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002479 dependencies : [threads],
2480 install_rpath : rootlibexecdir,
2481 install : true,
2482 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002483public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002484
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002485exe = executable('systemd-udevd',
2486 systemd_udevd_sources,
2487 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002488 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002489 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002490 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002491 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002492 dependencies : [threads,
2493 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002494 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002495 libacl,
2496 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002497 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002498 install : true,
2499 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002500public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002501
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002502exe = executable('udevadm',
2503 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002504 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002505 include_directories : includes,
2506 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002507 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002508 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002509 dependencies : [threads,
2510 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002511 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002512 libacl,
2513 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002514 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002515 install : true,
2516 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002517public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002518
2519executable('systemd-shutdown',
2520 systemd_shutdown_sources,
2521 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002522 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002523 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002524 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002525 install : true,
2526 install_dir : rootlibexecdir)
2527
2528executable('systemd-update-done',
2529 'src/update-done/update-done.c',
2530 include_directories : includes,
2531 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002532 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002533 install : true,
2534 install_dir : rootlibexecdir)
2535
2536executable('systemd-update-utmp',
2537 'src/update-utmp/update-utmp.c',
2538 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002539 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002540 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002541 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002542 install : true,
2543 install_dir : rootlibexecdir)
2544
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002545if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002546 executable('systemd-modules-load',
2547 'src/modules-load/modules-load.c',
2548 include_directories : includes,
2549 link_with : [libshared],
2550 dependencies : [libkmod],
2551 install_rpath : rootlibexecdir,
2552 install : true,
2553 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002554
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002555 meson.add_install_script('sh', '-c',
2556 mkdir_p.format(modulesloaddir))
2557 meson.add_install_script('sh', '-c',
2558 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002559endif
2560
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002561exe = executable('systemd-nspawn',
2562 systemd_nspawn_sources,
2563 'src/core/mount-setup.c', # FIXME: use a variable?
2564 'src/core/mount-setup.h',
2565 'src/core/loopback-setup.c',
2566 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002567 include_directories : includes,
2568 link_with : [libnspawn_core,
2569 libshared],
2570 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002571 install_rpath : rootlibexecdir,
2572 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002573public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002574
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002575if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002576 executable('systemd-networkd',
2577 systemd_networkd_sources,
2578 include_directories : includes,
2579 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002580 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002581 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002582 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002583 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002584 install_rpath : rootlibexecdir,
2585 install : true,
2586 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002587
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002588 executable('systemd-networkd-wait-online',
2589 systemd_networkd_wait_online_sources,
2590 include_directories : includes,
2591 link_with : [libnetworkd_core,
2592 libshared],
2593 install_rpath : rootlibexecdir,
2594 install : true,
2595 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002596
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002597 exe = executable('networkctl',
2598 networkctl_sources,
2599 include_directories : includes,
2600 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002601 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002602 install_rpath : rootlibexecdir,
2603 install : true,
2604 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002605 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002606endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002607
2608executable('systemd-sulogin-shell',
2609 ['src/sulogin-shell/sulogin-shell.c'],
2610 include_directories : includes,
2611 link_with : [libshared],
2612 install_rpath : rootlibexecdir,
2613 install : true,
2614 install_dir : rootlibexecdir)
2615
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002616############################################################
2617
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002618custom_target(
2619 'systemd-runtest.env',
2620 output : 'systemd-runtest.env',
2621 command : ['sh', '-c', '{ ' +
2622 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(meson.current_source_dir(), 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002623 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002624 '} >@OUTPUT@'],
2625 build_by_default : true)
2626
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002627foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002628 sources = tuple[0]
2629 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2630 dependencies = tuple[2]
2631 condition = tuple.length() >= 4 ? tuple[3] : ''
2632 type = tuple.length() >= 5 ? tuple[4] : ''
2633 defs = tuple.length() >= 6 ? tuple[5] : []
2634 incs = tuple.length() >= 7 ? tuple[6] : includes
2635 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002636
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002637 name = sources[0].split('/')[-1].split('.')[0]
2638 if type.startswith('timeout=')
2639 timeout = type.split('=')[1].to_int()
2640 type = ''
2641 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002642 if want_tests == 'false'
2643 message('Not compiling @0@ because tests is set to false'.format(name))
2644 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002645 exe = executable(
2646 name,
2647 sources,
2648 include_directories : incs,
2649 link_with : link_with,
2650 dependencies : dependencies,
2651 c_args : defs,
2652 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002653 install : install_tests,
2654 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002655
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002656 if type == 'manual'
2657 message('@0@ is a manual test'.format(name))
2658 elif type == 'unsafe' and want_tests != 'unsafe'
2659 message('@0@ is an unsafe test'.format(name))
2660 else
2661 test(name, exe,
2662 env : test_env,
2663 timeout : timeout)
2664 endif
2665 else
2666 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2667 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002668endforeach
2669
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002670exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002671 'test-libsystemd-sym',
2672 test_libsystemd_sym_c,
2673 include_directories : includes,
2674 link_with : [libsystemd],
2675 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.
Davide Cavalca20f3d322018-04-24 13:34:48 -07002688 build_by_default : static_libsystemd_pic,
2689 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,
2699 c_args : ['-Wno-deprecated-declarations'],
2700 link_with : [libudev],
2701 install : install_tests,
2702 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002703if want_tests != 'false'
2704 test('test-libudev-sym', exe)
2705endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002706
2707exe = executable(
2708 'test-libudev-static-sym',
2709 test_libudev_sym_c,
2710 include_directories : includes,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002711 c_args : ['-Wno-deprecated-declarations'],
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002712 link_with : [install_libudev_static],
Davide Cavalca20f3d322018-04-24 13:34:48 -07002713 build_by_default : static_libudev_pic,
2714 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002715 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002716if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002717 test('test-libudev-static-sym', exe)
2718endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002719
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002720############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002721
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002722fuzzer_exes = []
2723
2724foreach tuple : fuzzers
2725 sources = tuple[0]
2726 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2727 dependencies = tuple[2]
2728 defs = tuple.length() >= 4 ? tuple[3] : []
2729 incs = tuple.length() >= 5 ? tuple[4] : includes
2730
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002731 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002732 dependencies += fuzzing_engine
2733 else
2734 sources += 'src/fuzz/fuzz-main.c'
2735 endif
2736
2737 name = sources[0].split('/')[-1].split('.')[0]
2738
2739 fuzzer_exes += executable(
2740 name,
2741 sources,
2742 include_directories : [incs, include_directories('src/fuzz')],
2743 link_with : link_with,
2744 dependencies : dependencies,
2745 c_args : defs,
2746 install : false)
2747endforeach
2748
2749run_target('fuzzers',
2750 depends : fuzzer_exes,
2751 command : ['true'])
2752
2753############################################################
2754
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002755make_directive_index_py = find_program('tools/make-directive-index.py')
2756make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002757xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002758hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002759
2760subdir('units')
2761subdir('sysctl.d')
2762subdir('sysusers.d')
2763subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002764subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002765subdir('hwdb')
2766subdir('network')
2767subdir('man')
2768subdir('shell-completion/bash')
2769subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002770subdir('docs/sysvinit')
2771subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002772
2773# FIXME: figure out if the warning is true:
2774# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2775install_subdir('factory/etc',
2776 install_dir : factorydir)
2777
2778
2779install_data('xorg/50-systemd-user.sh',
2780 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002781install_data('modprobe.d/systemd.conf',
2782 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002783install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002784 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002785 'NEWS',
2786 'README',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002787 'docs/CODING_STYLE',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002788 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002789 'docs/ENVIRONMENT.md',
2790 'docs/HACKING',
2791 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002792 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002793 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002794 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2795 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002796
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002797meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2798meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2799
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002800############################################################
2801
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002802meson_check_help = find_program('tools/meson-check-help.sh')
2803
2804foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002805 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002806 if want_tests != 'false'
2807 test('check-help-' + name,
2808 meson_check_help,
2809 args : [exec.full_path()])
2810 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002811endforeach
2812
2813############################################################
2814
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002815# Enable tests for all supported sanitizers
2816foreach tuple : sanitizers
2817 sanitizer = tuple[0]
2818 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002819
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002820 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002821 prev = ''
2822 foreach p : fuzz_regression_tests
2823 b = p.split('/')[-2]
2824 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002825
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002826 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002827
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002828 if name != prev
2829 if want_tests == 'false'
2830 message('Not compiling @0@ because tests is set to false'.format(name))
2831 elif slow_tests
2832 exe = custom_target(
2833 name,
2834 output : name,
2835 depends : build,
2836 command : [env, 'ln', '-fs',
2837 join_paths(build.full_path(), b),
2838 '@OUTPUT@'],
2839 build_by_default : true)
2840 else
2841 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2842 endif
2843 endif
2844 prev = name
2845
2846 if want_tests != 'false' and slow_tests
2847 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2848 env,
2849 args : [exe.full_path(),
2850 join_paths(meson.source_root(),
2851 'test/fuzz-regressions',
2852 p)])
2853 endif
2854 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002855 endif
2856endforeach
2857
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002858
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002859############################################################
2860
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002861if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002862 all_files = run_command(
2863 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002864 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002865 'ls-files',
2866 ':/*.[ch]'])
2867 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002868
userwithuide85a6902017-08-09 13:41:44 +00002869 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002870 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002871 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002872 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00002873 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002874 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002875 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002876endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002877
2878if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002879 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002880 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002881 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002882 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002883endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002884
2885if git.found()
2886 git_head = run_command(
2887 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002888 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002889 'rev-parse', 'HEAD']).stdout().strip()
2890 git_head_short = run_command(
2891 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002892 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002893 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2894
2895 run_target(
2896 'git-snapshot',
2897 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002898 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002899 git_head_short),
2900 '--prefix', 'systemd-@0@/'.format(git_head),
2901 'HEAD'])
2902endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002903
2904############################################################
2905
Lennart Poettering51b13862017-12-20 12:51:14 +01002906meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2907run_target(
2908 'check-api-docs',
2909 depends : [man, libsystemd, libudev],
2910 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2911
2912############################################################
2913
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002914status = [
2915 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2916
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002917 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002918 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002919 'prefix directory: @0@'.format(prefixdir),
2920 'rootprefix directory: @0@'.format(rootprefixdir),
2921 'sysconf directory: @0@'.format(sysconfdir),
2922 'include directory: @0@'.format(includedir),
2923 'lib directory: @0@'.format(libdir),
2924 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002925 'SysV init scripts: @0@'.format(sysvinit_path),
2926 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002927 'PAM modules directory: @0@'.format(pamlibdir),
2928 'PAM configuration directory: @0@'.format(pamconfdir),
2929 'RPM macros directory: @0@'.format(rpmmacrosdir),
2930 'modprobe.d directory: @0@'.format(modprobedir),
2931 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2932 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2933 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2934 'bash completions directory: @0@'.format(bashcompletiondir),
2935 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002936 'extra start script: @0@'.format(get_option('rc-local')),
2937 'extra stop script: @0@'.format(get_option('halt-local')),
2938 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2939 get_option('debug-tty')),
2940 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09002941 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002942 'maximum system UID: @0@'.format(system_uid_max),
2943 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002944 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2945 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2946 'minimum container UID base: @0@'.format(container_uid_base_min),
2947 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002948 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002949 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002950 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002951 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002952 'nobody user name: @0@'.format(nobody_user),
2953 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002954 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002955 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002956
2957 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02002958 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002959 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2960 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2961
2962alt_dns_servers = '\n '.join(dns_servers.split(' '))
2963alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2964status += [
2965 'default DNS servers: @0@'.format(alt_dns_servers),
2966 'default NTP servers: @0@'.format(alt_ntp_servers)]
2967
2968alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2969 '@@0@'.format(time_epoch)).stdout().strip()
2970status += [
2971 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2972
2973# TODO:
2974# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2975# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2976# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2977
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002978if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002979 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002980
2981 if have_gnu_efi
2982 status += [
2983 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2984 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002985 'EFI lib directory: @0@'.format(efi_libdir),
2986 'EFI lds directory: @0@'.format(efi_ldsdir),
2987 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002988 endif
2989endif
2990
2991found = []
2992missing = []
2993
2994foreach tuple : [
2995 ['libcryptsetup'],
2996 ['PAM'],
2997 ['AUDIT'],
2998 ['IMA'],
2999 ['AppArmor'],
3000 ['SELinux'],
3001 ['SECCOMP'],
3002 ['SMACK'],
3003 ['zlib'],
3004 ['xz'],
3005 ['lz4'],
3006 ['bzip2'],
3007 ['ACL'],
3008 ['gcrypt'],
3009 ['qrencode'],
3010 ['microhttpd'],
3011 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003012 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003013 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003014 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003015 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003016 ['libidn'],
3017 ['libiptc'],
3018 ['elfutils'],
3019 ['binfmt'],
3020 ['vconsole'],
3021 ['quotacheck'],
3022 ['tmpfiles'],
3023 ['environment.d'],
3024 ['sysusers'],
3025 ['firstboot'],
3026 ['randomseed'],
3027 ['backlight'],
3028 ['rfkill'],
3029 ['logind'],
3030 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003031 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003032 ['importd'],
3033 ['hostnamed'],
3034 ['timedated'],
3035 ['timesyncd'],
3036 ['localed'],
3037 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003038 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003039 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3040 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003041 ['coredump'],
3042 ['polkit'],
3043 ['legacy pkla', install_polkit_pkla],
3044 ['efi'],
3045 ['gnu-efi', have_gnu_efi],
3046 ['kmod'],
3047 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003048 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003049 ['blkid'],
3050 ['dbus'],
3051 ['glib'],
Yu Watanabe08540a92018-07-18 09:25:57 +09003052 ['nss-myhostname', conf.get('ENABLE_NSS_MYHOSTNAME') == 1],
3053 ['nss-mymachines', conf.get('ENABLE_NSS_MYMACHINES') == 1],
3054 ['nss-resolve', conf.get('ENABLE_NSS_RESOLVE') == 1],
3055 ['nss-systemd', conf.get('ENABLE_NSS_SYSTEMD') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003056 ['hwdb'],
3057 ['tpm'],
3058 ['man pages', want_man],
3059 ['html pages', want_html],
3060 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003061 ['SysV compat'],
3062 ['utmp'],
3063 ['ldconfig'],
3064 ['hibernate'],
3065 ['adm group', get_option('adm-group')],
3066 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003067 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003068 ['debug hashmap'],
3069 ['debug mmap cache'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003070 ['valgrind', conf.get('VALGRIND') == 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