blob: 5f30bd3854e44ed9f0aa664a99329e8d1e2c173a [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
2#
3# Copyright 2017 Zbigniew Jędrzejewski-Szmek
4#
5# systemd is free software; you can redistribute it and/or modify it
6# under the terms of the GNU Lesser General Public License as published by
7# the Free Software Foundation; either version 2.1 of the License, or
8# (at your option) any later version.
9#
10# systemd is distributed in the hope that it will be useful, but
11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# Lesser General Public License for more details.
14#
15# You should have received a copy of the GNU Lesser General Public License
16# along with systemd; If not, see <http://www.gnu.org/licenses/>.
17
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040018project('systemd', 'c',
Lennart Poettering69cd51d2018-01-25 14:18:14 +010019 version : '237',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040020 license : 'LGPLv2+',
21 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040022 'c_std=gnu99',
23 'prefix=/usr',
24 'sysconfdir=/etc',
25 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040026 ],
Zbigniew Jędrzejewski-Szmek86ea8d72017-11-20 08:08:43 +010027 meson_version : '>= 0.41',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040028 )
29
Lennart Poettering69cd51d2018-01-25 14:18:14 +010030libsystemd_version = '0.21.0'
31libudev_version = '1.6.9'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020032
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040033# We need the same data in three different formats, ugh!
34# Also, for hysterical reasons, we use different variable
35# names, sometimes. Not all variables are included in every
36# set. Ugh, ugh, ugh!
37conf = configuration_data()
38conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
39conf.set_quoted('PACKAGE_VERSION', meson.project_version())
40
41substs = configuration_data()
42substs.set('PACKAGE_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
43substs.set('PACKAGE_VERSION', meson.project_version())
44
45m4_defines = []
46
47#####################################################################
48
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040049# Try to install the git pre-commit hook
50git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
51if git_hook.returncode() == 0
52 message(git_hook.stdout().strip())
53endif
54
55#####################################################################
56
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010057if get_option('split-usr') == 'auto'
58 split_usr = run_command('test', '-L', '/bin').returncode() != 0
59else
60 split_usr = get_option('split-usr') == 'true'
61endif
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010062conf.set10('HAVE_SPLIT_USR', split_usr)
63
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010064rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010065# Unusual rootprefixdir values are used by some distros
66# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010067rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010068if rootprefixdir == ''
69 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010070endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040071
72sysvinit_path = get_option('sysvinit-path')
73sysvrcnd_path = get_option('sysvrcnd-path')
Max Harmathy54248242017-12-15 16:05:25 +010074have = sysvinit_path != '' and sysvrcnd_path != ''
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020075conf.set10('HAVE_SYSV_COMPAT', have,
76 description : 'SysV init scripts and rcN.d links are supported')
77m4_defines += have ? ['-DHAVE_SYSV_COMPAT'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040078
79# join_paths ignore the preceding arguments if an absolute component is
80# encountered, so this should canonicalize various paths when they are
81# absolute or relative.
82prefixdir = get_option('prefix')
83if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040084 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040085endif
86bindir = join_paths(prefixdir, get_option('bindir'))
87libdir = join_paths(prefixdir, get_option('libdir'))
88sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
89includedir = join_paths(prefixdir, get_option('includedir'))
90datadir = join_paths(prefixdir, get_option('datadir'))
91localstatedir = join_paths('/', get_option('localstatedir'))
92
93rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010094rootsbindir = join_paths(rootprefixdir, 'sbin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040095rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
96
97rootlibdir = get_option('rootlibdir')
98if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040099 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400100endif
101
102# Dirs of external packages
Michael Bieble17e5ba2017-04-13 10:30:56 -0400103pkgconfigdatadir = join_paths(datadir, 'pkgconfig')
104pkgconfiglibdir = join_paths(libdir, 'pkgconfig')
105polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
106polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
107polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
108varlogdir = join_paths(localstatedir, 'log')
109xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900110rpmmacrosdir = get_option('rpmmacrosdir')
111if rpmmacrosdir != 'no'
112 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
113endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200114modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400115
116# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400117pkgdatadir = join_paths(datadir, 'systemd')
118environmentdir = join_paths(prefixdir, 'lib/environment.d')
119pkgsysconfdir = join_paths(sysconfdir, 'systemd')
120userunitdir = join_paths(prefixdir, 'lib/systemd/user')
121userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
122tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
123sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
124sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
125binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
126modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
127networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
128pkgincludedir = join_paths(includedir, 'systemd')
129systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
130usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
131systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
132userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
133systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
134systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
135systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
136systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
137udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
138udevhomedir = udevlibexecdir
139udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
140udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
141catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
142kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
143factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400144bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
145testsdir = join_paths(prefixdir, 'lib/systemd/tests')
146systemdstatedir = join_paths(localstatedir, 'lib/systemd')
147catalogstatedir = join_paths(systemdstatedir, 'catalog')
148randomseeddir = join_paths(localstatedir, 'lib/systemd')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400149
tblume75aaade2018-02-01 22:46:15 +0100150docdir = get_option('docdir')
151if docdir == ''
152 docdir = join_paths(datadir, 'doc/systemd')
153endif
154
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400155dbuspolicydir = get_option('dbuspolicydir')
156if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400157 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400158endif
159
160dbussessionservicedir = get_option('dbussessionservicedir')
161if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400162 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400163endif
164
165dbussystemservicedir = get_option('dbussystemservicedir')
166if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400167 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400168endif
169
170pamlibdir = get_option('pamlibdir')
171if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400172 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400173endif
174
175pamconfdir = get_option('pamconfdir')
176if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400177 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400178endif
179
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100180memory_accounting_default = get_option('memory-accounting-default')
181
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400182conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400183conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400184conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
185conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
186conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400187conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
188conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400189conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400190conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
191conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400192conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
193conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
194conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
195conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100196conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100197conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400198conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
199conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
200conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
201conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
202conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100203conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400204conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400205conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
206conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400207conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
208conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
209conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
210conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
211conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
212conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400213conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
214conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400215conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400216conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400217conf.set_quoted('LIBDIR', libdir)
218conf.set_quoted('ROOTLIBDIR', rootlibdir)
219conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
220conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400221conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
222conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
223conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
224conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
225conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
226conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100227conf.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'true' : 'false')
228conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_ON_OFF', memory_accounting_default ? 'on' : 'off')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400229
230conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
231conf.set_quoted('ABS_SRC_DIR', meson.source_root())
232
233substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400234substs.set('exec_prefix', prefixdir)
235substs.set('libdir', libdir)
236substs.set('rootlibdir', rootlibdir)
237substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400238substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400239substs.set('bindir', bindir)
240substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400241substs.set('rootlibexecdir', rootlibexecdir)
242substs.set('systemunitdir', systemunitdir)
243substs.set('userunitdir', userunitdir)
244substs.set('systempresetdir', systempresetdir)
245substs.set('userpresetdir', userpresetdir)
246substs.set('udevhwdbdir', udevhwdbdir)
247substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400248substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400249substs.set('catalogdir', catalogdir)
250substs.set('tmpfilesdir', tmpfilesdir)
251substs.set('sysusersdir', sysusersdir)
252substs.set('sysctldir', sysctldir)
253substs.set('binfmtdir', binfmtdir)
254substs.set('modulesloaddir', modulesloaddir)
255substs.set('systemgeneratordir', systemgeneratordir)
256substs.set('usergeneratordir', usergeneratordir)
257substs.set('systemenvgeneratordir', systemenvgeneratordir)
258substs.set('userenvgeneratordir', userenvgeneratordir)
259substs.set('systemshutdowndir', systemshutdowndir)
260substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400261substs.set('VARLOGDIR', varlogdir)
262substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400263substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
264substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400265substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
266substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
267substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
268substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100269substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400270
271#####################################################################
272
273cc = meson.get_compiler('c')
274pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400275check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100276meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400277
Adam Duskett08318a22018-01-15 06:25:46 -0500278if get_option('tests') != 'false'
279 cxx = find_program('c++', required : false)
280 if cxx.found()
281 # Used only for tests
282 add_languages('cpp')
283 endif
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400284endif
285
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500286want_ossfuzz = get_option('oss-fuzz')
287want_libfuzzer = get_option('llvm-fuzz')
288fuzzer_build = want_ossfuzz or want_libfuzzer
289if want_ossfuzz and want_libfuzzer
290 error('only one of oss-fuzz and llvm-fuzz can be specified')
291endif
292if want_libfuzzer
293 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
294endif
295if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500296 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
297endif
298
Zbigniew Jędrzejewski-Szmek75cf1d62017-07-04 17:59:15 -0400299foreach arg : ['-Wextra',
Zbigniew Jędrzejewski-Szmek70160ce2017-10-03 12:11:49 +0200300 '-Werror=undef',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400301 '-Wlogical-op',
302 '-Wmissing-include-dirs',
303 '-Wold-style-definition',
304 '-Wpointer-arith',
305 '-Winit-self',
306 '-Wdeclaration-after-statement',
307 '-Wfloat-equal',
308 '-Wsuggest-attribute=noreturn',
309 '-Werror=missing-prototypes',
310 '-Werror=implicit-function-declaration',
311 '-Werror=missing-declarations',
312 '-Werror=return-type',
313 '-Werror=incompatible-pointer-types',
314 '-Werror=format=2',
315 '-Wstrict-prototypes',
316 '-Wredundant-decls',
317 '-Wmissing-noreturn',
Zbigniew Jędrzejewski-Szmek97279d82017-11-20 14:23:40 +0100318 '-Wimplicit-fallthrough=5',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400319 '-Wshadow',
320 '-Wendif-labels',
321 '-Wstrict-aliasing=2',
322 '-Wwrite-strings',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400323 '-Werror=overflow',
324 '-Wdate-time',
325 '-Wnested-externs',
326 '-ffast-math',
327 '-fno-common',
328 '-fdiagnostics-show-option',
329 '-fno-strict-aliasing',
330 '-fvisibility=hidden',
331 '-fstack-protector',
332 '-fstack-protector-strong',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400333 '--param=ssp-buffer-size=4',
334 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400335 if cc.has_argument(arg)
336 add_project_arguments(arg, language : 'c')
337 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400338endforeach
339
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500340# the oss-fuzz fuzzers are not built with -fPIE, so don't
341# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500342if not fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500343 if cc.has_argument('-fPIE')
344 add_project_arguments('-fPIE', language : 'c')
345 endif
346endif
347
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400348# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
349# arguments, just emits a warnings. So test for the "positive" version instead.
350foreach arg : ['unused-parameter',
351 'missing-field-initializers',
352 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300353 'format-signedness',
354 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
355 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400356 if cc.has_argument('-W' + arg)
357 add_project_arguments('-Wno-' + arg, language : 'c')
358 endif
359endforeach
360
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800361if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400362 #include <time.h>
363 #include <inttypes.h>
364 typedef uint64_t usec_t;
365 usec_t now(clockid_t clock);
366 int main(void) {
367 struct timespec now;
368 return 0;
369 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800370''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400371 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400372endif
373
374if cc.get_id() == 'clang'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400375 foreach arg : ['-Wno-typedef-redefinition',
376 '-Wno-gnu-variable-sized-type-not-at-end',
377 ]
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400378 if cc.has_argument(arg,
379 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400380 add_project_arguments(arg, language : 'c')
381 endif
382 endforeach
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400383endif
384
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400385link_test_c = files('tools/meson-link-test.c')
386
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400387# --as-needed and --no-undefined are provided by meson by default,
388# run mesonconf to see what is enabled
389foreach arg : ['-Wl,-z,relro',
390 '-Wl,-z,now',
391 '-pie',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400392 ]
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400393
394 have = run_command(check_compilation_sh,
395 cc.cmd_array(), '-x', 'c', arg,
396 '-include', link_test_c).returncode() == 0
397 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500398 if have and (arg != '-pie' or not fuzzer_build)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400399 add_project_link_arguments(arg, language : 'c')
400 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400401endforeach
402
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100403# Check if various sanitizers are supported
404sanitizers = []
405foreach arg : ['address']
406
407 have = run_command(check_compilation_sh,
408 cc.cmd_array(), '-x', 'c',
409 '-fsanitize=@0@'.format(arg),
410 '-include', link_test_c).returncode() == 0
411 message('@0@ sanitizer supported: @1@'.format(arg, have ? 'yes' : 'no'))
412 if have
413 sanitizers += arg
414 endif
415endforeach
416
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400417if get_option('buildtype') != 'debug'
418 foreach arg : ['-ffunction-sections',
419 '-fdata-sections']
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400420 if cc.has_argument(arg,
421 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400422 add_project_arguments(arg, language : 'c')
423 endif
424 endforeach
425
426 foreach arg : ['-Wl,--gc-sections']
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400427 have = run_command(check_compilation_sh,
428 cc.cmd_array(), '-x', 'c', arg,
429 '-include', link_test_c).returncode() == 0
430 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
431 if have
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400432 add_project_link_arguments(arg, language : 'c')
433 endif
434 endforeach
435endif
436
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400437cpp = ' '.join(cc.cmd_array()) + ' -E'
438
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400439#####################################################################
440# compilation result tests
441
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400442conf.set('_GNU_SOURCE', true)
443conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400444
445conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
446conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
447conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
448conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
449conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
450conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
451conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
452
453decl_headers = '''
454#include <uchar.h>
455#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000456#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100457#include <linux/stat.h>
458#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400459'''
460# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
461
462foreach decl : ['char16_t',
463 'char32_t',
464 'key_serial_t',
465 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000466 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100467 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400468 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400469
470 # We get -1 if the size cannot be determined
471 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200472 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400473endforeach
474
475foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
476 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
477 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
478 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530479 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400480 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
481 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
482 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
483 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
484 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530485 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400486 # if_tunnel.h is buggy and cannot be included on its own
487 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
488 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
489 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
490 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
491 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
492 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
493 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530494 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400495 ['NDA_IFINDEX', 'linux/neighbour.h'],
496 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000497 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400498 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530499 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400500 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400501 prefix = decl.length() > 2 ? decl[2] : ''
502 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200503 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400504endforeach
505
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400506foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200507 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400508endforeach
509
510foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100511 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100512 ['gettid', '''#include <sys/types.h>
513 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100514 ['pivot_root', '''#include <stdlib.h>
515 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100516 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400517 #include <sys/stat.h>
518 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100519 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100520 ['renameat2', '''#include <stdio.h>
521 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400522 ['kcmp', '''#include <linux/kcmp.h>'''],
523 ['keyctl', '''#include <sys/types.h>
524 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100525 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400526 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200527 ['bpf', '''#include <sys/syscall.h>
528 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100529 ['statx', '''#include <sys/types.h>
530 #include <sys/stat.h>
531 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100532 ['explicit_bzero' , '''#include <string.h>'''],
533 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400534]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400535
Lennart Poettering85db59b2017-12-25 12:01:14 +0100536 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200537 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400538endforeach
539
Lennart Poettering85db59b2017-12-25 12:01:14 +0100540if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200541 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200542 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400543else
544 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200545 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200546 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400547endif
548
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400549#####################################################################
550
551sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400552awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400553m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400554stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400555git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100556env = find_program('env')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400557
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400558meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400559mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400560test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
561splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400562
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400563# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
564# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500565progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400566 ['quotacheck', '/usr/sbin/quotacheck' ],
567 ['kill', '/usr/bin/kill' ],
568 ['kmod', '/usr/bin/kmod' ],
569 ['kexec', '/usr/sbin/kexec' ],
570 ['sulogin', '/usr/sbin/sulogin' ],
571 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
572 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
573 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
574 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
575 ]
576foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400577 path = get_option(prog[0] + '-path')
578 if path != ''
579 message('Using @1@ for @0@'.format(prog[0], path))
580 else
581 exe = find_program(prog[0],
582 '/usr/sbin/' + prog[0],
583 '/sbin/' + prog[0],
584 required: false)
585 path = exe.found() ? exe.path() : prog[1]
586 endif
587 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
588 conf.set_quoted(name, path)
589 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400590endforeach
591
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500592conf.set_quoted('TELINIT', get_option('telinit-path'))
593
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400594if run_command('ln', '--relative', '--help').returncode() != 0
595 error('ln does not support --relative')
596endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400597
598############################################################
599
600gperf = find_program('gperf')
601
602gperf_test_format = '''
603#include <string.h>
604const char * in_word_set(const char *, @0@);
605@1@
606'''
607gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
608gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
609gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
610if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400611 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400612else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400613 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
614 if cc.compiles(gperf_test)
615 gperf_len_type = 'unsigned'
616 else
617 error('unable to determine gperf len type')
618 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400619endif
620message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400621conf.set('GPERF_LEN_TYPE', gperf_len_type,
622 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400623
624############################################################
625
626if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400627 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400628endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100629foreach header : ['crypt.h',
630 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400631 'linux/memfd.h',
632 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200633 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400634 'valgrind/memcheck.h',
635 'valgrind/valgrind.h',
636 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400637
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200638 conf.set10('HAVE_' + header.underscorify().to_upper(),
639 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400640endforeach
641
642############################################################
643
644conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400645conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
646gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400647
648default_hierarchy = get_option('default-hierarchy')
649conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
650 description : 'default cgroup hierarchy as string')
651if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400652 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400653elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400654 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400655else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400656 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400657endif
658
659time_epoch = get_option('time-epoch')
660if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400661 NEWS = files('NEWS')
662 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400663endif
664time_epoch = time_epoch.to_int()
665conf.set('TIME_EPOCH', time_epoch)
666
667system_uid_max = get_option('system-uid-max')
668if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400669 system_uid_max = run_command(
670 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800671 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
672 '/etc/login.defs').stdout().strip()
673 if system_uid_max == ''
674 system_uid_max = '999'
675 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400676endif
677system_uid_max = system_uid_max.to_int()
678conf.set('SYSTEM_UID_MAX', system_uid_max)
679substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400680message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400682system_gid_max = get_option('system-gid-max')
683if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400684 system_gid_max = run_command(
685 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800686 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
687 '/etc/login.defs').stdout().strip()
688 if system_gid_max == ''
689 system_gid_max = '999'
690 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400691endif
692system_gid_max = system_gid_max.to_int()
693conf.set('SYSTEM_GID_MAX', system_gid_max)
694substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400695message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400696
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100697dynamic_uid_min = get_option('dynamic-uid-min').to_int()
698dynamic_uid_max = get_option('dynamic-uid-max').to_int()
699conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
700conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
701substs.set('dynamicuidmin', dynamic_uid_min)
702substs.set('dynamicuidmax', dynamic_uid_max)
703
704container_uid_base_min = get_option('container-uid-base-min').to_int()
705container_uid_base_max = get_option('container-uid-base-max').to_int()
706conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
707conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
708substs.set('containeruidbasemin', container_uid_base_min)
709substs.set('containeruidbasemax', container_uid_base_max)
710
Lennart Poetteringafde4572017-12-05 11:00:24 +0100711nobody_user = get_option('nobody-user')
712nobody_group = get_option('nobody-group')
713
714getent_result = run_command('getent', 'passwd', '65534')
715if getent_result.returncode() == 0
716 name = getent_result.stdout().split(':')[0]
717 if name != nobody_user
718 message('WARNING:\n' +
719 ' 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) +
720 ' Your build will result in an user table setup that is incompatible with the local system.')
721 endif
722endif
723id_result = run_command('id', '-u', nobody_user)
724if id_result.returncode() == 0
725 id = id_result.stdout().to_int()
726 if id != 65534
727 message('WARNING:\n' +
728 ' 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) +
729 ' Your build will result in an user table setup that is incompatible with the local system.')
730 endif
731endif
732
733getent_result = run_command('getent', 'group', '65534')
734if getent_result.returncode() == 0
735 name = getent_result.stdout().split(':')[0]
736 if name != nobody_group
737 message('WARNING:\n' +
738 ' 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) +
739 ' Your build will result in an group table setup that is incompatible with the local system.')
740 endif
741endif
742id_result = run_command('id', '-g', nobody_group)
743if id_result.returncode() == 0
744 id = id_result.stdout().to_int()
745 if id != 65534
746 message('WARNING:\n' +
747 ' 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) +
748 ' Your build will result in an group table setup that is incompatible with the local system.')
749 endif
750endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900751if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
752 message('WARNING:\n' +
753 ' The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
754 ' Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
755endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100756
757conf.set_quoted('NOBODY_USER_NAME', nobody_user)
758conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900759substs.set('NOBODY_USER_NAME', nobody_user)
760substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100761
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400762tty_gid = get_option('tty-gid')
763conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400764substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400765
Ikey Doherty84786b82017-12-03 12:28:23 +0000766# Ensure provided GID argument is numeric, otherwise fallback to default assignment
767if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900768 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000769else
Yu Watanabed6806872017-12-05 14:01:39 +0900770 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000771endif
772substs.set('USERS_GID', users_gid)
773
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400774if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400775 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400776endif
777
778if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400779 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400780endif
781
782substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700783substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400784
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400785kill_user_processes = get_option('default-kill-user-processes')
786conf.set10('KILL_USER_PROCESSES', kill_user_processes)
787substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400788
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400789dns_servers = get_option('dns-servers')
790conf.set_quoted('DNS_SERVERS', dns_servers)
791substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400792
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400793ntp_servers = get_option('ntp-servers')
794conf.set_quoted('NTP_SERVERS', ntp_servers)
795substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400796
797conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
798
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400799substs.set('SUSHELL', get_option('debug-shell'))
800substs.set('DEBUGTTY', get_option('debug-tty'))
801
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400802debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200803enable_debug_hashmap = false
804enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400805if debug != ''
806 foreach name : debug.split(',')
807 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200808 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400809 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200810 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400811 else
812 message('unknown debug option "@0@", ignoring'.format(name))
813 endif
814 endforeach
815endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200816conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
817conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400818
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400819#####################################################################
820
821threads = dependency('threads')
822librt = cc.find_library('rt')
823libm = cc.find_library('m')
824libdl = cc.find_library('dl')
825libcrypt = cc.find_library('crypt')
826
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400827libcap = dependency('libcap', required : false)
828if not libcap.found()
829 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
830 libcap = cc.find_library('cap')
831endif
832
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400833libmount = dependency('mount',
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500834 version : '>= 2.30',
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500835 required : not fuzzer_build)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400836
837want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500838if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400839 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400840 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400841 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200842 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400843else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200844 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400845 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400846endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200847conf.set10('HAVE_SECCOMP', have)
848m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400849
850want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500851if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400852 libselinux = dependency('libselinux',
853 version : '>= 2.1.9',
854 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200855 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400856else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200857 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400858 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400859endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200860conf.set10('HAVE_SELINUX', have)
861m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400862
863want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500864if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400865 libapparmor = dependency('libapparmor',
866 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200867 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400868else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200869 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400870 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400871endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200872conf.set10('HAVE_APPARMOR', have)
873m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400874
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400875smack_run_label = get_option('smack-run-label')
876if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400877 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
878 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400879endif
880
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400881want_polkit = get_option('polkit')
882install_polkit = false
883install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500884if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400885 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400886
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400887 libpolkit = dependency('polkit-gobject-1',
888 required : false)
889 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
890 message('Old polkit detected, will install pkla files')
891 install_polkit_pkla = true
892 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400893endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200894conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400895
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400896want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500897if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400898 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400900else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200901 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400902 libacl = []
903endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200904conf.set10('HAVE_ACL', have)
905m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400906
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400907want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500908if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400909 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200910 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400911else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200912 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400913 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400914endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200915conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400916
917want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500918if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400919 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200920 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400921else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400923 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400924endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200925conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400926
927want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500928if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400929 libkmod = dependency('libkmod',
930 version : '>= 15',
931 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200932 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400933else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200934 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400935 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400936endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200937conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400938
939want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500940if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400941 libpam = cc.find_library('pam', required : want_pam == 'true')
942 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200943 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400944else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200945 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400946 libpam = []
947 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400948endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200949conf.set10('HAVE_PAM', have)
950m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400951
952want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500953if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400954 libmicrohttpd = dependency('libmicrohttpd',
955 version : '>= 0.9.33',
956 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200957 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400958else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200959 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400960 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400961endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200962conf.set10('HAVE_MICROHTTPD', have)
963m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400964
965want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500966if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400967 libcryptsetup = dependency('libcryptsetup',
968 version : '>= 1.6.0',
969 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200970 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400971else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200972 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400973 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400974endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200975conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400976
977want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500978if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400979 libcurl = dependency('libcurl',
980 version : '>= 7.32.0',
981 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200982 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400983else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200984 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400985 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400986endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200987conf.set10('HAVE_LIBCURL', have)
988m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400989
990want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400991want_libidn2 = get_option('libidn2')
992if want_libidn == 'true' and want_libidn2 == 'true'
993 error('libidn and libidn2 cannot be requested simultaneously')
994endif
995
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500996if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400997 libidn = dependency('libidn',
998 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200999 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001000else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001001 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001002 libidn = []
1003endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001004conf.set10('HAVE_LIBIDN', have)
1005m4_defines += have ? ['-DHAVE_LIBIDN'] : []
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001006if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001007 # libidn is used for both libidn and libidn2 objects
1008 libidn = dependency('libidn2',
1009 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001010 have = libidn.found()
1011else
1012 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001013endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001014conf.set10('HAVE_LIBIDN2', have)
1015m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001016
1017want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001018if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001019 libiptc = dependency('libiptc',
1020 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001021 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001022else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001023 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001024 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001025endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001026conf.set10('HAVE_LIBIPTC', have)
1027m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001028
1029want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001030if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001031 libqrencode = dependency('libqrencode',
1032 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001033 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001034else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001035 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001036 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001037endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001038conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001039
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001040want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001041if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001042 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1043 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001044 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001045else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001046 have = false
1047endif
1048if not have
1049 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001050 libgcrypt = []
1051 libgpg_error = []
1052endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001053conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001054
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001055want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001056if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001057 libgnutls = dependency('gnutls',
1058 version : '>= 3.1.4',
1059 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001060 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001061else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001062 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001063 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001064endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001065conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001066
1067want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001068if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001069 libdw = dependency('libdw',
1070 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001071 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001072else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001073 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001074 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001075endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001076conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001077
1078want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001079if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001080 libz = dependency('zlib',
1081 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001082 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001083else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001084 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001085 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001086endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001087conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001088
1089want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001090if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001091 libbzip2 = cc.find_library('bz2',
1092 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001093 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001094else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001095 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001096 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001097endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001098conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001099
1100want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001101if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001102 libxz = dependency('liblzma',
1103 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001104 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001105else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001106 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001107 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001108endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001109conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001110
1111want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001112if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001113 liblz4 = dependency('liblz4',
1114 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001115 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001116else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001117 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001118 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001119endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001120conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001121
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001122want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001123if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001124 libxkbcommon = dependency('xkbcommon',
1125 version : '>= 0.3.0',
1126 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001127 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001128else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001129 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001130 libxkbcommon = []
1131endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001132conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001133
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001134want_pcre2 = get_option('pcre2')
1135if want_pcre2 != 'false'
1136 libpcre2 = dependency('libpcre2-8',
1137 required : want_pcre2 == 'true')
1138 have = libpcre2.found()
1139else
1140 have = false
1141 libpcre2 = []
1142endif
1143conf.set10('HAVE_PCRE2', have)
1144
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001145want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001146if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001147 libglib = dependency('glib-2.0',
1148 version : '>= 2.22.0',
1149 required : want_glib == 'true')
1150 libgobject = dependency('gobject-2.0',
1151 version : '>= 2.22.0',
1152 required : want_glib == 'true')
1153 libgio = dependency('gio-2.0',
1154 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001155 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001156else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001157 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001158 libglib = []
1159 libgobject = []
1160 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001161endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001162conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001163
1164want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001165if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001166 libdbus = dependency('dbus-1',
1167 version : '>= 1.3.2',
1168 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001169 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001170else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001171 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001172 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001173endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001174conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001175
Yu Watanabe42303dc2017-06-18 05:22:32 +09001176default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001177if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001178 default_dnssec = 'no'
1179endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001180if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001181 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1182 default_dnssec = 'no'
1183endif
1184conf.set('DEFAULT_DNSSEC_MODE',
1185 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1186substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1187
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001188want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001189if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001190 have = (conf.get('HAVE_LIBCURL') == 1 and
1191 conf.get('HAVE_ZLIB') == 1 and
1192 conf.get('HAVE_BZIP2') == 1 and
1193 conf.get('HAVE_XZ') == 1 and
1194 conf.get('HAVE_GCRYPT') == 1)
1195 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001196 error('importd support was requested, but dependencies are not available')
1197 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001198else
1199 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001200endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001201conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001202
1203want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001204if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001205 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1206 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001207 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1208 # it's possible to build one without the other. Complain only if
1209 # support was explictly requested. The auxiliary files like sysusers
1210 # config should be installed when any of the programs are built.
1211 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1212 error('remote support was requested, but dependencies are not available')
1213 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001214 have = have_deps[0] or have_deps[1]
1215else
1216 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001217endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001218conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001219
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001220foreach term : ['utmp',
1221 'hibernate',
1222 'environment-d',
1223 'binfmt',
1224 'coredump',
1225 'resolve',
1226 'logind',
1227 'hostnamed',
1228 'localed',
1229 'machined',
1230 'networkd',
1231 'timedated',
1232 'timesyncd',
1233 'myhostname',
1234 'firstboot',
1235 'randomseed',
1236 'backlight',
1237 'vconsole',
1238 'quotacheck',
1239 'sysusers',
1240 'tmpfiles',
1241 'hwdb',
1242 'rfkill',
1243 'ldconfig',
1244 'efi',
1245 'tpm',
1246 'ima',
1247 'smack',
1248 'gshadow',
1249 'idn',
1250 'nss-systemd']
1251 have = get_option(term)
1252 name = 'ENABLE_' + term.underscorify().to_upper()
1253 conf.set10(name, have)
1254 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001255endforeach
1256
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001257want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001258install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001259slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001260tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001261fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001262
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001263conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001264
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001265#####################################################################
1266
1267if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001268 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001269
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001270 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001271 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001272 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001273 elif efi_arch == 'x86_64'
1274 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001275 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001276 elif efi_arch == 'arm'
1277 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001278 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001279 elif efi_arch == 'aarch64'
1280 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001281 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001282 else
1283 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001284 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001285 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001286
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001287 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001288 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001289
1290 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001291else
1292 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001293endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001294conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001295
1296#####################################################################
1297
1298config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001299 output : 'config.h',
1300 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001301
1302includes = include_directories('src/basic',
1303 'src/shared',
1304 'src/systemd',
1305 'src/journal',
1306 'src/resolve',
1307 'src/timesync',
1308 'src/login',
1309 'src/udev',
1310 'src/libudev',
1311 'src/core',
1312 'src/libsystemd/sd-bus',
1313 'src/libsystemd/sd-device',
1314 'src/libsystemd/sd-hwdb',
1315 'src/libsystemd/sd-id128',
1316 'src/libsystemd/sd-netlink',
1317 'src/libsystemd/sd-network',
1318 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001319 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001320
1321add_project_arguments('-include', 'config.h', language : 'c')
1322
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001323subdir('po')
1324subdir('catalog')
1325subdir('src/systemd')
1326subdir('src/basic')
1327subdir('src/libsystemd')
1328subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001329subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001330subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001331
1332libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001333 'journal-core',
1334 libjournal_core_sources,
1335 journald_gperf_c,
1336 include_directories : includes,
1337 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001338
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001339libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001340libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001341 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001342 '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 +02001343 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001344 include_directories : includes,
1345 link_args : ['-shared',
1346 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001347 link_with : [libbasic,
1348 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001349 link_whole : [libsystemd_static,
1350 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001351 dependencies : [threads,
1352 librt,
1353 libxz,
1354 liblz4],
1355 link_depends : libsystemd_sym,
1356 install : true,
1357 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001358
1359############################################################
1360
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001361# binaries that have --help and are intended for use by humans,
1362# usually, but not always, installed in /bin.
1363public_programs = []
1364
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001365subdir('src/libudev')
1366subdir('src/shared')
1367subdir('src/core')
1368subdir('src/udev')
1369subdir('src/network')
1370
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001371subdir('src/analyze')
1372subdir('src/journal-remote')
1373subdir('src/coredump')
1374subdir('src/hostname')
1375subdir('src/import')
1376subdir('src/kernel-install')
1377subdir('src/locale')
1378subdir('src/machine')
1379subdir('src/nspawn')
1380subdir('src/resolve')
1381subdir('src/timedate')
1382subdir('src/timesync')
1383subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001384subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001385
1386subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001387subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001388subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001389subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001390
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001391############################################################
1392
1393# only static linking apart from libdl, to make sure that the
1394# module is linked to all libraries that it uses.
1395test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001396 'test-dlopen',
1397 test_dlopen_c,
1398 include_directories : includes,
1399 link_with : [libbasic],
1400 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001401
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001402foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001403 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001404 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001405 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001406
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001407 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001408 if condition
1409 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001410
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001411 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1412 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001413
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001414 nss = shared_library(
1415 'nss_' + module,
1416 'src/nss-@0@/nss-@0@.c'.format(module),
1417 version : '2',
1418 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001419 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1420 link_args : ['-Wl,-z,nodelete',
1421 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001422 '-Wl,--version-script=' + version_script_arg,
1423 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001424 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001425 libbasic],
1426 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001427 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001428 link_depends : sym,
1429 install : true,
1430 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001431
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001432 # We cannot use shared_module because it does not support version suffix.
1433 # Unfortunately shared_library insists on creating the symlink…
1434 meson.add_install_script('sh', '-c',
1435 'rm $DESTDIR@0@/libnss_@1@.so'
1436 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001437
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001438 test('dlopen-nss_' + module,
1439 test_dlopen,
1440 args : [nss.full_path()]) # path to dlopen must include a slash
1441 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001442endforeach
1443
1444############################################################
1445
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001446executable('systemd',
1447 systemd_sources,
1448 include_directories : includes,
1449 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001450 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001451 dependencies : [threads,
1452 librt,
1453 libseccomp,
1454 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001455 libmount,
1456 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001457 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001458 install : true,
1459 install_dir : rootlibexecdir)
1460
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001461meson.add_install_script(meson_make_symlink,
1462 join_paths(rootlibexecdir, 'systemd'),
1463 join_paths(rootsbindir, 'init'))
1464
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001465exe = executable('systemd-analyze',
1466 systemd_analyze_sources,
1467 include_directories : includes,
1468 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001469 libshared],
1470 dependencies : [threads,
1471 librt,
1472 libseccomp,
1473 libselinux,
1474 libmount,
1475 libblkid],
1476 install_rpath : rootlibexecdir,
1477 install : true)
1478public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001479
1480executable('systemd-journald',
1481 systemd_journald_sources,
1482 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001483 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001484 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001485 dependencies : [threads,
1486 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001487 liblz4,
1488 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001489 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001490 install : true,
1491 install_dir : rootlibexecdir)
1492
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001493exe = executable('systemd-cat',
1494 systemd_cat_sources,
1495 include_directories : includes,
1496 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001497 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001498 dependencies : [threads],
1499 install_rpath : rootlibexecdir,
1500 install : true)
1501public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001502
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001503exe = executable('journalctl',
1504 journalctl_sources,
1505 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001506 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001507 dependencies : [threads,
1508 libqrencode,
1509 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001510 liblz4,
1511 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001512 install_rpath : rootlibexecdir,
1513 install : true,
1514 install_dir : rootbindir)
1515public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001516
1517executable('systemd-getty-generator',
1518 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001519 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001520 link_with : [libshared],
1521 install_rpath : rootlibexecdir,
1522 install : true,
1523 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001524
1525executable('systemd-debug-generator',
1526 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001527 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001528 link_with : [libshared],
1529 install_rpath : rootlibexecdir,
1530 install : true,
1531 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001532
1533executable('systemd-fstab-generator',
1534 'src/fstab-generator/fstab-generator.c',
1535 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001536 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001537 link_with : [libshared],
1538 install_rpath : rootlibexecdir,
1539 install : true,
1540 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001541
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001542if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001543 executable('30-systemd-environment-d-generator',
1544 'src/environment-d-generator/environment-d-generator.c',
1545 include_directories : includes,
1546 link_with : [libshared],
1547 install_rpath : rootlibexecdir,
1548 install : true,
1549 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001550
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001551 meson.add_install_script(meson_make_symlink,
1552 join_paths(sysconfdir, 'environment'),
1553 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001554endif
1555
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001556if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001557 executable('systemd-hibernate-resume-generator',
1558 'src/hibernate-resume/hibernate-resume-generator.c',
1559 include_directories : includes,
1560 link_with : [libshared],
1561 install_rpath : rootlibexecdir,
1562 install : true,
1563 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001564
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001565 executable('systemd-hibernate-resume',
1566 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001567 include_directories : includes,
1568 link_with : [libshared],
1569 install_rpath : rootlibexecdir,
1570 install : true,
1571 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001572endif
1573
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001574if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001575 executable('systemd-gpt-auto-generator',
1576 'src/gpt-auto-generator/gpt-auto-generator.c',
1577 'src/basic/blkid-util.h',
1578 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001579 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001580 dependencies : libblkid,
1581 install_rpath : rootlibexecdir,
1582 install : true,
1583 install_dir : systemgeneratordir)
1584
1585 exe = executable('systemd-dissect',
1586 'src/dissect/dissect.c',
1587 include_directories : includes,
1588 link_with : [libshared],
1589 install_rpath : rootlibexecdir,
1590 install : true,
1591 install_dir : rootlibexecdir)
1592 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001593endif
1594
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001595if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001596 executable('systemd-resolved',
1597 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001598 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001599 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001600 libbasic_gcrypt,
1601 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001602 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001603 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001604 libm,
1605 libidn],
1606 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001607 install : true,
1608 install_dir : rootlibexecdir)
1609
1610 exe = executable('systemd-resolve',
1611 systemd_resolve_sources,
1612 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001613 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001614 libbasic_gcrypt,
1615 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001616 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001617 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001618 libm,
1619 libidn],
1620 install_rpath : rootlibexecdir,
1621 install : true)
1622 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001623endif
1624
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001625if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001626 executable('systemd-logind',
1627 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001628 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001629 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001630 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001631 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001632 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001633 install_rpath : rootlibexecdir,
1634 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001635 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001636
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001637 exe = executable('loginctl',
1638 loginctl_sources,
1639 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001640 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001641 dependencies : [threads,
1642 liblz4,
1643 libxz],
1644 install_rpath : rootlibexecdir,
1645 install : true,
1646 install_dir : rootbindir)
1647 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001648
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001649 exe = executable('systemd-inhibit',
1650 'src/login/inhibit.c',
1651 include_directories : includes,
1652 link_with : [libshared],
1653 install_rpath : rootlibexecdir,
1654 install : true,
1655 install_dir : rootbindir)
1656 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001657
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001658 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001659 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1660 pam_systemd = shared_library(
1661 'pam_systemd',
1662 pam_systemd_c,
1663 name_prefix : '',
1664 include_directories : includes,
1665 link_args : ['-shared',
1666 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001667 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001668 libshared_static],
1669 dependencies : [threads,
1670 libpam,
1671 libpam_misc],
1672 link_depends : pam_systemd_sym,
1673 install : true,
1674 install_dir : pamlibdir)
1675
1676 test('dlopen-pam_systemd',
1677 test_dlopen,
1678 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1679 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001680endif
1681
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001682if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001683 executable('systemd-user-sessions',
1684 'src/user-sessions/user-sessions.c',
1685 include_directories : includes,
1686 link_with : [libshared],
1687 install_rpath : rootlibexecdir,
1688 install : true,
1689 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001690endif
1691
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001692if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001693 exe = executable('bootctl',
1694 'src/boot/bootctl.c',
1695 include_directories : includes,
1696 link_with : [libshared],
1697 dependencies : [libblkid],
1698 install_rpath : rootlibexecdir,
1699 install : true)
1700 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001701endif
1702
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001703exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1704 include_directories : includes,
1705 link_with : [libshared],
1706 dependencies : [threads],
1707 install_rpath : rootlibexecdir,
1708 install : true)
1709public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001710
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001711exe = executable('systemctl', 'src/systemctl/systemctl.c',
1712 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001713 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001714 dependencies : [threads,
1715 libcap,
1716 libselinux,
1717 libxz,
1718 liblz4],
1719 install_rpath : rootlibexecdir,
1720 install : true,
1721 install_dir : rootbindir)
1722public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001723
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001724foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1725 meson.add_install_script(meson_make_symlink,
1726 join_paths(rootbindir, 'systemctl'),
1727 join_paths(rootsbindir, alias))
1728endforeach
1729
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001730if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001731 executable('systemd-backlight',
1732 'src/backlight/backlight.c',
1733 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001734 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001735 install_rpath : rootlibexecdir,
1736 install : true,
1737 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001738endif
1739
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001740if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001741 executable('systemd-rfkill',
1742 'src/rfkill/rfkill.c',
1743 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001744 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001745 install_rpath : rootlibexecdir,
1746 install : true,
1747 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001748endif
1749
1750executable('systemd-system-update-generator',
1751 'src/system-update-generator/system-update-generator.c',
1752 include_directories : includes,
1753 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001754 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001755 install : true,
1756 install_dir : systemgeneratordir)
1757
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001758if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001759 executable('systemd-cryptsetup',
1760 'src/cryptsetup/cryptsetup.c',
1761 include_directories : includes,
1762 link_with : [libshared],
1763 dependencies : [libcryptsetup],
1764 install_rpath : rootlibexecdir,
1765 install : true,
1766 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001767
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001768 executable('systemd-cryptsetup-generator',
1769 'src/cryptsetup/cryptsetup-generator.c',
1770 include_directories : includes,
1771 link_with : [libshared],
1772 dependencies : [libcryptsetup],
1773 install_rpath : rootlibexecdir,
1774 install : true,
1775 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001776
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001777 executable('systemd-veritysetup',
1778 'src/veritysetup/veritysetup.c',
1779 include_directories : includes,
1780 link_with : [libshared],
1781 dependencies : [libcryptsetup],
1782 install_rpath : rootlibexecdir,
1783 install : true,
1784 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001785
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001786 executable('systemd-veritysetup-generator',
1787 'src/veritysetup/veritysetup-generator.c',
1788 include_directories : includes,
1789 link_with : [libshared],
1790 dependencies : [libcryptsetup],
1791 install_rpath : rootlibexecdir,
1792 install : true,
1793 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001794endif
1795
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001796if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001797 executable('systemd-sysv-generator',
1798 'src/sysv-generator/sysv-generator.c',
1799 include_directories : includes,
1800 link_with : [libshared],
1801 install_rpath : rootlibexecdir,
1802 install : true,
1803 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001804
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001805 executable('systemd-rc-local-generator',
1806 'src/rc-local-generator/rc-local-generator.c',
1807 include_directories : includes,
1808 link_with : [libshared],
1809 install_rpath : rootlibexecdir,
1810 install : true,
1811 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001812endif
1813
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001814if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001815 executable('systemd-hostnamed',
1816 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001817 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001818 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001819 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001820 install : true,
1821 install_dir : rootlibexecdir)
1822
1823 exe = executable('hostnamectl',
1824 'src/hostname/hostnamectl.c',
1825 include_directories : includes,
1826 link_with : [libshared],
1827 install_rpath : rootlibexecdir,
1828 install : true)
1829 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001830endif
1831
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001832if conf.get('ENABLE_LOCALED') == 1
1833 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001834 # logind will load libxkbcommon.so dynamically on its own
1835 deps = [libdl]
1836 else
1837 deps = []
1838 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001839
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001840 executable('systemd-localed',
1841 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001842 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001843 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001844 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001845 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001846 install : true,
1847 install_dir : rootlibexecdir)
1848
1849 exe = executable('localectl',
1850 localectl_sources,
1851 include_directories : includes,
1852 link_with : [libshared],
1853 install_rpath : rootlibexecdir,
1854 install : true)
1855 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001856endif
1857
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001858if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001859 executable('systemd-timedated',
1860 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001861 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001862 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001863 install_rpath : rootlibexecdir,
1864 install : true,
1865 install_dir : rootlibexecdir)
1866
1867 exe = executable('timedatectl',
1868 'src/timedate/timedatectl.c',
1869 include_directories : includes,
1870 install_rpath : rootlibexecdir,
1871 link_with : [libshared],
1872 install : true)
1873 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001874endif
1875
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001876if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001877 executable('systemd-timesyncd',
1878 systemd_timesyncd_sources,
1879 include_directories : includes,
1880 link_with : [libshared],
1881 dependencies : [threads,
1882 libm],
1883 install_rpath : rootlibexecdir,
1884 install : true,
1885 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001886endif
1887
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001888if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001889 executable('systemd-machined',
1890 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001891 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001892 link_with : [libmachine_core,
1893 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001894 install_rpath : rootlibexecdir,
1895 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001896 install_dir : rootlibexecdir)
1897
1898 exe = executable('machinectl',
1899 'src/machine/machinectl.c',
1900 include_directories : includes,
1901 link_with : [libshared],
1902 dependencies : [threads,
1903 libxz,
1904 liblz4],
1905 install_rpath : rootlibexecdir,
1906 install : true,
1907 install_dir : rootbindir)
1908 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001909endif
1910
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001911if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001912 executable('systemd-importd',
1913 systemd_importd_sources,
1914 include_directories : includes,
1915 link_with : [libshared],
1916 dependencies : [threads],
1917 install_rpath : rootlibexecdir,
1918 install : true,
1919 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001920
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001921 systemd_pull = executable('systemd-pull',
1922 systemd_pull_sources,
1923 include_directories : includes,
1924 link_with : [libshared],
1925 dependencies : [libcurl,
1926 libz,
1927 libbzip2,
1928 libxz,
1929 libgcrypt],
1930 install_rpath : rootlibexecdir,
1931 install : true,
1932 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001933
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001934 systemd_import = executable('systemd-import',
1935 systemd_import_sources,
1936 include_directories : includes,
1937 link_with : [libshared],
1938 dependencies : [libcurl,
1939 libz,
1940 libbzip2,
1941 libxz],
1942 install_rpath : rootlibexecdir,
1943 install : true,
1944 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001945
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001946 systemd_export = executable('systemd-export',
1947 systemd_export_sources,
1948 include_directories : includes,
1949 link_with : [libshared],
1950 dependencies : [libcurl,
1951 libz,
1952 libbzip2,
1953 libxz],
1954 install_rpath : rootlibexecdir,
1955 install : true,
1956 install_dir : rootlibexecdir)
1957 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001958endif
1959
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001960if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001961 exe = executable('systemd-journal-upload',
1962 systemd_journal_upload_sources,
1963 include_directories : includes,
1964 link_with : [libshared],
1965 dependencies : [threads,
1966 libcurl,
1967 libgnutls,
1968 libxz,
1969 liblz4],
1970 install_rpath : rootlibexecdir,
1971 install : true,
1972 install_dir : rootlibexecdir)
1973 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_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001977 s_j_remote = executable('systemd-journal-remote',
1978 systemd_journal_remote_sources,
1979 include_directories : includes,
1980 link_with : [libshared],
1981 dependencies : [threads,
1982 libmicrohttpd,
1983 libgnutls,
1984 libxz,
1985 liblz4],
1986 install_rpath : rootlibexecdir,
1987 install : true,
1988 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001989
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001990 s_j_gatewayd = executable('systemd-journal-gatewayd',
1991 systemd_journal_gatewayd_sources,
1992 include_directories : includes,
1993 link_with : [libshared],
1994 dependencies : [threads,
1995 libmicrohttpd,
1996 libgnutls,
1997 libxz,
1998 liblz4],
1999 install_rpath : rootlibexecdir,
2000 install : true,
2001 install_dir : rootlibexecdir)
2002 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002003endif
2004
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002005if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002006 executable('systemd-coredump',
2007 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002008 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002009 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002010 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002011 libacl,
2012 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002013 libxz,
2014 liblz4],
2015 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002016 install : true,
2017 install_dir : rootlibexecdir)
2018
2019 exe = executable('coredumpctl',
2020 coredumpctl_sources,
2021 include_directories : includes,
2022 link_with : [libshared],
2023 dependencies : [threads,
2024 libxz,
2025 liblz4],
2026 install_rpath : rootlibexecdir,
2027 install : true)
2028 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002029endif
2030
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002031if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002032 exe = executable('systemd-binfmt',
2033 'src/binfmt/binfmt.c',
2034 include_directories : includes,
2035 link_with : [libshared],
2036 install_rpath : rootlibexecdir,
2037 install : true,
2038 install_dir : rootlibexecdir)
2039 public_programs += [exe]
2040
2041 meson.add_install_script('sh', '-c',
2042 mkdir_p.format(binfmtdir))
2043 meson.add_install_script('sh', '-c',
2044 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2045endif
2046
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002047if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002048 executable('systemd-vconsole-setup',
2049 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002050 include_directories : includes,
2051 link_with : [libshared],
2052 install_rpath : rootlibexecdir,
2053 install : true,
2054 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002055endif
2056
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002057if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002058 executable('systemd-random-seed',
2059 'src/random-seed/random-seed.c',
2060 include_directories : includes,
2061 link_with : [libshared],
2062 install_rpath : rootlibexecdir,
2063 install : true,
2064 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002065endif
2066
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002067if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002068 executable('systemd-firstboot',
2069 'src/firstboot/firstboot.c',
2070 include_directories : includes,
2071 link_with : [libshared],
2072 dependencies : [libcrypt],
2073 install_rpath : rootlibexecdir,
2074 install : true,
2075 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002076endif
2077
2078executable('systemd-remount-fs',
2079 'src/remount-fs/remount-fs.c',
2080 'src/core/mount-setup.c',
2081 'src/core/mount-setup.h',
2082 include_directories : includes,
2083 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002084 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002085 install : true,
2086 install_dir : rootlibexecdir)
2087
2088executable('systemd-machine-id-setup',
2089 'src/machine-id-setup/machine-id-setup-main.c',
2090 'src/core/machine-id-setup.c',
2091 'src/core/machine-id-setup.h',
2092 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002093 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002094 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002095 install : true,
2096 install_dir : rootbindir)
2097
2098executable('systemd-fsck',
2099 'src/fsck/fsck.c',
2100 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002101 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002102 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002103 install : true,
2104 install_dir : rootlibexecdir)
2105
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002106executable('systemd-growfs',
2107 'src/partition/growfs.c',
2108 include_directories : includes,
2109 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002110 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002111 install_rpath : rootlibexecdir,
2112 install : true,
2113 install_dir : rootlibexecdir)
2114
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002115executable('systemd-makefs',
2116 'src/partition/makefs.c',
2117 include_directories : includes,
2118 link_with : [libshared],
2119 install_rpath : rootlibexecdir,
2120 install : true,
2121 install_dir : rootlibexecdir)
2122
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002123executable('systemd-sleep',
2124 'src/sleep/sleep.c',
2125 include_directories : includes,
2126 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002127 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002128 install : true,
2129 install_dir : rootlibexecdir)
2130
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002131exe = executable('systemd-sysctl',
2132 'src/sysctl/sysctl.c',
2133 include_directories : includes,
2134 link_with : [libshared],
2135 install_rpath : rootlibexecdir,
2136 install : true,
2137 install_dir : rootlibexecdir)
2138public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002139
2140executable('systemd-ac-power',
2141 'src/ac-power/ac-power.c',
2142 include_directories : includes,
2143 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002144 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002145 install : true,
2146 install_dir : rootlibexecdir)
2147
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002148exe = executable('systemd-detect-virt',
2149 'src/detect-virt/detect-virt.c',
2150 include_directories : includes,
2151 link_with : [libshared],
2152 install_rpath : rootlibexecdir,
2153 install : true)
2154public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002155
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002156exe = executable('systemd-delta',
2157 'src/delta/delta.c',
2158 include_directories : includes,
2159 link_with : [libshared],
2160 install_rpath : rootlibexecdir,
2161 install : true)
2162public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002163
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002164exe = executable('systemd-escape',
2165 'src/escape/escape.c',
2166 include_directories : includes,
2167 link_with : [libshared],
2168 install_rpath : rootlibexecdir,
2169 install : true,
2170 install_dir : rootbindir)
2171public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002172
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002173exe = executable('systemd-notify',
2174 'src/notify/notify.c',
2175 include_directories : includes,
2176 link_with : [libshared],
2177 install_rpath : rootlibexecdir,
2178 install : true,
2179 install_dir : rootbindir)
2180public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002181
2182executable('systemd-volatile-root',
2183 'src/volatile-root/volatile-root.c',
2184 include_directories : includes,
2185 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002186 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002187 install : true,
2188 install_dir : rootlibexecdir)
2189
2190executable('systemd-cgroups-agent',
2191 'src/cgroups-agent/cgroups-agent.c',
2192 include_directories : includes,
2193 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002194 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002195 install : true,
2196 install_dir : rootlibexecdir)
2197
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002198exe = executable('systemd-path',
2199 'src/path/path.c',
2200 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002201 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002202 install_rpath : rootlibexecdir,
2203 install : true)
2204public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002205
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002206exe = executable('systemd-ask-password',
2207 'src/ask-password/ask-password.c',
2208 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002209 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002210 install_rpath : rootlibexecdir,
2211 install : true,
2212 install_dir : rootbindir)
2213public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002214
2215executable('systemd-reply-password',
2216 'src/reply-password/reply-password.c',
2217 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002218 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002219 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002220 install : true,
2221 install_dir : rootlibexecdir)
2222
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002223exe = executable('systemd-tty-ask-password-agent',
2224 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2225 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002226 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002227 install_rpath : rootlibexecdir,
2228 install : true,
2229 install_dir : rootbindir)
2230public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002231
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002232exe = executable('systemd-cgls',
2233 'src/cgls/cgls.c',
2234 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002235 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002236 install_rpath : rootlibexecdir,
2237 install : true)
2238public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002239
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002240exe = executable('systemd-cgtop',
2241 'src/cgtop/cgtop.c',
2242 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002243 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002244 install_rpath : rootlibexecdir,
2245 install : true)
2246public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002247
2248executable('systemd-initctl',
2249 'src/initctl/initctl.c',
2250 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002251 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002252 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002253 install : true,
2254 install_dir : rootlibexecdir)
2255
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002256exe = executable('systemd-mount',
2257 'src/mount/mount-tool.c',
2258 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002259 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002260 install_rpath : rootlibexecdir,
2261 install : true)
2262public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002263
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002264meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002265 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002266
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002267exe = executable('systemd-run',
2268 'src/run/run.c',
2269 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002270 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002271 install_rpath : rootlibexecdir,
2272 install : true)
2273public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002274
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002275exe = executable('systemd-stdio-bridge',
2276 'src/stdio-bridge/stdio-bridge.c',
2277 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002278 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002279 install_rpath : rootlibexecdir,
2280 install : true)
2281public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002282
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002283exe = executable('busctl',
2284 'src/busctl/busctl.c',
2285 'src/busctl/busctl-introspect.c',
2286 'src/busctl/busctl-introspect.h',
2287 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002288 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002289 install_rpath : rootlibexecdir,
2290 install : true)
2291public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002292
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002293if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002294 exe = executable('systemd-sysusers',
2295 'src/sysusers/sysusers.c',
2296 include_directories : includes,
2297 link_with : [libshared],
2298 install_rpath : rootlibexecdir,
2299 install : true,
2300 install_dir : rootbindir)
2301 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002302endif
2303
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002304if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002305 exe = executable('systemd-tmpfiles',
2306 'src/tmpfiles/tmpfiles.c',
2307 include_directories : includes,
2308 link_with : [libshared],
2309 dependencies : [libacl],
2310 install_rpath : rootlibexecdir,
2311 install : true,
2312 install_dir : rootbindir)
2313 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002314
2315 test('test-systemd-tmpfiles',
2316 test_systemd_tmpfiles_py,
2317 args : exe.full_path())
2318 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002319endif
2320
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002321if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002322 exe = executable('systemd-hwdb',
2323 'src/hwdb/hwdb.c',
2324 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2325 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002326 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002327 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002328 install : true,
2329 install_dir : rootbindir)
2330 public_programs += [exe]
2331endif
2332
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002333if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002334 executable('systemd-quotacheck',
2335 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002336 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002337 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002338 install_rpath : rootlibexecdir,
2339 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002340 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002341endif
2342
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002343exe = executable('systemd-socket-proxyd',
2344 'src/socket-proxy/socket-proxyd.c',
2345 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002346 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002347 dependencies : [threads],
2348 install_rpath : rootlibexecdir,
2349 install : true,
2350 install_dir : rootlibexecdir)
2351public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002352
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002353exe = executable('systemd-udevd',
2354 systemd_udevd_sources,
2355 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002356 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002357 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002358 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002359 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002360 dependencies : [threads,
2361 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002362 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002363 libacl,
2364 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002365 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002366 install : true,
2367 install_dir : rootlibexecdir)
2368public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002369
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002370exe = executable('udevadm',
2371 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002372 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002373 include_directories : includes,
2374 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002375 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002376 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002377 dependencies : [threads,
2378 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002379 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002380 libacl,
2381 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002382 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002383 install : true,
2384 install_dir : rootbindir)
2385public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002386
2387executable('systemd-shutdown',
2388 systemd_shutdown_sources,
2389 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002390 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002391 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002392 install : true,
2393 install_dir : rootlibexecdir)
2394
2395executable('systemd-update-done',
2396 'src/update-done/update-done.c',
2397 include_directories : includes,
2398 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002399 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002400 install : true,
2401 install_dir : rootlibexecdir)
2402
2403executable('systemd-update-utmp',
2404 'src/update-utmp/update-utmp.c',
2405 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002406 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002407 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002408 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002409 install : true,
2410 install_dir : rootlibexecdir)
2411
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002412if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002413 executable('systemd-modules-load',
2414 'src/modules-load/modules-load.c',
2415 include_directories : includes,
2416 link_with : [libshared],
2417 dependencies : [libkmod],
2418 install_rpath : rootlibexecdir,
2419 install : true,
2420 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002421
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002422 meson.add_install_script('sh', '-c',
2423 mkdir_p.format(modulesloaddir))
2424 meson.add_install_script('sh', '-c',
2425 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002426endif
2427
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002428exe = executable('systemd-nspawn',
2429 systemd_nspawn_sources,
2430 'src/core/mount-setup.c', # FIXME: use a variable?
2431 'src/core/mount-setup.h',
2432 'src/core/loopback-setup.c',
2433 'src/core/loopback-setup.h',
2434 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002435 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002436 dependencies : [libacl,
2437 libblkid,
2438 libseccomp,
2439 libselinux],
2440 install_rpath : rootlibexecdir,
2441 install : true)
2442public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002443
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002444if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002445 executable('systemd-networkd',
2446 systemd_networkd_sources,
2447 include_directories : includes,
2448 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002449 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002450 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002451 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002452 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002453 install_rpath : rootlibexecdir,
2454 install : true,
2455 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002456
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002457 executable('systemd-networkd-wait-online',
2458 systemd_networkd_wait_online_sources,
2459 include_directories : includes,
2460 link_with : [libnetworkd_core,
2461 libshared],
2462 install_rpath : rootlibexecdir,
2463 install : true,
2464 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002465
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002466 exe = executable('networkctl',
2467 networkctl_sources,
2468 include_directories : includes,
2469 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002470 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002471 install_rpath : rootlibexecdir,
2472 install : true,
2473 install_dir : rootbindir)
2474 public_programs += [exe]
2475endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002476
2477executable('systemd-sulogin-shell',
2478 ['src/sulogin-shell/sulogin-shell.c'],
2479 include_directories : includes,
2480 link_with : [libshared],
2481 install_rpath : rootlibexecdir,
2482 install : true,
2483 install_dir : rootlibexecdir)
2484
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002485############################################################
2486
2487foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002488 sources = tuple[0]
2489 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2490 dependencies = tuple[2]
2491 condition = tuple.length() >= 4 ? tuple[3] : ''
2492 type = tuple.length() >= 5 ? tuple[4] : ''
2493 defs = tuple.length() >= 6 ? tuple[5] : []
2494 incs = tuple.length() >= 7 ? tuple[6] : includes
2495 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002496
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002497 name = sources[0].split('/')[-1].split('.')[0]
2498 if type.startswith('timeout=')
2499 timeout = type.split('=')[1].to_int()
2500 type = ''
2501 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002502 if want_tests == 'false'
2503 message('Not compiling @0@ because tests is set to false'.format(name))
2504 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002505 exe = executable(
2506 name,
2507 sources,
2508 include_directories : incs,
2509 link_with : link_with,
2510 dependencies : dependencies,
2511 c_args : defs,
2512 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002513 install : install_tests,
2514 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002515
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002516 if type == 'manual'
2517 message('@0@ is a manual test'.format(name))
2518 elif type == 'unsafe' and want_tests != 'unsafe'
2519 message('@0@ is an unsafe test'.format(name))
2520 else
2521 test(name, exe,
2522 env : test_env,
2523 timeout : timeout)
2524 endif
2525 else
2526 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2527 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002528endforeach
2529
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002530test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002531 'test-libsystemd-sym',
2532 test_libsystemd_sym_c,
2533 include_directories : includes,
2534 link_with : [libsystemd],
2535 install : install_tests,
2536 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002537test('test-libsystemd-sym',
2538 test_libsystemd_sym)
2539
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002540test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002541 'test-libudev-sym',
2542 test_libudev_sym_c,
2543 include_directories : includes,
2544 c_args : ['-Wno-deprecated-declarations'],
2545 link_with : [libudev],
2546 install : install_tests,
2547 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002548test('test-libudev-sym',
2549 test_libudev_sym)
2550
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002551############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002552
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002553fuzzer_exes = []
2554
2555foreach tuple : fuzzers
2556 sources = tuple[0]
2557 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2558 dependencies = tuple[2]
2559 defs = tuple.length() >= 4 ? tuple[3] : []
2560 incs = tuple.length() >= 5 ? tuple[4] : includes
2561
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002562 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002563 dependencies += fuzzing_engine
2564 else
2565 sources += 'src/fuzz/fuzz-main.c'
2566 endif
2567
2568 name = sources[0].split('/')[-1].split('.')[0]
2569
2570 fuzzer_exes += executable(
2571 name,
2572 sources,
2573 include_directories : [incs, include_directories('src/fuzz')],
2574 link_with : link_with,
2575 dependencies : dependencies,
2576 c_args : defs,
2577 install : false)
2578endforeach
2579
2580run_target('fuzzers',
2581 depends : fuzzer_exes,
2582 command : ['true'])
2583
2584############################################################
2585
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002586make_directive_index_py = find_program('tools/make-directive-index.py')
2587make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002588xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002589hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002590
2591subdir('units')
2592subdir('sysctl.d')
2593subdir('sysusers.d')
2594subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002595subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002596subdir('hwdb')
2597subdir('network')
2598subdir('man')
2599subdir('shell-completion/bash')
2600subdir('shell-completion/zsh')
2601subdir('docs/sysvinit')
2602subdir('docs/var-log')
2603
2604# FIXME: figure out if the warning is true:
2605# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2606install_subdir('factory/etc',
2607 install_dir : factorydir)
2608
2609
2610install_data('xorg/50-systemd-user.sh',
2611 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002612install_data('modprobe.d/systemd.conf',
2613 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002614install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002615 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002616 'NEWS',
2617 'README',
2618 'doc/CODING_STYLE',
2619 'doc/DISTRO_PORTING',
2620 'doc/ENVIRONMENT.md',
2621 'doc/HACKING',
2622 'doc/TRANSIENT-SETTINGS.md',
2623 'doc/TRANSLATORS',
2624 'doc/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002625 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2626 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002627
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002628meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2629meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2630
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002631############################################################
2632
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002633meson_check_help = find_program('tools/meson-check-help.sh')
2634
2635foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002636 name = exec.full_path().split('/')[-1]
2637 test('check-help-' + name,
2638 meson_check_help,
2639 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002640endforeach
2641
2642############################################################
2643
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002644prev = ''
2645foreach p : fuzz_regression_tests
2646 a = p.split('/')[-3]
2647 b = p.split('/')[-2]
2648 c = p.split('/')[-1]
2649
2650 if a == 'address'
2651 build = sanitize_address
2652 else
2653 error('unknown sanitizer @0@'.format(a))
2654 endif
2655
2656 name = '@1@:@0@'.format(a, b)
2657
2658 if name != prev
2659 if want_tests == 'false'
2660 message('Not compiling @0@ because tests is set to false'.format(name))
2661 elif not sanitizers.contains(a)
2662 message('Not compiling @0@ because @1@ sanitizer is not available'.format(name, a))
2663 elif slow_tests
2664 exe = custom_target(
2665 name,
2666 output : name,
2667 depends : build,
2668 command : [env, 'ln', '-fs',
2669 join_paths(build.full_path(), b),
2670 '@OUTPUT@'],
2671 build_by_default : true)
2672 else
2673 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2674 endif
2675 endif
2676 prev = name
2677
2678 if want_tests != 'false' and slow_tests
2679 test(c, env, args : [exe.full_path(),
2680 join_paths(meson.source_root(),
2681 'test/fuzz-regressions',
2682 p)])
2683 endif
2684endforeach
2685
2686############################################################
2687
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002688if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002689 all_files = run_command(
2690 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002691 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002692 'ls-files',
2693 ':/*.[ch]'])
2694 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002695
userwithuide85a6902017-08-09 13:41:44 +00002696 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002697 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002698 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002699 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002700 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002701 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002702 output : 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002703 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002704endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002705
2706if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002707 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002708 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002709 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002710 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002711endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002712
2713if git.found()
2714 git_head = run_command(
2715 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002716 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002717 'rev-parse', 'HEAD']).stdout().strip()
2718 git_head_short = run_command(
2719 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002720 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002721 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2722
2723 run_target(
2724 'git-snapshot',
2725 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002726 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002727 git_head_short),
2728 '--prefix', 'systemd-@0@/'.format(git_head),
2729 'HEAD'])
2730endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002731
2732############################################################
2733
Lennart Poettering51b13862017-12-20 12:51:14 +01002734meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2735run_target(
2736 'check-api-docs',
2737 depends : [man, libsystemd, libudev],
2738 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2739
2740############################################################
2741
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002742status = [
2743 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2744
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002745 'split /usr: @0@'.format(split_usr),
Yu Watanabe359b4962017-11-25 20:35:24 +09002746 'prefix directory: @0@'.format(prefixdir),
2747 'rootprefix directory: @0@'.format(rootprefixdir),
2748 'sysconf directory: @0@'.format(sysconfdir),
2749 'include directory: @0@'.format(includedir),
2750 'lib directory: @0@'.format(libdir),
2751 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002752 'SysV init scripts: @0@'.format(sysvinit_path),
2753 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002754 'PAM modules directory: @0@'.format(pamlibdir),
2755 'PAM configuration directory: @0@'.format(pamconfdir),
2756 'RPM macros directory: @0@'.format(rpmmacrosdir),
2757 'modprobe.d directory: @0@'.format(modprobedir),
2758 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2759 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2760 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2761 'bash completions directory: @0@'.format(bashcompletiondir),
2762 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002763 'extra start script: @0@'.format(get_option('rc-local')),
2764 'extra stop script: @0@'.format(get_option('halt-local')),
2765 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2766 get_option('debug-tty')),
2767 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002768 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002769 'maximum system UID: @0@'.format(system_uid_max),
2770 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002771 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2772 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2773 'minimum container UID base: @0@'.format(container_uid_base_min),
2774 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002775 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002776 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002777 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002778 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002779 'nobody user name: @0@'.format(nobody_user),
2780 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002781 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002782 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002783
2784 'default DNSSEC mode: @0@'.format(default_dnssec),
2785 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2786 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2787
2788alt_dns_servers = '\n '.join(dns_servers.split(' '))
2789alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2790status += [
2791 'default DNS servers: @0@'.format(alt_dns_servers),
2792 'default NTP servers: @0@'.format(alt_ntp_servers)]
2793
2794alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2795 '@@0@'.format(time_epoch)).stdout().strip()
2796status += [
2797 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2798
2799# TODO:
2800# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2801# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2802# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2803
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002804if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002805 status += [
2806 'efi arch: @0@'.format(efi_arch)]
2807
2808 if have_gnu_efi
2809 status += [
2810 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2811 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002812 'EFI lib directory: @0@'.format(efi_libdir),
2813 'EFI lds directory: @0@'.format(efi_ldsdir),
2814 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002815 endif
2816endif
2817
2818found = []
2819missing = []
2820
2821foreach tuple : [
2822 ['libcryptsetup'],
2823 ['PAM'],
2824 ['AUDIT'],
2825 ['IMA'],
2826 ['AppArmor'],
2827 ['SELinux'],
2828 ['SECCOMP'],
2829 ['SMACK'],
2830 ['zlib'],
2831 ['xz'],
2832 ['lz4'],
2833 ['bzip2'],
2834 ['ACL'],
2835 ['gcrypt'],
2836 ['qrencode'],
2837 ['microhttpd'],
2838 ['gnutls'],
2839 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002840 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002841 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002842 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002843 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002844 ['libiptc'],
2845 ['elfutils'],
2846 ['binfmt'],
2847 ['vconsole'],
2848 ['quotacheck'],
2849 ['tmpfiles'],
2850 ['environment.d'],
2851 ['sysusers'],
2852 ['firstboot'],
2853 ['randomseed'],
2854 ['backlight'],
2855 ['rfkill'],
2856 ['logind'],
2857 ['machined'],
2858 ['importd'],
2859 ['hostnamed'],
2860 ['timedated'],
2861 ['timesyncd'],
2862 ['localed'],
2863 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002864 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002865 ['coredump'],
2866 ['polkit'],
2867 ['legacy pkla', install_polkit_pkla],
2868 ['efi'],
2869 ['gnu-efi', have_gnu_efi],
2870 ['kmod'],
2871 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002872 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002873 ['blkid'],
2874 ['dbus'],
2875 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002876 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002877 ['hwdb'],
2878 ['tpm'],
2879 ['man pages', want_man],
2880 ['html pages', want_html],
2881 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002882 ['SysV compat'],
2883 ['utmp'],
2884 ['ldconfig'],
2885 ['hibernate'],
2886 ['adm group', get_option('adm-group')],
2887 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002888 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002889 ['debug hashmap'],
2890 ['debug mmap cache'],
2891]
2892
2893 cond = tuple.get(1, '')
2894 if cond == ''
2895 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2896 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002897 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002898 endif
2899 if cond
2900 found += [tuple[0]]
2901 else
2902 missing += [tuple[0]]
2903 endif
2904endforeach
2905
2906status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002907 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002908 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002909 '',
2910 'disabled features: @0@'.format(', '.join(missing)),
2911 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002912message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002913
2914if rootprefixdir != rootprefix_default
2915 message('WARNING:\n' +
2916 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2917 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2918 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2919endif