blob: df79a54026b45df7b6d1faf952671e1d7fdc35c2 [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 Poetteringcbd73c62017-12-11 16:10:25 +010019 version : '236',
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 Poetteringcbd73c62017-12-11 16:10:25 +010030libsystemd_version = '0.20.0'
31libudev_version = '1.6.8'
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-Szmek9a8e64b2017-11-28 21:46:53 +010057split_usr = get_option('split-usr')
58conf.set10('HAVE_SPLIT_USR', split_usr)
59
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010060rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010061# Unusual rootprefixdir values are used by some distros
62# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010063rootprefix_default = get_option('split-usr') ? '/' : '/usr'
64if rootprefixdir == ''
65 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010066endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040067
68sysvinit_path = get_option('sysvinit-path')
69sysvrcnd_path = get_option('sysvrcnd-path')
Max Harmathy54248242017-12-15 16:05:25 +010070have = sysvinit_path != '' and sysvrcnd_path != ''
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020071conf.set10('HAVE_SYSV_COMPAT', have,
72 description : 'SysV init scripts and rcN.d links are supported')
73m4_defines += have ? ['-DHAVE_SYSV_COMPAT'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040074
75# join_paths ignore the preceding arguments if an absolute component is
76# encountered, so this should canonicalize various paths when they are
77# absolute or relative.
78prefixdir = get_option('prefix')
79if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040080 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040081endif
82bindir = join_paths(prefixdir, get_option('bindir'))
83libdir = join_paths(prefixdir, get_option('libdir'))
84sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
85includedir = join_paths(prefixdir, get_option('includedir'))
86datadir = join_paths(prefixdir, get_option('datadir'))
87localstatedir = join_paths('/', get_option('localstatedir'))
88
89rootbindir = join_paths(rootprefixdir, 'bin')
90rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
91
92rootlibdir = get_option('rootlibdir')
93if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040094 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040095endif
96
97# Dirs of external packages
Michael Bieble17e5ba2017-04-13 10:30:56 -040098pkgconfigdatadir = join_paths(datadir, 'pkgconfig')
99pkgconfiglibdir = join_paths(libdir, 'pkgconfig')
100polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
101polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
102polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
103varlogdir = join_paths(localstatedir, 'log')
104xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900105rpmmacrosdir = get_option('rpmmacrosdir')
106if rpmmacrosdir != 'no'
107 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
108endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200109modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400110
111# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400112pkgdatadir = join_paths(datadir, 'systemd')
113environmentdir = join_paths(prefixdir, 'lib/environment.d')
114pkgsysconfdir = join_paths(sysconfdir, 'systemd')
115userunitdir = join_paths(prefixdir, 'lib/systemd/user')
116userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
117tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
118sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
119sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
120binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
121modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
122networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
123pkgincludedir = join_paths(includedir, 'systemd')
124systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
125usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
126systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
127userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
128systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
129systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
130systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
131systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
132udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
133udevhomedir = udevlibexecdir
134udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
135udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
136catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
137kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
138factorydir = join_paths(datadir, 'factory')
139docdir = join_paths(datadir, 'doc/systemd')
140bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
141testsdir = join_paths(prefixdir, 'lib/systemd/tests')
142systemdstatedir = join_paths(localstatedir, 'lib/systemd')
143catalogstatedir = join_paths(systemdstatedir, 'catalog')
144randomseeddir = join_paths(localstatedir, 'lib/systemd')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400145
146dbuspolicydir = get_option('dbuspolicydir')
147if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400148 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400149endif
150
151dbussessionservicedir = get_option('dbussessionservicedir')
152if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400153 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400154endif
155
156dbussystemservicedir = get_option('dbussystemservicedir')
157if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400158 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400159endif
160
161pamlibdir = get_option('pamlibdir')
162if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400163 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400164endif
165
166pamconfdir = get_option('pamconfdir')
167if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400168 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400169endif
170
171conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400172conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400173conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
174conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
175conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400176conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
177conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400178conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400179conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
180conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400181conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
182conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
183conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
184conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100185conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100186conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400187conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
188conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
189conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
190conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
191conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100192conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400193conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400194conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
195conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400196conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
197conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
198conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
199conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
200conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
201conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400202conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
203conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400204conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400205conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400206conf.set_quoted('LIBDIR', libdir)
207conf.set_quoted('ROOTLIBDIR', rootlibdir)
208conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
209conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400210conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
211conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
212conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
213conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
214conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
215conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400216
217conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
218conf.set_quoted('ABS_SRC_DIR', meson.source_root())
219
220substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400221substs.set('exec_prefix', prefixdir)
222substs.set('libdir', libdir)
223substs.set('rootlibdir', rootlibdir)
224substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400225substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400226substs.set('bindir', bindir)
227substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400228substs.set('rootlibexecdir', rootlibexecdir)
229substs.set('systemunitdir', systemunitdir)
230substs.set('userunitdir', userunitdir)
231substs.set('systempresetdir', systempresetdir)
232substs.set('userpresetdir', userpresetdir)
233substs.set('udevhwdbdir', udevhwdbdir)
234substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400235substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400236substs.set('catalogdir', catalogdir)
237substs.set('tmpfilesdir', tmpfilesdir)
238substs.set('sysusersdir', sysusersdir)
239substs.set('sysctldir', sysctldir)
240substs.set('binfmtdir', binfmtdir)
241substs.set('modulesloaddir', modulesloaddir)
242substs.set('systemgeneratordir', systemgeneratordir)
243substs.set('usergeneratordir', usergeneratordir)
244substs.set('systemenvgeneratordir', systemenvgeneratordir)
245substs.set('userenvgeneratordir', userenvgeneratordir)
246substs.set('systemshutdowndir', systemshutdowndir)
247substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400248substs.set('VARLOGDIR', varlogdir)
249substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400250substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
251substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400252substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
253substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
254substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
255substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400256
257#####################################################################
258
259cc = meson.get_compiler('c')
260pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400261check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400262
Adam Duskett08318a22018-01-15 06:25:46 -0500263if get_option('tests') != 'false'
264 cxx = find_program('c++', required : false)
265 if cxx.found()
266 # Used only for tests
267 add_languages('cpp')
268 endif
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400269endif
270
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500271ossfuzz = get_option('oss-fuzz')
272if ossfuzz
273 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
274endif
275
Zbigniew Jędrzejewski-Szmek75cf1d62017-07-04 17:59:15 -0400276foreach arg : ['-Wextra',
Zbigniew Jędrzejewski-Szmek70160ce2017-10-03 12:11:49 +0200277 '-Werror=undef',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400278 '-Wlogical-op',
279 '-Wmissing-include-dirs',
280 '-Wold-style-definition',
281 '-Wpointer-arith',
282 '-Winit-self',
283 '-Wdeclaration-after-statement',
284 '-Wfloat-equal',
285 '-Wsuggest-attribute=noreturn',
286 '-Werror=missing-prototypes',
287 '-Werror=implicit-function-declaration',
288 '-Werror=missing-declarations',
289 '-Werror=return-type',
290 '-Werror=incompatible-pointer-types',
291 '-Werror=format=2',
292 '-Wstrict-prototypes',
293 '-Wredundant-decls',
294 '-Wmissing-noreturn',
Zbigniew Jędrzejewski-Szmek97279d82017-11-20 14:23:40 +0100295 '-Wimplicit-fallthrough=5',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400296 '-Wshadow',
297 '-Wendif-labels',
298 '-Wstrict-aliasing=2',
299 '-Wwrite-strings',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400300 '-Werror=overflow',
301 '-Wdate-time',
302 '-Wnested-externs',
303 '-ffast-math',
304 '-fno-common',
305 '-fdiagnostics-show-option',
306 '-fno-strict-aliasing',
307 '-fvisibility=hidden',
308 '-fstack-protector',
309 '-fstack-protector-strong',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400310 '--param=ssp-buffer-size=4',
311 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400312 if cc.has_argument(arg)
313 add_project_arguments(arg, language : 'c')
314 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400315endforeach
316
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500317# the oss-fuzz fuzzers are not built with -fPIE, so don't
318# enable it when we are linking against them
319if not ossfuzz
320 if cc.has_argument('-fPIE')
321 add_project_arguments('-fPIE', language : 'c')
322 endif
323endif
324
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400325# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
326# arguments, just emits a warnings. So test for the "positive" version instead.
327foreach arg : ['unused-parameter',
328 'missing-field-initializers',
329 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300330 'format-signedness',
331 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
332 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400333 if cc.has_argument('-W' + arg)
334 add_project_arguments('-Wno-' + arg, language : 'c')
335 endif
336endforeach
337
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400338if cc.compiles('
339 #include <time.h>
340 #include <inttypes.h>
341 typedef uint64_t usec_t;
342 usec_t now(clockid_t clock);
343 int main(void) {
344 struct timespec now;
345 return 0;
346 }
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400347', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400348 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400349endif
350
351if cc.get_id() == 'clang'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400352 foreach arg : ['-Wno-typedef-redefinition',
353 '-Wno-gnu-variable-sized-type-not-at-end',
354 ]
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400355 if cc.has_argument(arg,
356 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400357 add_project_arguments(arg, language : 'c')
358 endif
359 endforeach
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400360endif
361
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400362link_test_c = files('tools/meson-link-test.c')
363
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400364# --as-needed and --no-undefined are provided by meson by default,
365# run mesonconf to see what is enabled
366foreach arg : ['-Wl,-z,relro',
367 '-Wl,-z,now',
368 '-pie',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400369 ]
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400370
371 have = run_command(check_compilation_sh,
372 cc.cmd_array(), '-x', 'c', arg,
373 '-include', link_test_c).returncode() == 0
374 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500375 if have and (arg != '-pie' or not ossfuzz)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400376 add_project_link_arguments(arg, language : 'c')
377 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400378endforeach
379
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400380if get_option('buildtype') != 'debug'
381 foreach arg : ['-ffunction-sections',
382 '-fdata-sections']
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400383 if cc.has_argument(arg,
384 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400385 add_project_arguments(arg, language : 'c')
386 endif
387 endforeach
388
389 foreach arg : ['-Wl,--gc-sections']
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400390 have = run_command(check_compilation_sh,
391 cc.cmd_array(), '-x', 'c', arg,
392 '-include', link_test_c).returncode() == 0
393 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
394 if have
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400395 add_project_link_arguments(arg, language : 'c')
396 endif
397 endforeach
398endif
399
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400400cpp = ' '.join(cc.cmd_array()) + ' -E'
401
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400402#####################################################################
403# compilation result tests
404
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400405conf.set('_GNU_SOURCE', true)
406conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400407
408conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
409conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
410conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
411conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
412conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
413conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
414conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
415
416decl_headers = '''
417#include <uchar.h>
418#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000419#include <linux/fib_rules.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400420'''
421# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
422
423foreach decl : ['char16_t',
424 'char32_t',
425 'key_serial_t',
426 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000427 'struct fib_rule_uid_range',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400428 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400429
430 # We get -1 if the size cannot be determined
431 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200432 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400433endforeach
434
435foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
436 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
437 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
438 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530439 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400440 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
441 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
442 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
443 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
444 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530445 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400446 # if_tunnel.h is buggy and cannot be included on its own
447 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
448 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
449 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
450 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
451 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
452 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
453 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530454 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400455 ['NDA_IFINDEX', 'linux/neighbour.h'],
456 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000457 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400458 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530459 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400460 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400461 prefix = decl.length() > 2 ? decl[2] : ''
462 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200463 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400464endforeach
465
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400466foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200467 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400468endforeach
469
470foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100471 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100472 ['gettid', '''#include <sys/types.h>
473 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100474 ['pivot_root', '''#include <stdlib.h>
475 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100476 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400477 #include <sys/stat.h>
478 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100479 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100480 ['renameat2', '''#include <stdio.h>
481 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400482 ['kcmp', '''#include <linux/kcmp.h>'''],
483 ['keyctl', '''#include <sys/types.h>
484 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100485 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400486 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200487 ['bpf', '''#include <sys/syscall.h>
488 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmek38f1ae02017-04-19 16:14:16 -0400489 ['explicit_bzero' , '''#include <string.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400490]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400491
Lennart Poettering85db59b2017-12-25 12:01:14 +0100492 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200493 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400494endforeach
495
Lennart Poettering85db59b2017-12-25 12:01:14 +0100496if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200497 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200498 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400499else
500 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200501 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200502 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400503endif
504
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400505#####################################################################
506
507sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400508awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400509m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400510stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400511git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400512
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400513meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400514mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400515test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
516splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400517
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400518# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
519# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500520progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400521 ['quotacheck', '/usr/sbin/quotacheck' ],
522 ['kill', '/usr/bin/kill' ],
523 ['kmod', '/usr/bin/kmod' ],
524 ['kexec', '/usr/sbin/kexec' ],
525 ['sulogin', '/usr/sbin/sulogin' ],
526 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
527 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
528 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
529 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
530 ]
531foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400532 path = get_option(prog[0] + '-path')
533 if path != ''
534 message('Using @1@ for @0@'.format(prog[0], path))
535 else
536 exe = find_program(prog[0],
537 '/usr/sbin/' + prog[0],
538 '/sbin/' + prog[0],
539 required: false)
540 path = exe.found() ? exe.path() : prog[1]
541 endif
542 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
543 conf.set_quoted(name, path)
544 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400545endforeach
546
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500547conf.set_quoted('TELINIT', get_option('telinit-path'))
548
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400549if run_command('ln', '--relative', '--help').returncode() != 0
550 error('ln does not support --relative')
551endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400552
553############################################################
554
555gperf = find_program('gperf')
556
557gperf_test_format = '''
558#include <string.h>
559const char * in_word_set(const char *, @0@);
560@1@
561'''
562gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
563gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
564gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
565if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400566 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400567else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400568 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
569 if cc.compiles(gperf_test)
570 gperf_len_type = 'unsigned'
571 else
572 error('unable to determine gperf len type')
573 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400574endif
575message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400576conf.set('GPERF_LEN_TYPE', gperf_len_type,
577 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400578
579############################################################
580
581if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400582 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400583endif
584foreach header : ['linux/btrfs.h',
585 'linux/memfd.h',
586 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200587 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400588 'valgrind/memcheck.h',
589 'valgrind/valgrind.h',
590 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400591
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200592 conf.set10('HAVE_' + header.underscorify().to_upper(),
593 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400594endforeach
595
596############################################################
597
598conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400599conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
600gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400601
602default_hierarchy = get_option('default-hierarchy')
603conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
604 description : 'default cgroup hierarchy as string')
605if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400606 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400607elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400608 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400609else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400610 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400611endif
612
613time_epoch = get_option('time-epoch')
614if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400615 NEWS = files('NEWS')
616 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400617endif
618time_epoch = time_epoch.to_int()
619conf.set('TIME_EPOCH', time_epoch)
620
621system_uid_max = get_option('system-uid-max')
622if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400623 system_uid_max = run_command(
624 awk,
625 'BEGIN { uid=999 } /^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
626 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400627endif
628system_uid_max = system_uid_max.to_int()
629conf.set('SYSTEM_UID_MAX', system_uid_max)
630substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400631message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400632
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400633system_gid_max = get_option('system-gid-max')
634if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400635 system_gid_max = run_command(
636 awk,
637 'BEGIN { gid=999 } /^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
638 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400639endif
640system_gid_max = system_gid_max.to_int()
641conf.set('SYSTEM_GID_MAX', system_gid_max)
642substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400643message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400644
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100645dynamic_uid_min = get_option('dynamic-uid-min').to_int()
646dynamic_uid_max = get_option('dynamic-uid-max').to_int()
647conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
648conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
649substs.set('dynamicuidmin', dynamic_uid_min)
650substs.set('dynamicuidmax', dynamic_uid_max)
651
652container_uid_base_min = get_option('container-uid-base-min').to_int()
653container_uid_base_max = get_option('container-uid-base-max').to_int()
654conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
655conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
656substs.set('containeruidbasemin', container_uid_base_min)
657substs.set('containeruidbasemax', container_uid_base_max)
658
Lennart Poetteringafde4572017-12-05 11:00:24 +0100659nobody_user = get_option('nobody-user')
660nobody_group = get_option('nobody-group')
661
662getent_result = run_command('getent', 'passwd', '65534')
663if getent_result.returncode() == 0
664 name = getent_result.stdout().split(':')[0]
665 if name != nobody_user
666 message('WARNING:\n' +
667 ' 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) +
668 ' Your build will result in an user table setup that is incompatible with the local system.')
669 endif
670endif
671id_result = run_command('id', '-u', nobody_user)
672if id_result.returncode() == 0
673 id = id_result.stdout().to_int()
674 if id != 65534
675 message('WARNING:\n' +
676 ' 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) +
677 ' Your build will result in an user table setup that is incompatible with the local system.')
678 endif
679endif
680
681getent_result = run_command('getent', 'group', '65534')
682if getent_result.returncode() == 0
683 name = getent_result.stdout().split(':')[0]
684 if name != nobody_group
685 message('WARNING:\n' +
686 ' 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) +
687 ' Your build will result in an group table setup that is incompatible with the local system.')
688 endif
689endif
690id_result = run_command('id', '-g', nobody_group)
691if id_result.returncode() == 0
692 id = id_result.stdout().to_int()
693 if id != 65534
694 message('WARNING:\n' +
695 ' 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) +
696 ' Your build will result in an group table setup that is incompatible with the local system.')
697 endif
698endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900699if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
700 message('WARNING:\n' +
701 ' The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
702 ' Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
703endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100704
705conf.set_quoted('NOBODY_USER_NAME', nobody_user)
706conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900707substs.set('NOBODY_USER_NAME', nobody_user)
708substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100709
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400710tty_gid = get_option('tty-gid')
711conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400712substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400713
Ikey Doherty84786b82017-12-03 12:28:23 +0000714# Ensure provided GID argument is numeric, otherwise fallback to default assignment
715if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900716 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000717else
Yu Watanabed6806872017-12-05 14:01:39 +0900718 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000719endif
720substs.set('USERS_GID', users_gid)
721
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400722if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400723 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400724endif
725
726if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400727 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400728endif
729
730substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700731substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400732
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400733kill_user_processes = get_option('default-kill-user-processes')
734conf.set10('KILL_USER_PROCESSES', kill_user_processes)
735substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400736
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400737dns_servers = get_option('dns-servers')
738conf.set_quoted('DNS_SERVERS', dns_servers)
739substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400740
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400741ntp_servers = get_option('ntp-servers')
742conf.set_quoted('NTP_SERVERS', ntp_servers)
743substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400744
745conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
746
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400747substs.set('SUSHELL', get_option('debug-shell'))
748substs.set('DEBUGTTY', get_option('debug-tty'))
749
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400750debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200751enable_debug_hashmap = false
752enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400753if debug != ''
754 foreach name : debug.split(',')
755 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200756 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400757 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200758 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400759 else
760 message('unknown debug option "@0@", ignoring'.format(name))
761 endif
762 endforeach
763endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200764conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
765conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400766
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400767#####################################################################
768
769threads = dependency('threads')
770librt = cc.find_library('rt')
771libm = cc.find_library('m')
772libdl = cc.find_library('dl')
773libcrypt = cc.find_library('crypt')
774
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400775libcap = dependency('libcap', required : false)
776if not libcap.found()
777 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
778 libcap = cc.find_library('cap')
779endif
780
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400781libmount = dependency('mount',
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500782 version : '>= 2.30',
783 required : not ossfuzz)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400784
785want_seccomp = get_option('seccomp')
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500786if want_seccomp != 'false' and not ossfuzz
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400787 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400788 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400789 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200790 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400791else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200792 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400793 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400794endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200795conf.set10('HAVE_SECCOMP', have)
796m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400797
798want_selinux = get_option('selinux')
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500799if want_selinux != 'false' and not ossfuzz
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400800 libselinux = dependency('libselinux',
801 version : '>= 2.1.9',
802 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200803 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400804else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200805 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400806 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400807endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200808conf.set10('HAVE_SELINUX', have)
809m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400810
811want_apparmor = get_option('apparmor')
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500812if want_apparmor != 'false' and not ossfuzz
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400813 libapparmor = dependency('libapparmor',
814 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200815 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400816else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200817 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400818 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400819endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200820conf.set10('HAVE_APPARMOR', have)
821m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400822
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400823smack_run_label = get_option('smack-run-label')
824if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400825 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
826 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400827endif
828
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400829want_polkit = get_option('polkit')
830install_polkit = false
831install_polkit_pkla = false
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500832if want_polkit != 'false' and not ossfuzz
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400833 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400834
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400835 libpolkit = dependency('polkit-gobject-1',
836 required : false)
837 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
838 message('Old polkit detected, will install pkla files')
839 install_polkit_pkla = true
840 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400841endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200842conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400843
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400844want_acl = get_option('acl')
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500845if want_acl != 'false' and not ossfuzz
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400846 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200847 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400848else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200849 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400850 libacl = []
851endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200852conf.set10('HAVE_ACL', have)
853m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400854
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400855want_audit = get_option('audit')
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500856if want_audit != 'false' and not ossfuzz
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400857 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200858 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400859else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200860 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400861 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400862endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200863conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400864
865want_blkid = get_option('blkid')
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500866if want_blkid != 'false' and not ossfuzz
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400867 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200868 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400869else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200870 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400871 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400872endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200873conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400874
875want_kmod = get_option('kmod')
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500876if want_kmod != 'false' and not ossfuzz
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400877 libkmod = dependency('libkmod',
878 version : '>= 15',
879 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200880 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400881else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200882 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400883 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400884endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200885conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400886
887want_pam = get_option('pam')
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500888if want_pam != 'false' and not ossfuzz
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400889 libpam = cc.find_library('pam', required : want_pam == 'true')
890 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200891 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400892else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200893 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400894 libpam = []
895 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400896endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200897conf.set10('HAVE_PAM', have)
898m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400899
900want_microhttpd = get_option('microhttpd')
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500901if want_microhttpd != 'false' and not ossfuzz
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400902 libmicrohttpd = dependency('libmicrohttpd',
903 version : '>= 0.9.33',
904 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200905 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400906else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200907 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400908 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400909endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200910conf.set10('HAVE_MICROHTTPD', have)
911m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400912
913want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500914if want_libcryptsetup != 'false' and not ossfuzz
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400915 libcryptsetup = dependency('libcryptsetup',
916 version : '>= 1.6.0',
917 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200918 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400919else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200920 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400921 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400922endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200923conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400924
925want_libcurl = get_option('libcurl')
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500926if want_libcurl != 'false' and not ossfuzz
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400927 libcurl = dependency('libcurl',
928 version : '>= 7.32.0',
929 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200930 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400931else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200932 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400933 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400934endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200935conf.set10('HAVE_LIBCURL', have)
936m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400937
938want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400939want_libidn2 = get_option('libidn2')
940if want_libidn == 'true' and want_libidn2 == 'true'
941 error('libidn and libidn2 cannot be requested simultaneously')
942endif
943
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500944if want_libidn != 'false' and want_libidn2 != 'true' and not ossfuzz
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400945 libidn = dependency('libidn',
946 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200947 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400948else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200949 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400950 libidn = []
951endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200952conf.set10('HAVE_LIBIDN', have)
953m4_defines += have ? ['-DHAVE_LIBIDN'] : []
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500954if not have and want_libidn2 != 'false' and not ossfuzz
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400955 # libidn is used for both libidn and libidn2 objects
956 libidn = dependency('libidn2',
957 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200958 have = libidn.found()
959else
960 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400961endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200962conf.set10('HAVE_LIBIDN2', have)
963m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400964
965want_libiptc = get_option('libiptc')
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500966if want_libiptc != 'false' and not ossfuzz
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400967 libiptc = dependency('libiptc',
968 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200969 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400970else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200971 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400972 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400973endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200974conf.set10('HAVE_LIBIPTC', have)
975m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400976
977want_qrencode = get_option('qrencode')
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500978if want_qrencode != 'false' and not ossfuzz
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400979 libqrencode = dependency('libqrencode',
980 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200981 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400982else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200983 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400984 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400985endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200986conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400987
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400988want_gcrypt = get_option('gcrypt')
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500989if want_gcrypt != 'false' and not ossfuzz
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400990 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
991 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200992 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400993else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200994 have = false
995endif
996if not have
997 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400998 libgcrypt = []
999 libgpg_error = []
1000endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001001conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001002
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001003want_gnutls = get_option('gnutls')
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001004if want_gnutls != 'false' and not ossfuzz
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001005 libgnutls = dependency('gnutls',
1006 version : '>= 3.1.4',
1007 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001008 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001009else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001010 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001011 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001012endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001013conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001014
1015want_elfutils = get_option('elfutils')
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001016if want_elfutils != 'false' and not ossfuzz
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001017 libdw = dependency('libdw',
1018 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001019 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001020else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001021 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001022 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001023endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001024conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001025
1026want_zlib = get_option('zlib')
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001027if want_zlib != 'false' and not ossfuzz
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001028 libz = dependency('zlib',
1029 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001030 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001031else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001032 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001033 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001034endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001035conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001036
1037want_bzip2 = get_option('bzip2')
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001038if want_bzip2 != 'false' and not ossfuzz
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001039 libbzip2 = cc.find_library('bz2',
1040 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001041 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001042else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001043 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001044 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001045endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001046conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001047
1048want_xz = get_option('xz')
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001049if want_xz != 'false' and not ossfuzz
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001050 libxz = dependency('liblzma',
1051 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001052 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001053else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001054 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001055 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001056endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001057conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001058
1059want_lz4 = get_option('lz4')
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001060if want_lz4 != 'false' and not ossfuzz
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001061 liblz4 = dependency('liblz4',
1062 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001063 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001064else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001065 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001066 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001067endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001068conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001069
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001070want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001071if want_xkbcommon != 'false' and not ossfuzz
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001072 libxkbcommon = dependency('xkbcommon',
1073 version : '>= 0.3.0',
1074 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001075 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001076else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001077 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001078 libxkbcommon = []
1079endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001081
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001082want_glib = get_option('glib')
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001083if want_glib != 'false' and not ossfuzz
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001084 libglib = dependency('glib-2.0',
1085 version : '>= 2.22.0',
1086 required : want_glib == 'true')
1087 libgobject = dependency('gobject-2.0',
1088 version : '>= 2.22.0',
1089 required : want_glib == 'true')
1090 libgio = dependency('gio-2.0',
1091 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001092 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001093else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001094 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001095 libglib = []
1096 libgobject = []
1097 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001098endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001099conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001100
1101want_dbus = get_option('dbus')
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001102if want_dbus != 'false' and not ossfuzz
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001103 libdbus = dependency('dbus-1',
1104 version : '>= 1.3.2',
1105 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001106 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001107else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001108 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001109 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001110endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001111conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001112
Yu Watanabe42303dc2017-06-18 05:22:32 +09001113default_dnssec = get_option('default-dnssec')
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001114if ossfuzz
1115 default_dnssec = 'no'
1116endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001117if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001118 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1119 default_dnssec = 'no'
1120endif
1121conf.set('DEFAULT_DNSSEC_MODE',
1122 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1123substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1124
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001125want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001126if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001127 have = (conf.get('HAVE_LIBCURL') == 1 and
1128 conf.get('HAVE_ZLIB') == 1 and
1129 conf.get('HAVE_BZIP2') == 1 and
1130 conf.get('HAVE_XZ') == 1 and
1131 conf.get('HAVE_GCRYPT') == 1)
1132 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001133 error('importd support was requested, but dependencies are not available')
1134 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001135else
1136 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001137endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001138conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001139
1140want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001141if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001142 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1143 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001144 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1145 # it's possible to build one without the other. Complain only if
1146 # support was explictly requested. The auxiliary files like sysusers
1147 # config should be installed when any of the programs are built.
1148 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1149 error('remote support was requested, but dependencies are not available')
1150 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001151 have = have_deps[0] or have_deps[1]
1152else
1153 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001154endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001155conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001156
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001157foreach term : ['utmp',
1158 'hibernate',
1159 'environment-d',
1160 'binfmt',
1161 'coredump',
1162 'resolve',
1163 'logind',
1164 'hostnamed',
1165 'localed',
1166 'machined',
1167 'networkd',
1168 'timedated',
1169 'timesyncd',
1170 'myhostname',
1171 'firstboot',
1172 'randomseed',
1173 'backlight',
1174 'vconsole',
1175 'quotacheck',
1176 'sysusers',
1177 'tmpfiles',
1178 'hwdb',
1179 'rfkill',
1180 'ldconfig',
1181 'efi',
1182 'tpm',
1183 'ima',
1184 'smack',
1185 'gshadow',
1186 'idn',
1187 'nss-systemd']
1188 have = get_option(term)
1189 name = 'ENABLE_' + term.underscorify().to_upper()
1190 conf.set10(name, have)
1191 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001192endforeach
1193
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001194want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001195install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001196tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001197fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001198
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001199conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', get_option('slow-tests'))
1200
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001201#####################################################################
1202
1203if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001204 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001205
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001206 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001207 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001208 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001209 elif efi_arch == 'x86_64'
1210 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001211 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001212 elif efi_arch == 'arm'
1213 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001214 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001215 elif efi_arch == 'aarch64'
1216 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001217 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001218 else
1219 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001220 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001221 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001222
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001223 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001224 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001225
1226 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001227else
1228 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001229endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001230conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001231
1232#####################################################################
1233
1234config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001235 output : 'config.h',
1236 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001237
1238includes = include_directories('src/basic',
1239 'src/shared',
1240 'src/systemd',
1241 'src/journal',
1242 'src/resolve',
1243 'src/timesync',
1244 'src/login',
1245 'src/udev',
1246 'src/libudev',
1247 'src/core',
1248 'src/libsystemd/sd-bus',
1249 'src/libsystemd/sd-device',
1250 'src/libsystemd/sd-hwdb',
1251 'src/libsystemd/sd-id128',
1252 'src/libsystemd/sd-netlink',
1253 'src/libsystemd/sd-network',
1254 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001255 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001256
1257add_project_arguments('-include', 'config.h', language : 'c')
1258
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001259subdir('po')
1260subdir('catalog')
1261subdir('src/systemd')
1262subdir('src/basic')
1263subdir('src/libsystemd')
1264subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001265subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001266subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001267
1268libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001269 'journal-core',
1270 libjournal_core_sources,
1271 journald_gperf_c,
1272 include_directories : includes,
1273 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001274
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001275libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001276libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001277 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001278 '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 +02001279 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001280 include_directories : includes,
1281 link_args : ['-shared',
1282 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001283 link_with : [libbasic,
1284 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001285 link_whole : [libsystemd_static,
1286 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001287 dependencies : [threads,
1288 librt,
1289 libxz,
1290 liblz4],
1291 link_depends : libsystemd_sym,
1292 install : true,
1293 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001294
1295############################################################
1296
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001297# binaries that have --help and are intended for use by humans,
1298# usually, but not always, installed in /bin.
1299public_programs = []
1300
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001301subdir('src/libudev')
1302subdir('src/shared')
1303subdir('src/core')
1304subdir('src/udev')
1305subdir('src/network')
1306
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001307subdir('src/analyze')
1308subdir('src/journal-remote')
1309subdir('src/coredump')
1310subdir('src/hostname')
1311subdir('src/import')
1312subdir('src/kernel-install')
1313subdir('src/locale')
1314subdir('src/machine')
1315subdir('src/nspawn')
1316subdir('src/resolve')
1317subdir('src/timedate')
1318subdir('src/timesync')
1319subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001320subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001321
1322subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001323subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001324subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001325subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001326
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001327############################################################
1328
1329# only static linking apart from libdl, to make sure that the
1330# module is linked to all libraries that it uses.
1331test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001332 'test-dlopen',
1333 test_dlopen_c,
1334 include_directories : includes,
1335 link_with : [libbasic],
1336 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001337
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001338foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001339 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001340 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001341 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001342
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001343 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001344 if condition
1345 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001346
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001347 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1348 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001349
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001350 nss = shared_library(
1351 'nss_' + module,
1352 'src/nss-@0@/nss-@0@.c'.format(module),
1353 version : '2',
1354 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001355 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1356 link_args : ['-Wl,-z,nodelete',
1357 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001358 '-Wl,--version-script=' + version_script_arg,
1359 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001360 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001361 libbasic],
1362 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001363 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001364 link_depends : sym,
1365 install : true,
1366 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001367
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001368 # We cannot use shared_module because it does not support version suffix.
1369 # Unfortunately shared_library insists on creating the symlink…
1370 meson.add_install_script('sh', '-c',
1371 'rm $DESTDIR@0@/libnss_@1@.so'
1372 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001373
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001374 test('dlopen-nss_' + module,
1375 test_dlopen,
1376 args : [nss.full_path()]) # path to dlopen must include a slash
1377 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001378endforeach
1379
1380############################################################
1381
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001382executable('systemd',
1383 systemd_sources,
1384 include_directories : includes,
1385 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001386 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001387 dependencies : [threads,
1388 librt,
1389 libseccomp,
1390 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001391 libmount,
1392 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001393 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001394 install : true,
1395 install_dir : rootlibexecdir)
1396
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001397exe = executable('systemd-analyze',
1398 systemd_analyze_sources,
1399 include_directories : includes,
1400 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001401 libshared],
1402 dependencies : [threads,
1403 librt,
1404 libseccomp,
1405 libselinux,
1406 libmount,
1407 libblkid],
1408 install_rpath : rootlibexecdir,
1409 install : true)
1410public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001411
1412executable('systemd-journald',
1413 systemd_journald_sources,
1414 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001415 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001416 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001417 dependencies : [threads,
1418 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001419 liblz4,
1420 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001421 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001422 install : true,
1423 install_dir : rootlibexecdir)
1424
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001425exe = executable('systemd-cat',
1426 systemd_cat_sources,
1427 include_directories : includes,
1428 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001429 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001430 dependencies : [threads],
1431 install_rpath : rootlibexecdir,
1432 install : true)
1433public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001434
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001435exe = executable('journalctl',
1436 journalctl_sources,
1437 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001438 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001439 dependencies : [threads,
1440 libqrencode,
1441 libxz,
1442 liblz4],
1443 install_rpath : rootlibexecdir,
1444 install : true,
1445 install_dir : rootbindir)
1446public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001447
1448executable('systemd-getty-generator',
1449 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001450 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001451 link_with : [libshared],
1452 install_rpath : rootlibexecdir,
1453 install : true,
1454 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001455
1456executable('systemd-debug-generator',
1457 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001458 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001459 link_with : [libshared],
1460 install_rpath : rootlibexecdir,
1461 install : true,
1462 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001463
1464executable('systemd-fstab-generator',
1465 'src/fstab-generator/fstab-generator.c',
1466 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001467 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001468 link_with : [libshared],
1469 install_rpath : rootlibexecdir,
1470 install : true,
1471 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001472
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001473if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001474 executable('30-systemd-environment-d-generator',
1475 'src/environment-d-generator/environment-d-generator.c',
1476 include_directories : includes,
1477 link_with : [libshared],
1478 install_rpath : rootlibexecdir,
1479 install : true,
1480 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001481
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001482 meson.add_install_script(meson_make_symlink,
1483 join_paths(sysconfdir, 'environment'),
1484 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001485endif
1486
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001487if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001488 executable('systemd-hibernate-resume-generator',
1489 'src/hibernate-resume/hibernate-resume-generator.c',
1490 include_directories : includes,
1491 link_with : [libshared],
1492 install_rpath : rootlibexecdir,
1493 install : true,
1494 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001495
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001496 executable('systemd-hibernate-resume',
1497 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001498 include_directories : includes,
1499 link_with : [libshared],
1500 install_rpath : rootlibexecdir,
1501 install : true,
1502 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001503endif
1504
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001505if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001506 executable('systemd-gpt-auto-generator',
1507 'src/gpt-auto-generator/gpt-auto-generator.c',
1508 'src/basic/blkid-util.h',
1509 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001510 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001511 dependencies : libblkid,
1512 install_rpath : rootlibexecdir,
1513 install : true,
1514 install_dir : systemgeneratordir)
1515
1516 exe = executable('systemd-dissect',
1517 'src/dissect/dissect.c',
1518 include_directories : includes,
1519 link_with : [libshared],
1520 install_rpath : rootlibexecdir,
1521 install : true,
1522 install_dir : rootlibexecdir)
1523 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001524endif
1525
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001526if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001527 executable('systemd-resolved',
1528 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001529 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001530 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001531 libbasic_gcrypt,
1532 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001533 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001534 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001535 libm,
1536 libidn],
1537 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001538 install : true,
1539 install_dir : rootlibexecdir)
1540
1541 exe = executable('systemd-resolve',
1542 systemd_resolve_sources,
1543 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001544 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001545 libbasic_gcrypt,
1546 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001547 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001548 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001549 libm,
1550 libidn],
1551 install_rpath : rootlibexecdir,
1552 install : true)
1553 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001554endif
1555
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001556if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001557 executable('systemd-logind',
1558 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001559 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001560 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001561 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001562 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001563 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001564 install_rpath : rootlibexecdir,
1565 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001566 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001567
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001568 exe = executable('loginctl',
1569 loginctl_sources,
1570 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001571 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001572 dependencies : [threads,
1573 liblz4,
1574 libxz],
1575 install_rpath : rootlibexecdir,
1576 install : true,
1577 install_dir : rootbindir)
1578 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001579
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001580 exe = executable('systemd-inhibit',
1581 'src/login/inhibit.c',
1582 include_directories : includes,
1583 link_with : [libshared],
1584 install_rpath : rootlibexecdir,
1585 install : true,
1586 install_dir : rootbindir)
1587 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001588
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001589 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001590 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1591 pam_systemd = shared_library(
1592 'pam_systemd',
1593 pam_systemd_c,
1594 name_prefix : '',
1595 include_directories : includes,
1596 link_args : ['-shared',
1597 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001598 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001599 libshared_static],
1600 dependencies : [threads,
1601 libpam,
1602 libpam_misc],
1603 link_depends : pam_systemd_sym,
1604 install : true,
1605 install_dir : pamlibdir)
1606
1607 test('dlopen-pam_systemd',
1608 test_dlopen,
1609 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1610 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001611endif
1612
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001613if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001614 executable('systemd-user-sessions',
1615 'src/user-sessions/user-sessions.c',
1616 include_directories : includes,
1617 link_with : [libshared],
1618 install_rpath : rootlibexecdir,
1619 install : true,
1620 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001621endif
1622
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001623if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001624 exe = executable('bootctl',
1625 'src/boot/bootctl.c',
1626 include_directories : includes,
1627 link_with : [libshared],
1628 dependencies : [libblkid],
1629 install_rpath : rootlibexecdir,
1630 install : true)
1631 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001632endif
1633
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001634exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1635 include_directories : includes,
1636 link_with : [libshared],
1637 dependencies : [threads],
1638 install_rpath : rootlibexecdir,
1639 install : true)
1640public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001641
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001642exe = executable('systemctl', 'src/systemctl/systemctl.c',
1643 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001644 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001645 dependencies : [threads,
1646 libcap,
1647 libselinux,
1648 libxz,
1649 liblz4],
1650 install_rpath : rootlibexecdir,
1651 install : true,
1652 install_dir : rootbindir)
1653public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001654
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001655if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001656 executable('systemd-backlight',
1657 'src/backlight/backlight.c',
1658 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001659 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001660 install_rpath : rootlibexecdir,
1661 install : true,
1662 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001663endif
1664
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001665if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001666 executable('systemd-rfkill',
1667 'src/rfkill/rfkill.c',
1668 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001669 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001670 install_rpath : rootlibexecdir,
1671 install : true,
1672 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001673endif
1674
1675executable('systemd-system-update-generator',
1676 'src/system-update-generator/system-update-generator.c',
1677 include_directories : includes,
1678 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001679 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001680 install : true,
1681 install_dir : systemgeneratordir)
1682
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001683if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001684 executable('systemd-cryptsetup',
1685 'src/cryptsetup/cryptsetup.c',
1686 include_directories : includes,
1687 link_with : [libshared],
1688 dependencies : [libcryptsetup],
1689 install_rpath : rootlibexecdir,
1690 install : true,
1691 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001692
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001693 executable('systemd-cryptsetup-generator',
1694 'src/cryptsetup/cryptsetup-generator.c',
1695 include_directories : includes,
1696 link_with : [libshared],
1697 dependencies : [libcryptsetup],
1698 install_rpath : rootlibexecdir,
1699 install : true,
1700 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001701
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001702 executable('systemd-veritysetup',
1703 'src/veritysetup/veritysetup.c',
1704 include_directories : includes,
1705 link_with : [libshared],
1706 dependencies : [libcryptsetup],
1707 install_rpath : rootlibexecdir,
1708 install : true,
1709 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001710
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001711 executable('systemd-veritysetup-generator',
1712 'src/veritysetup/veritysetup-generator.c',
1713 include_directories : includes,
1714 link_with : [libshared],
1715 dependencies : [libcryptsetup],
1716 install_rpath : rootlibexecdir,
1717 install : true,
1718 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001719endif
1720
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001721if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001722 executable('systemd-sysv-generator',
1723 'src/sysv-generator/sysv-generator.c',
1724 include_directories : includes,
1725 link_with : [libshared],
1726 install_rpath : rootlibexecdir,
1727 install : true,
1728 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001729
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001730 executable('systemd-rc-local-generator',
1731 'src/rc-local-generator/rc-local-generator.c',
1732 include_directories : includes,
1733 link_with : [libshared],
1734 install_rpath : rootlibexecdir,
1735 install : true,
1736 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001737endif
1738
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001739if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001740 executable('systemd-hostnamed',
1741 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001742 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001743 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001744 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001745 install : true,
1746 install_dir : rootlibexecdir)
1747
1748 exe = executable('hostnamectl',
1749 'src/hostname/hostnamectl.c',
1750 include_directories : includes,
1751 link_with : [libshared],
1752 install_rpath : rootlibexecdir,
1753 install : true)
1754 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001755endif
1756
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001757if conf.get('ENABLE_LOCALED') == 1
1758 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001759 # logind will load libxkbcommon.so dynamically on its own
1760 deps = [libdl]
1761 else
1762 deps = []
1763 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001764
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001765 executable('systemd-localed',
1766 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001767 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001768 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001769 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001770 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001771 install : true,
1772 install_dir : rootlibexecdir)
1773
1774 exe = executable('localectl',
1775 localectl_sources,
1776 include_directories : includes,
1777 link_with : [libshared],
1778 install_rpath : rootlibexecdir,
1779 install : true)
1780 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001781endif
1782
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001783if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001784 executable('systemd-timedated',
1785 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001786 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001787 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001788 install_rpath : rootlibexecdir,
1789 install : true,
1790 install_dir : rootlibexecdir)
1791
1792 exe = executable('timedatectl',
1793 'src/timedate/timedatectl.c',
1794 include_directories : includes,
1795 install_rpath : rootlibexecdir,
1796 link_with : [libshared],
1797 install : true)
1798 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001799endif
1800
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001801if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001802 executable('systemd-timesyncd',
1803 systemd_timesyncd_sources,
1804 include_directories : includes,
1805 link_with : [libshared],
1806 dependencies : [threads,
1807 libm],
1808 install_rpath : rootlibexecdir,
1809 install : true,
1810 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001811endif
1812
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001813if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001814 executable('systemd-machined',
1815 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001816 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001817 link_with : [libmachine_core,
1818 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001819 install_rpath : rootlibexecdir,
1820 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001821 install_dir : rootlibexecdir)
1822
1823 exe = executable('machinectl',
1824 'src/machine/machinectl.c',
1825 include_directories : includes,
1826 link_with : [libshared],
1827 dependencies : [threads,
1828 libxz,
1829 liblz4],
1830 install_rpath : rootlibexecdir,
1831 install : true,
1832 install_dir : rootbindir)
1833 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001834endif
1835
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001836if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001837 executable('systemd-importd',
1838 systemd_importd_sources,
1839 include_directories : includes,
1840 link_with : [libshared],
1841 dependencies : [threads],
1842 install_rpath : rootlibexecdir,
1843 install : true,
1844 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001845
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001846 systemd_pull = executable('systemd-pull',
1847 systemd_pull_sources,
1848 include_directories : includes,
1849 link_with : [libshared],
1850 dependencies : [libcurl,
1851 libz,
1852 libbzip2,
1853 libxz,
1854 libgcrypt],
1855 install_rpath : rootlibexecdir,
1856 install : true,
1857 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001858
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001859 systemd_import = executable('systemd-import',
1860 systemd_import_sources,
1861 include_directories : includes,
1862 link_with : [libshared],
1863 dependencies : [libcurl,
1864 libz,
1865 libbzip2,
1866 libxz],
1867 install_rpath : rootlibexecdir,
1868 install : true,
1869 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001870
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001871 systemd_export = executable('systemd-export',
1872 systemd_export_sources,
1873 include_directories : includes,
1874 link_with : [libshared],
1875 dependencies : [libcurl,
1876 libz,
1877 libbzip2,
1878 libxz],
1879 install_rpath : rootlibexecdir,
1880 install : true,
1881 install_dir : rootlibexecdir)
1882 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001883endif
1884
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001885if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001886 exe = executable('systemd-journal-upload',
1887 systemd_journal_upload_sources,
1888 include_directories : includes,
1889 link_with : [libshared],
1890 dependencies : [threads,
1891 libcurl,
1892 libgnutls,
1893 libxz,
1894 liblz4],
1895 install_rpath : rootlibexecdir,
1896 install : true,
1897 install_dir : rootlibexecdir)
1898 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001899endif
1900
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001901if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001902 s_j_remote = executable('systemd-journal-remote',
1903 systemd_journal_remote_sources,
1904 include_directories : includes,
1905 link_with : [libshared],
1906 dependencies : [threads,
1907 libmicrohttpd,
1908 libgnutls,
1909 libxz,
1910 liblz4],
1911 install_rpath : rootlibexecdir,
1912 install : true,
1913 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001914
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001915 s_j_gatewayd = executable('systemd-journal-gatewayd',
1916 systemd_journal_gatewayd_sources,
1917 include_directories : includes,
1918 link_with : [libshared],
1919 dependencies : [threads,
1920 libmicrohttpd,
1921 libgnutls,
1922 libxz,
1923 liblz4],
1924 install_rpath : rootlibexecdir,
1925 install : true,
1926 install_dir : rootlibexecdir)
1927 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001928endif
1929
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001930if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001931 executable('systemd-coredump',
1932 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001933 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001934 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001935 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001936 libacl,
1937 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001938 libxz,
1939 liblz4],
1940 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001941 install : true,
1942 install_dir : rootlibexecdir)
1943
1944 exe = executable('coredumpctl',
1945 coredumpctl_sources,
1946 include_directories : includes,
1947 link_with : [libshared],
1948 dependencies : [threads,
1949 libxz,
1950 liblz4],
1951 install_rpath : rootlibexecdir,
1952 install : true)
1953 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001954endif
1955
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001956if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001957 exe = executable('systemd-binfmt',
1958 'src/binfmt/binfmt.c',
1959 include_directories : includes,
1960 link_with : [libshared],
1961 install_rpath : rootlibexecdir,
1962 install : true,
1963 install_dir : rootlibexecdir)
1964 public_programs += [exe]
1965
1966 meson.add_install_script('sh', '-c',
1967 mkdir_p.format(binfmtdir))
1968 meson.add_install_script('sh', '-c',
1969 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
1970endif
1971
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001972if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001973 executable('systemd-vconsole-setup',
1974 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001975 include_directories : includes,
1976 link_with : [libshared],
1977 install_rpath : rootlibexecdir,
1978 install : true,
1979 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001980endif
1981
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001982if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001983 executable('systemd-random-seed',
1984 'src/random-seed/random-seed.c',
1985 include_directories : includes,
1986 link_with : [libshared],
1987 install_rpath : rootlibexecdir,
1988 install : true,
1989 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001990endif
1991
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001992if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001993 executable('systemd-firstboot',
1994 'src/firstboot/firstboot.c',
1995 include_directories : includes,
1996 link_with : [libshared],
1997 dependencies : [libcrypt],
1998 install_rpath : rootlibexecdir,
1999 install : true,
2000 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002001endif
2002
2003executable('systemd-remount-fs',
2004 'src/remount-fs/remount-fs.c',
2005 'src/core/mount-setup.c',
2006 'src/core/mount-setup.h',
2007 include_directories : includes,
2008 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002009 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002010 install : true,
2011 install_dir : rootlibexecdir)
2012
2013executable('systemd-machine-id-setup',
2014 'src/machine-id-setup/machine-id-setup-main.c',
2015 'src/core/machine-id-setup.c',
2016 'src/core/machine-id-setup.h',
2017 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002018 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002019 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002020 install : true,
2021 install_dir : rootbindir)
2022
2023executable('systemd-fsck',
2024 'src/fsck/fsck.c',
2025 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002026 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002027 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002028 install : true,
2029 install_dir : rootlibexecdir)
2030
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002031executable('systemd-growfs',
2032 'src/partition/growfs.c',
2033 include_directories : includes,
2034 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002035 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002036 install_rpath : rootlibexecdir,
2037 install : true,
2038 install_dir : rootlibexecdir)
2039
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002040executable('systemd-makefs',
2041 'src/partition/makefs.c',
2042 include_directories : includes,
2043 link_with : [libshared],
2044 install_rpath : rootlibexecdir,
2045 install : true,
2046 install_dir : rootlibexecdir)
2047
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002048executable('systemd-sleep',
2049 'src/sleep/sleep.c',
2050 include_directories : includes,
2051 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002052 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002053 install : true,
2054 install_dir : rootlibexecdir)
2055
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002056exe = executable('systemd-sysctl',
2057 'src/sysctl/sysctl.c',
2058 include_directories : includes,
2059 link_with : [libshared],
2060 install_rpath : rootlibexecdir,
2061 install : true,
2062 install_dir : rootlibexecdir)
2063public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002064
2065executable('systemd-ac-power',
2066 'src/ac-power/ac-power.c',
2067 include_directories : includes,
2068 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002069 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002070 install : true,
2071 install_dir : rootlibexecdir)
2072
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002073exe = executable('systemd-detect-virt',
2074 'src/detect-virt/detect-virt.c',
2075 include_directories : includes,
2076 link_with : [libshared],
2077 install_rpath : rootlibexecdir,
2078 install : true)
2079public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002080
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002081exe = executable('systemd-delta',
2082 'src/delta/delta.c',
2083 include_directories : includes,
2084 link_with : [libshared],
2085 install_rpath : rootlibexecdir,
2086 install : true)
2087public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002088
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002089exe = executable('systemd-escape',
2090 'src/escape/escape.c',
2091 include_directories : includes,
2092 link_with : [libshared],
2093 install_rpath : rootlibexecdir,
2094 install : true,
2095 install_dir : rootbindir)
2096public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002097
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002098exe = executable('systemd-notify',
2099 'src/notify/notify.c',
2100 include_directories : includes,
2101 link_with : [libshared],
2102 install_rpath : rootlibexecdir,
2103 install : true,
2104 install_dir : rootbindir)
2105public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002106
2107executable('systemd-volatile-root',
2108 'src/volatile-root/volatile-root.c',
2109 include_directories : includes,
2110 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002111 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002112 install : true,
2113 install_dir : rootlibexecdir)
2114
2115executable('systemd-cgroups-agent',
2116 'src/cgroups-agent/cgroups-agent.c',
2117 include_directories : includes,
2118 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002119 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002120 install : true,
2121 install_dir : rootlibexecdir)
2122
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002123exe = executable('systemd-path',
2124 'src/path/path.c',
2125 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002126 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002127 install_rpath : rootlibexecdir,
2128 install : true)
2129public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002130
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002131exe = executable('systemd-ask-password',
2132 'src/ask-password/ask-password.c',
2133 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002134 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002135 install_rpath : rootlibexecdir,
2136 install : true,
2137 install_dir : rootbindir)
2138public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002139
2140executable('systemd-reply-password',
2141 'src/reply-password/reply-password.c',
2142 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002143 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-tty-ask-password-agent',
2149 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2150 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002151 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002152 install_rpath : rootlibexecdir,
2153 install : true,
2154 install_dir : rootbindir)
2155public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002156
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002157exe = executable('systemd-cgls',
2158 'src/cgls/cgls.c',
2159 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002160 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002161 install_rpath : rootlibexecdir,
2162 install : true)
2163public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002164
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002165exe = executable('systemd-cgtop',
2166 'src/cgtop/cgtop.c',
2167 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002168 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002169 install_rpath : rootlibexecdir,
2170 install : true)
2171public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002172
2173executable('systemd-initctl',
2174 'src/initctl/initctl.c',
2175 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002176 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002177 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002178 install : true,
2179 install_dir : rootlibexecdir)
2180
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002181exe = executable('systemd-mount',
2182 'src/mount/mount-tool.c',
2183 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002184 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002185 install_rpath : rootlibexecdir,
2186 install : true)
2187public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002188
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002189meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002190 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002191
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002192exe = executable('systemd-run',
2193 'src/run/run.c',
2194 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002195 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002196 install_rpath : rootlibexecdir,
2197 install : true)
2198public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002199
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002200exe = executable('systemd-stdio-bridge',
2201 'src/stdio-bridge/stdio-bridge.c',
2202 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002203 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002204 install_rpath : rootlibexecdir,
2205 install : true)
2206public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002207
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002208exe = executable('busctl',
2209 'src/busctl/busctl.c',
2210 'src/busctl/busctl-introspect.c',
2211 'src/busctl/busctl-introspect.h',
2212 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002213 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002214 install_rpath : rootlibexecdir,
2215 install : true)
2216public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002217
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002218if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002219 exe = executable('systemd-sysusers',
2220 'src/sysusers/sysusers.c',
2221 include_directories : includes,
2222 link_with : [libshared],
2223 install_rpath : rootlibexecdir,
2224 install : true,
2225 install_dir : rootbindir)
2226 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002227endif
2228
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002229if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002230 exe = executable('systemd-tmpfiles',
2231 'src/tmpfiles/tmpfiles.c',
2232 include_directories : includes,
2233 link_with : [libshared],
2234 dependencies : [libacl],
2235 install_rpath : rootlibexecdir,
2236 install : true,
2237 install_dir : rootbindir)
2238 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002239
2240 test('test-systemd-tmpfiles',
2241 test_systemd_tmpfiles_py,
2242 args : exe.full_path())
2243 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002244endif
2245
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002246if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002247 exe = executable('systemd-hwdb',
2248 'src/hwdb/hwdb.c',
2249 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2250 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002251 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002252 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002253 install : true,
2254 install_dir : rootbindir)
2255 public_programs += [exe]
2256endif
2257
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002258if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002259 executable('systemd-quotacheck',
2260 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002261 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002262 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002263 install_rpath : rootlibexecdir,
2264 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002265 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002266endif
2267
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002268exe = executable('systemd-socket-proxyd',
2269 'src/socket-proxy/socket-proxyd.c',
2270 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002271 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002272 dependencies : [threads],
2273 install_rpath : rootlibexecdir,
2274 install : true,
2275 install_dir : rootlibexecdir)
2276public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002277
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002278exe = executable('systemd-udevd',
2279 systemd_udevd_sources,
2280 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002281 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002282 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002283 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002284 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002285 dependencies : [threads,
2286 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002287 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002288 libacl,
2289 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002290 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002291 install : true,
2292 install_dir : rootlibexecdir)
2293public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002294
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002295exe = executable('udevadm',
2296 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002297 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002298 include_directories : includes,
2299 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002300 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002301 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002302 dependencies : [threads,
2303 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002304 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002305 libacl,
2306 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002307 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002308 install : true,
2309 install_dir : rootbindir)
2310public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002311
2312executable('systemd-shutdown',
2313 systemd_shutdown_sources,
2314 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002315 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002316 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002317 install : true,
2318 install_dir : rootlibexecdir)
2319
2320executable('systemd-update-done',
2321 'src/update-done/update-done.c',
2322 include_directories : includes,
2323 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002324 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002325 install : true,
2326 install_dir : rootlibexecdir)
2327
2328executable('systemd-update-utmp',
2329 'src/update-utmp/update-utmp.c',
2330 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002331 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002332 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002333 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002334 install : true,
2335 install_dir : rootlibexecdir)
2336
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002337if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002338 executable('systemd-modules-load',
2339 'src/modules-load/modules-load.c',
2340 include_directories : includes,
2341 link_with : [libshared],
2342 dependencies : [libkmod],
2343 install_rpath : rootlibexecdir,
2344 install : true,
2345 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002346
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002347 meson.add_install_script('sh', '-c',
2348 mkdir_p.format(modulesloaddir))
2349 meson.add_install_script('sh', '-c',
2350 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002351endif
2352
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002353exe = executable('systemd-nspawn',
2354 systemd_nspawn_sources,
2355 'src/core/mount-setup.c', # FIXME: use a variable?
2356 'src/core/mount-setup.h',
2357 'src/core/loopback-setup.c',
2358 'src/core/loopback-setup.h',
2359 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002360 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002361 dependencies : [libacl,
2362 libblkid,
2363 libseccomp,
2364 libselinux],
2365 install_rpath : rootlibexecdir,
2366 install : true)
2367public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002368
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002369if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002370 executable('systemd-networkd',
2371 systemd_networkd_sources,
2372 include_directories : includes,
2373 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002374 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002375 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002376 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002377 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002378 install_rpath : rootlibexecdir,
2379 install : true,
2380 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002381
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002382 executable('systemd-networkd-wait-online',
2383 systemd_networkd_wait_online_sources,
2384 include_directories : includes,
2385 link_with : [libnetworkd_core,
2386 libshared],
2387 install_rpath : rootlibexecdir,
2388 install : true,
2389 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002390
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002391 exe = executable('networkctl',
2392 networkctl_sources,
2393 include_directories : includes,
2394 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002395 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002396 install_rpath : rootlibexecdir,
2397 install : true,
2398 install_dir : rootbindir)
2399 public_programs += [exe]
2400endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002401
2402executable('systemd-sulogin-shell',
2403 ['src/sulogin-shell/sulogin-shell.c'],
2404 include_directories : includes,
2405 link_with : [libshared],
2406 install_rpath : rootlibexecdir,
2407 install : true,
2408 install_dir : rootlibexecdir)
2409
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002410############################################################
2411
2412foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002413 sources = tuple[0]
2414 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2415 dependencies = tuple[2]
2416 condition = tuple.length() >= 4 ? tuple[3] : ''
2417 type = tuple.length() >= 5 ? tuple[4] : ''
2418 defs = tuple.length() >= 6 ? tuple[5] : []
2419 incs = tuple.length() >= 7 ? tuple[6] : includes
2420 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002421
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002422 name = sources[0].split('/')[-1].split('.')[0]
2423 if type.startswith('timeout=')
2424 timeout = type.split('=')[1].to_int()
2425 type = ''
2426 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002427 if want_tests == 'false'
2428 message('Not compiling @0@ because tests is set to false'.format(name))
2429 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002430 exe = executable(
2431 name,
2432 sources,
2433 include_directories : incs,
2434 link_with : link_with,
2435 dependencies : dependencies,
2436 c_args : defs,
2437 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002438 install : install_tests,
2439 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002440
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002441 if type == 'manual'
2442 message('@0@ is a manual test'.format(name))
2443 elif type == 'unsafe' and want_tests != 'unsafe'
2444 message('@0@ is an unsafe test'.format(name))
2445 else
2446 test(name, exe,
2447 env : test_env,
2448 timeout : timeout)
2449 endif
2450 else
2451 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2452 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002453endforeach
2454
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002455test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002456 'test-libsystemd-sym',
2457 test_libsystemd_sym_c,
2458 include_directories : includes,
2459 link_with : [libsystemd],
2460 install : install_tests,
2461 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002462test('test-libsystemd-sym',
2463 test_libsystemd_sym)
2464
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002465test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002466 'test-libudev-sym',
2467 test_libudev_sym_c,
2468 include_directories : includes,
2469 c_args : ['-Wno-deprecated-declarations'],
2470 link_with : [libudev],
2471 install : install_tests,
2472 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002473test('test-libudev-sym',
2474 test_libudev_sym)
2475
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002476############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002477
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002478fuzzer_exes = []
2479
2480foreach tuple : fuzzers
2481 sources = tuple[0]
2482 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2483 dependencies = tuple[2]
2484 defs = tuple.length() >= 4 ? tuple[3] : []
2485 incs = tuple.length() >= 5 ? tuple[4] : includes
2486
2487 if ossfuzz
2488 dependencies += fuzzing_engine
2489 else
2490 sources += 'src/fuzz/fuzz-main.c'
2491 endif
2492
2493 name = sources[0].split('/')[-1].split('.')[0]
2494
2495 fuzzer_exes += executable(
2496 name,
2497 sources,
2498 include_directories : [incs, include_directories('src/fuzz')],
2499 link_with : link_with,
2500 dependencies : dependencies,
2501 c_args : defs,
2502 install : false)
2503endforeach
2504
2505run_target('fuzzers',
2506 depends : fuzzer_exes,
2507 command : ['true'])
2508
2509############################################################
2510
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002511make_directive_index_py = find_program('tools/make-directive-index.py')
2512make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002513xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002514hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002515
2516subdir('units')
2517subdir('sysctl.d')
2518subdir('sysusers.d')
2519subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002520subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002521subdir('hwdb')
2522subdir('network')
2523subdir('man')
2524subdir('shell-completion/bash')
2525subdir('shell-completion/zsh')
2526subdir('docs/sysvinit')
2527subdir('docs/var-log')
2528
2529# FIXME: figure out if the warning is true:
2530# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2531install_subdir('factory/etc',
2532 install_dir : factorydir)
2533
2534
2535install_data('xorg/50-systemd-user.sh',
2536 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002537install_data('modprobe.d/systemd.conf',
2538 install_dir : modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002539install_data('README',
2540 'NEWS',
2541 'CODING_STYLE',
2542 'DISTRO_PORTING',
2543 'ENVIRONMENT.md',
2544 'LICENSE.GPL2',
2545 'LICENSE.LGPL2.1',
Felipe Satelerf9f54412017-12-18 10:58:13 -03002546 'TRANSIENT-SETTINGS.md',
2547 'UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002548 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2549 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002550
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002551meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2552meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2553
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002554############################################################
2555
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002556meson_check_help = find_program('tools/meson-check-help.sh')
2557
2558foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002559 name = exec.full_path().split('/')[-1]
2560 test('check-help-' + name,
2561 meson_check_help,
2562 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002563endforeach
2564
2565############################################################
2566
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002567if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002568 all_files = run_command(
2569 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002570 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002571 'ls-files',
2572 ':/*.[ch]'])
2573 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002574
userwithuide85a6902017-08-09 13:41:44 +00002575 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002576 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002577 output : 'tags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002578 command : ['env', 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002579 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002580 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002581 output : 'ctags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002582 command : ['env', 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002583endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002584
2585if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002586 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002587 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002588 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002589 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002590endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002591
2592if git.found()
2593 git_head = run_command(
2594 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002595 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002596 'rev-parse', 'HEAD']).stdout().strip()
2597 git_head_short = run_command(
2598 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002599 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002600 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2601
2602 run_target(
2603 'git-snapshot',
2604 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002605 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002606 git_head_short),
2607 '--prefix', 'systemd-@0@/'.format(git_head),
2608 'HEAD'])
2609endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002610
2611############################################################
2612
Lennart Poettering51b13862017-12-20 12:51:14 +01002613meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2614run_target(
2615 'check-api-docs',
2616 depends : [man, libsystemd, libudev],
2617 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2618
2619############################################################
2620
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002621status = [
2622 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2623
Yu Watanabe359b4962017-11-25 20:35:24 +09002624 'prefix directory: @0@'.format(prefixdir),
2625 'rootprefix directory: @0@'.format(rootprefixdir),
2626 'sysconf directory: @0@'.format(sysconfdir),
2627 'include directory: @0@'.format(includedir),
2628 'lib directory: @0@'.format(libdir),
2629 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002630 'SysV init scripts: @0@'.format(sysvinit_path),
2631 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002632 'PAM modules directory: @0@'.format(pamlibdir),
2633 'PAM configuration directory: @0@'.format(pamconfdir),
2634 'RPM macros directory: @0@'.format(rpmmacrosdir),
2635 'modprobe.d directory: @0@'.format(modprobedir),
2636 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2637 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2638 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2639 'bash completions directory: @0@'.format(bashcompletiondir),
2640 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002641 'extra start script: @0@'.format(get_option('rc-local')),
2642 'extra stop script: @0@'.format(get_option('halt-local')),
2643 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2644 get_option('debug-tty')),
2645 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002646 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002647 'maximum system UID: @0@'.format(system_uid_max),
2648 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002649 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2650 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2651 'minimum container UID base: @0@'.format(container_uid_base_min),
2652 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002653 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002654 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002655 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002656 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002657 'nobody user name: @0@'.format(nobody_user),
2658 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002659 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002660 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002661
2662 'default DNSSEC mode: @0@'.format(default_dnssec),
2663 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2664 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2665
2666alt_dns_servers = '\n '.join(dns_servers.split(' '))
2667alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2668status += [
2669 'default DNS servers: @0@'.format(alt_dns_servers),
2670 'default NTP servers: @0@'.format(alt_ntp_servers)]
2671
2672alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2673 '@@0@'.format(time_epoch)).stdout().strip()
2674status += [
2675 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2676
2677# TODO:
2678# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2679# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2680# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2681
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002682if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002683 status += [
2684 'efi arch: @0@'.format(efi_arch)]
2685
2686 if have_gnu_efi
2687 status += [
2688 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2689 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002690 'EFI lib directory: @0@'.format(efi_libdir),
2691 'EFI lds directory: @0@'.format(efi_ldsdir),
2692 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002693 endif
2694endif
2695
2696found = []
2697missing = []
2698
2699foreach tuple : [
2700 ['libcryptsetup'],
2701 ['PAM'],
2702 ['AUDIT'],
2703 ['IMA'],
2704 ['AppArmor'],
2705 ['SELinux'],
2706 ['SECCOMP'],
2707 ['SMACK'],
2708 ['zlib'],
2709 ['xz'],
2710 ['lz4'],
2711 ['bzip2'],
2712 ['ACL'],
2713 ['gcrypt'],
2714 ['qrencode'],
2715 ['microhttpd'],
2716 ['gnutls'],
2717 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002718 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002719 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002720 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002721 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002722 ['libiptc'],
2723 ['elfutils'],
2724 ['binfmt'],
2725 ['vconsole'],
2726 ['quotacheck'],
2727 ['tmpfiles'],
2728 ['environment.d'],
2729 ['sysusers'],
2730 ['firstboot'],
2731 ['randomseed'],
2732 ['backlight'],
2733 ['rfkill'],
2734 ['logind'],
2735 ['machined'],
2736 ['importd'],
2737 ['hostnamed'],
2738 ['timedated'],
2739 ['timesyncd'],
2740 ['localed'],
2741 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002742 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002743 ['coredump'],
2744 ['polkit'],
2745 ['legacy pkla', install_polkit_pkla],
2746 ['efi'],
2747 ['gnu-efi', have_gnu_efi],
2748 ['kmod'],
2749 ['xkbcommon'],
2750 ['blkid'],
2751 ['dbus'],
2752 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002753 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002754 ['hwdb'],
2755 ['tpm'],
2756 ['man pages', want_man],
2757 ['html pages', want_html],
2758 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002759 ['split /usr', conf.get('HAVE_SPLIT_USR') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002760 ['SysV compat'],
2761 ['utmp'],
2762 ['ldconfig'],
2763 ['hibernate'],
2764 ['adm group', get_option('adm-group')],
2765 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002766 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002767 ['debug hashmap'],
2768 ['debug mmap cache'],
2769]
2770
2771 cond = tuple.get(1, '')
2772 if cond == ''
2773 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2774 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002775 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002776 endif
2777 if cond
2778 found += [tuple[0]]
2779 else
2780 missing += [tuple[0]]
2781 endif
2782endforeach
2783
2784status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002785 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002786 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002787 '',
2788 'disabled features: @0@'.format(', '.join(missing)),
2789 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002790message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002791
2792if rootprefixdir != rootprefix_default
2793 message('WARNING:\n' +
2794 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2795 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2796 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2797endif