blob: 2e3898b3b14547d5c30c37054df125f4c4527337 [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 Rudenberg31e57a32018-01-16 10:25:43 -0500271want_ossfuzz = get_option('oss-fuzz')
272want_libfuzzer = get_option('llvm-fuzz')
273fuzzer_build = want_ossfuzz or want_libfuzzer
274if want_ossfuzz and want_libfuzzer
275 error('only one of oss-fuzz and llvm-fuzz can be specified')
276endif
277if want_libfuzzer
278 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
279endif
280if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500281 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
282endif
283
Zbigniew Jędrzejewski-Szmek75cf1d62017-07-04 17:59:15 -0400284foreach arg : ['-Wextra',
Zbigniew Jędrzejewski-Szmek70160ce2017-10-03 12:11:49 +0200285 '-Werror=undef',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400286 '-Wlogical-op',
287 '-Wmissing-include-dirs',
288 '-Wold-style-definition',
289 '-Wpointer-arith',
290 '-Winit-self',
291 '-Wdeclaration-after-statement',
292 '-Wfloat-equal',
293 '-Wsuggest-attribute=noreturn',
294 '-Werror=missing-prototypes',
295 '-Werror=implicit-function-declaration',
296 '-Werror=missing-declarations',
297 '-Werror=return-type',
298 '-Werror=incompatible-pointer-types',
299 '-Werror=format=2',
300 '-Wstrict-prototypes',
301 '-Wredundant-decls',
302 '-Wmissing-noreturn',
Zbigniew Jędrzejewski-Szmek97279d82017-11-20 14:23:40 +0100303 '-Wimplicit-fallthrough=5',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400304 '-Wshadow',
305 '-Wendif-labels',
306 '-Wstrict-aliasing=2',
307 '-Wwrite-strings',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400308 '-Werror=overflow',
309 '-Wdate-time',
310 '-Wnested-externs',
311 '-ffast-math',
312 '-fno-common',
313 '-fdiagnostics-show-option',
314 '-fno-strict-aliasing',
315 '-fvisibility=hidden',
316 '-fstack-protector',
317 '-fstack-protector-strong',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400318 '--param=ssp-buffer-size=4',
319 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400320 if cc.has_argument(arg)
321 add_project_arguments(arg, language : 'c')
322 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400323endforeach
324
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500325# the oss-fuzz fuzzers are not built with -fPIE, so don't
326# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500327if not fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500328 if cc.has_argument('-fPIE')
329 add_project_arguments('-fPIE', language : 'c')
330 endif
331endif
332
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400333# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
334# arguments, just emits a warnings. So test for the "positive" version instead.
335foreach arg : ['unused-parameter',
336 'missing-field-initializers',
337 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300338 'format-signedness',
339 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
340 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400341 if cc.has_argument('-W' + arg)
342 add_project_arguments('-Wno-' + arg, language : 'c')
343 endif
344endforeach
345
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400346if cc.compiles('
347 #include <time.h>
348 #include <inttypes.h>
349 typedef uint64_t usec_t;
350 usec_t now(clockid_t clock);
351 int main(void) {
352 struct timespec now;
353 return 0;
354 }
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400355', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400356 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400357endif
358
359if cc.get_id() == 'clang'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400360 foreach arg : ['-Wno-typedef-redefinition',
361 '-Wno-gnu-variable-sized-type-not-at-end',
362 ]
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400363 if cc.has_argument(arg,
364 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400365 add_project_arguments(arg, language : 'c')
366 endif
367 endforeach
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400368endif
369
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400370link_test_c = files('tools/meson-link-test.c')
371
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400372# --as-needed and --no-undefined are provided by meson by default,
373# run mesonconf to see what is enabled
374foreach arg : ['-Wl,-z,relro',
375 '-Wl,-z,now',
376 '-pie',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400377 ]
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400378
379 have = run_command(check_compilation_sh,
380 cc.cmd_array(), '-x', 'c', arg,
381 '-include', link_test_c).returncode() == 0
382 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500383 if have and (arg != '-pie' or not fuzzer_build)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400384 add_project_link_arguments(arg, language : 'c')
385 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400386endforeach
387
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400388if get_option('buildtype') != 'debug'
389 foreach arg : ['-ffunction-sections',
390 '-fdata-sections']
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400391 if cc.has_argument(arg,
392 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400393 add_project_arguments(arg, language : 'c')
394 endif
395 endforeach
396
397 foreach arg : ['-Wl,--gc-sections']
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400398 have = run_command(check_compilation_sh,
399 cc.cmd_array(), '-x', 'c', arg,
400 '-include', link_test_c).returncode() == 0
401 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
402 if have
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400403 add_project_link_arguments(arg, language : 'c')
404 endif
405 endforeach
406endif
407
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400408cpp = ' '.join(cc.cmd_array()) + ' -E'
409
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400410#####################################################################
411# compilation result tests
412
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400413conf.set('_GNU_SOURCE', true)
414conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400415
416conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
417conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
418conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
419conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
420conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
421conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
422conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
423
424decl_headers = '''
425#include <uchar.h>
426#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000427#include <linux/fib_rules.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400428'''
429# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
430
431foreach decl : ['char16_t',
432 'char32_t',
433 'key_serial_t',
434 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000435 'struct fib_rule_uid_range',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400436 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400437
438 # We get -1 if the size cannot be determined
439 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200440 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400441endforeach
442
443foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
444 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
445 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
446 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530447 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400448 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
449 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
450 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
451 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
452 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530453 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400454 # if_tunnel.h is buggy and cannot be included on its own
455 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
456 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
457 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
458 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
459 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
460 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
461 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530462 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400463 ['NDA_IFINDEX', 'linux/neighbour.h'],
464 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000465 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400466 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530467 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400468 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400469 prefix = decl.length() > 2 ? decl[2] : ''
470 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200471 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400472endforeach
473
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400474foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200475 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400476endforeach
477
478foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100479 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100480 ['gettid', '''#include <sys/types.h>
481 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100482 ['pivot_root', '''#include <stdlib.h>
483 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100484 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400485 #include <sys/stat.h>
486 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100487 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100488 ['renameat2', '''#include <stdio.h>
489 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400490 ['kcmp', '''#include <linux/kcmp.h>'''],
491 ['keyctl', '''#include <sys/types.h>
492 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100493 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400494 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200495 ['bpf', '''#include <sys/syscall.h>
496 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmek38f1ae02017-04-19 16:14:16 -0400497 ['explicit_bzero' , '''#include <string.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400498]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400499
Lennart Poettering85db59b2017-12-25 12:01:14 +0100500 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200501 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400502endforeach
503
Lennart Poettering85db59b2017-12-25 12:01:14 +0100504if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200505 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200506 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400507else
508 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200509 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200510 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400511endif
512
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400513#####################################################################
514
515sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400516awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400517m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400518stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400519git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400520
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400521meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400522mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400523test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
524splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400525
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400526# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
527# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500528progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400529 ['quotacheck', '/usr/sbin/quotacheck' ],
530 ['kill', '/usr/bin/kill' ],
531 ['kmod', '/usr/bin/kmod' ],
532 ['kexec', '/usr/sbin/kexec' ],
533 ['sulogin', '/usr/sbin/sulogin' ],
534 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
535 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
536 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
537 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
538 ]
539foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400540 path = get_option(prog[0] + '-path')
541 if path != ''
542 message('Using @1@ for @0@'.format(prog[0], path))
543 else
544 exe = find_program(prog[0],
545 '/usr/sbin/' + prog[0],
546 '/sbin/' + prog[0],
547 required: false)
548 path = exe.found() ? exe.path() : prog[1]
549 endif
550 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
551 conf.set_quoted(name, path)
552 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400553endforeach
554
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500555conf.set_quoted('TELINIT', get_option('telinit-path'))
556
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400557if run_command('ln', '--relative', '--help').returncode() != 0
558 error('ln does not support --relative')
559endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400560
561############################################################
562
563gperf = find_program('gperf')
564
565gperf_test_format = '''
566#include <string.h>
567const char * in_word_set(const char *, @0@);
568@1@
569'''
570gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
571gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
572gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
573if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400574 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400575else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400576 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
577 if cc.compiles(gperf_test)
578 gperf_len_type = 'unsigned'
579 else
580 error('unable to determine gperf len type')
581 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400582endif
583message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400584conf.set('GPERF_LEN_TYPE', gperf_len_type,
585 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400586
587############################################################
588
589if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400590 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400591endif
592foreach header : ['linux/btrfs.h',
593 'linux/memfd.h',
594 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200595 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400596 'valgrind/memcheck.h',
597 'valgrind/valgrind.h',
598 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400599
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200600 conf.set10('HAVE_' + header.underscorify().to_upper(),
601 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400602endforeach
603
604############################################################
605
606conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400607conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
608gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400609
610default_hierarchy = get_option('default-hierarchy')
611conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
612 description : 'default cgroup hierarchy as string')
613if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400614 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400615elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400616 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400617else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400618 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400619endif
620
621time_epoch = get_option('time-epoch')
622if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400623 NEWS = files('NEWS')
624 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400625endif
626time_epoch = time_epoch.to_int()
627conf.set('TIME_EPOCH', time_epoch)
628
629system_uid_max = get_option('system-uid-max')
630if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400631 system_uid_max = run_command(
632 awk,
633 'BEGIN { uid=999 } /^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
634 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400635endif
636system_uid_max = system_uid_max.to_int()
637conf.set('SYSTEM_UID_MAX', system_uid_max)
638substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400639message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400640
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400641system_gid_max = get_option('system-gid-max')
642if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400643 system_gid_max = run_command(
644 awk,
645 'BEGIN { gid=999 } /^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
646 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400647endif
648system_gid_max = system_gid_max.to_int()
649conf.set('SYSTEM_GID_MAX', system_gid_max)
650substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400651message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400652
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100653dynamic_uid_min = get_option('dynamic-uid-min').to_int()
654dynamic_uid_max = get_option('dynamic-uid-max').to_int()
655conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
656conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
657substs.set('dynamicuidmin', dynamic_uid_min)
658substs.set('dynamicuidmax', dynamic_uid_max)
659
660container_uid_base_min = get_option('container-uid-base-min').to_int()
661container_uid_base_max = get_option('container-uid-base-max').to_int()
662conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
663conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
664substs.set('containeruidbasemin', container_uid_base_min)
665substs.set('containeruidbasemax', container_uid_base_max)
666
Lennart Poetteringafde4572017-12-05 11:00:24 +0100667nobody_user = get_option('nobody-user')
668nobody_group = get_option('nobody-group')
669
670getent_result = run_command('getent', 'passwd', '65534')
671if getent_result.returncode() == 0
672 name = getent_result.stdout().split(':')[0]
673 if name != nobody_user
674 message('WARNING:\n' +
675 ' 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) +
676 ' Your build will result in an user table setup that is incompatible with the local system.')
677 endif
678endif
679id_result = run_command('id', '-u', nobody_user)
680if id_result.returncode() == 0
681 id = id_result.stdout().to_int()
682 if id != 65534
683 message('WARNING:\n' +
684 ' 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) +
685 ' Your build will result in an user table setup that is incompatible with the local system.')
686 endif
687endif
688
689getent_result = run_command('getent', 'group', '65534')
690if getent_result.returncode() == 0
691 name = getent_result.stdout().split(':')[0]
692 if name != nobody_group
693 message('WARNING:\n' +
694 ' 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) +
695 ' Your build will result in an group table setup that is incompatible with the local system.')
696 endif
697endif
698id_result = run_command('id', '-g', nobody_group)
699if id_result.returncode() == 0
700 id = id_result.stdout().to_int()
701 if id != 65534
702 message('WARNING:\n' +
703 ' 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) +
704 ' Your build will result in an group table setup that is incompatible with the local system.')
705 endif
706endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900707if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
708 message('WARNING:\n' +
709 ' The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
710 ' Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
711endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100712
713conf.set_quoted('NOBODY_USER_NAME', nobody_user)
714conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900715substs.set('NOBODY_USER_NAME', nobody_user)
716substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100717
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400718tty_gid = get_option('tty-gid')
719conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400720substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400721
Ikey Doherty84786b82017-12-03 12:28:23 +0000722# Ensure provided GID argument is numeric, otherwise fallback to default assignment
723if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900724 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000725else
Yu Watanabed6806872017-12-05 14:01:39 +0900726 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000727endif
728substs.set('USERS_GID', users_gid)
729
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400730if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400731 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400732endif
733
734if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400735 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400736endif
737
738substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700739substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400740
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400741kill_user_processes = get_option('default-kill-user-processes')
742conf.set10('KILL_USER_PROCESSES', kill_user_processes)
743substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400744
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400745dns_servers = get_option('dns-servers')
746conf.set_quoted('DNS_SERVERS', dns_servers)
747substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400748
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400749ntp_servers = get_option('ntp-servers')
750conf.set_quoted('NTP_SERVERS', ntp_servers)
751substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400752
753conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
754
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400755substs.set('SUSHELL', get_option('debug-shell'))
756substs.set('DEBUGTTY', get_option('debug-tty'))
757
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400758debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200759enable_debug_hashmap = false
760enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400761if debug != ''
762 foreach name : debug.split(',')
763 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200764 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400765 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200766 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400767 else
768 message('unknown debug option "@0@", ignoring'.format(name))
769 endif
770 endforeach
771endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200772conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
773conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400774
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400775#####################################################################
776
777threads = dependency('threads')
778librt = cc.find_library('rt')
779libm = cc.find_library('m')
780libdl = cc.find_library('dl')
781libcrypt = cc.find_library('crypt')
782
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400783libcap = dependency('libcap', required : false)
784if not libcap.found()
785 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
786 libcap = cc.find_library('cap')
787endif
788
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400789libmount = dependency('mount',
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500790 version : '>= 2.30',
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500791 required : not fuzzer_build)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400792
793want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500794if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400795 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400796 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400797 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200798 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400799else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200800 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400801 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400802endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200803conf.set10('HAVE_SECCOMP', have)
804m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400805
806want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500807if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400808 libselinux = dependency('libselinux',
809 version : '>= 2.1.9',
810 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200811 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400812else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200813 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400814 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400815endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200816conf.set10('HAVE_SELINUX', have)
817m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400818
819want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500820if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400821 libapparmor = dependency('libapparmor',
822 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200823 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400824else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200825 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400826 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400827endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200828conf.set10('HAVE_APPARMOR', have)
829m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400830
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400831smack_run_label = get_option('smack-run-label')
832if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400833 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
834 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400835endif
836
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400837want_polkit = get_option('polkit')
838install_polkit = false
839install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500840if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400841 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400842
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400843 libpolkit = dependency('polkit-gobject-1',
844 required : false)
845 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
846 message('Old polkit detected, will install pkla files')
847 install_polkit_pkla = true
848 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400849endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200850conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400851
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400852want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500853if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400854 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200855 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400856else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200857 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400858 libacl = []
859endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200860conf.set10('HAVE_ACL', have)
861m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400862
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400863want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500864if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400865 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200866 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400867else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200868 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400869 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400870endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200871conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400872
873want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500874if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400875 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200876 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400877else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200878 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400879 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400880endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200881conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400882
883want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500884if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400885 libkmod = dependency('libkmod',
886 version : '>= 15',
887 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200888 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400889else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200890 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400891 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400892endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200893conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400894
895want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500896if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400897 libpam = cc.find_library('pam', required : want_pam == 'true')
898 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400900else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200901 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400902 libpam = []
903 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400904endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200905conf.set10('HAVE_PAM', have)
906m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400907
908want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500909if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400910 libmicrohttpd = dependency('libmicrohttpd',
911 version : '>= 0.9.33',
912 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200913 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400914else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200915 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400916 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400917endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200918conf.set10('HAVE_MICROHTTPD', have)
919m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400920
921want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500922if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400923 libcryptsetup = dependency('libcryptsetup',
924 version : '>= 1.6.0',
925 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200926 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400927else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200928 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400929 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400930endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200931conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400932
933want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500934if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400935 libcurl = dependency('libcurl',
936 version : '>= 7.32.0',
937 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200938 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400939else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200940 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400941 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400942endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200943conf.set10('HAVE_LIBCURL', have)
944m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400945
946want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400947want_libidn2 = get_option('libidn2')
948if want_libidn == 'true' and want_libidn2 == 'true'
949 error('libidn and libidn2 cannot be requested simultaneously')
950endif
951
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500952if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400953 libidn = dependency('libidn',
954 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200955 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400956else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200957 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400958 libidn = []
959endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200960conf.set10('HAVE_LIBIDN', have)
961m4_defines += have ? ['-DHAVE_LIBIDN'] : []
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500962if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400963 # libidn is used for both libidn and libidn2 objects
964 libidn = dependency('libidn2',
965 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200966 have = libidn.found()
967else
968 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400969endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200970conf.set10('HAVE_LIBIDN2', have)
971m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400972
973want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500974if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400975 libiptc = dependency('libiptc',
976 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200977 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400978else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200979 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400980 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400981endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200982conf.set10('HAVE_LIBIPTC', have)
983m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400984
985want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500986if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400987 libqrencode = dependency('libqrencode',
988 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200989 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400990else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200991 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400992 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400993endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200994conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400995
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400996want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500997if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400998 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
999 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001000 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001001else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001002 have = false
1003endif
1004if not have
1005 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001006 libgcrypt = []
1007 libgpg_error = []
1008endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001009conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001010
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001011want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001012if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001013 libgnutls = dependency('gnutls',
1014 version : '>= 3.1.4',
1015 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001016 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001017else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001018 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001019 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001020endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001021conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001022
1023want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001024if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001025 libdw = dependency('libdw',
1026 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001027 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001028else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001029 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001030 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001031endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001032conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001033
1034want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001035if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001036 libz = dependency('zlib',
1037 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001038 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001039else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001040 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001041 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001042endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001043conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001044
1045want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001046if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001047 libbzip2 = cc.find_library('bz2',
1048 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001049 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001050else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001051 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001052 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001053endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001054conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001055
1056want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001057if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001058 libxz = dependency('liblzma',
1059 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001060 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001061else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001062 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001063 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001064endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001065conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001066
1067want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001068if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001069 liblz4 = dependency('liblz4',
1070 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001071 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001072else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001073 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001074 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001075endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001076conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001077
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001078want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001079if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001080 libxkbcommon = dependency('xkbcommon',
1081 version : '>= 0.3.0',
1082 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001083 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001084else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001085 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001086 libxkbcommon = []
1087endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001088conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001089
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001090want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001091if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001092 libglib = dependency('glib-2.0',
1093 version : '>= 2.22.0',
1094 required : want_glib == 'true')
1095 libgobject = dependency('gobject-2.0',
1096 version : '>= 2.22.0',
1097 required : want_glib == 'true')
1098 libgio = dependency('gio-2.0',
1099 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001100 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001101else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001102 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001103 libglib = []
1104 libgobject = []
1105 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001106endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001107conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001108
1109want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001110if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001111 libdbus = dependency('dbus-1',
1112 version : '>= 1.3.2',
1113 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001114 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001115else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001116 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001117 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001118endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001119conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001120
Yu Watanabe42303dc2017-06-18 05:22:32 +09001121default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001122if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001123 default_dnssec = 'no'
1124endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001125if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001126 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1127 default_dnssec = 'no'
1128endif
1129conf.set('DEFAULT_DNSSEC_MODE',
1130 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1131substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1132
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001133want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001134if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001135 have = (conf.get('HAVE_LIBCURL') == 1 and
1136 conf.get('HAVE_ZLIB') == 1 and
1137 conf.get('HAVE_BZIP2') == 1 and
1138 conf.get('HAVE_XZ') == 1 and
1139 conf.get('HAVE_GCRYPT') == 1)
1140 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001141 error('importd support was requested, but dependencies are not available')
1142 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001143else
1144 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001145endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001146conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001147
1148want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001149if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001150 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1151 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001152 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1153 # it's possible to build one without the other. Complain only if
1154 # support was explictly requested. The auxiliary files like sysusers
1155 # config should be installed when any of the programs are built.
1156 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1157 error('remote support was requested, but dependencies are not available')
1158 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001159 have = have_deps[0] or have_deps[1]
1160else
1161 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001162endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001163conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001164
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001165foreach term : ['utmp',
1166 'hibernate',
1167 'environment-d',
1168 'binfmt',
1169 'coredump',
1170 'resolve',
1171 'logind',
1172 'hostnamed',
1173 'localed',
1174 'machined',
1175 'networkd',
1176 'timedated',
1177 'timesyncd',
1178 'myhostname',
1179 'firstboot',
1180 'randomseed',
1181 'backlight',
1182 'vconsole',
1183 'quotacheck',
1184 'sysusers',
1185 'tmpfiles',
1186 'hwdb',
1187 'rfkill',
1188 'ldconfig',
1189 'efi',
1190 'tpm',
1191 'ima',
1192 'smack',
1193 'gshadow',
1194 'idn',
1195 'nss-systemd']
1196 have = get_option(term)
1197 name = 'ENABLE_' + term.underscorify().to_upper()
1198 conf.set10(name, have)
1199 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001200endforeach
1201
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001202want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001203install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001204tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001205fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001206
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001207conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', get_option('slow-tests'))
1208
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001209#####################################################################
1210
1211if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001212 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001213
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001214 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001215 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001216 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001217 elif efi_arch == 'x86_64'
1218 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001219 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001220 elif efi_arch == 'arm'
1221 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001222 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001223 elif efi_arch == 'aarch64'
1224 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001225 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001226 else
1227 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001228 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001229 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001230
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001231 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001232 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001233
1234 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001235else
1236 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001237endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001238conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001239
1240#####################################################################
1241
1242config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001243 output : 'config.h',
1244 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001245
1246includes = include_directories('src/basic',
1247 'src/shared',
1248 'src/systemd',
1249 'src/journal',
1250 'src/resolve',
1251 'src/timesync',
1252 'src/login',
1253 'src/udev',
1254 'src/libudev',
1255 'src/core',
1256 'src/libsystemd/sd-bus',
1257 'src/libsystemd/sd-device',
1258 'src/libsystemd/sd-hwdb',
1259 'src/libsystemd/sd-id128',
1260 'src/libsystemd/sd-netlink',
1261 'src/libsystemd/sd-network',
1262 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001263 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001264
1265add_project_arguments('-include', 'config.h', language : 'c')
1266
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001267subdir('po')
1268subdir('catalog')
1269subdir('src/systemd')
1270subdir('src/basic')
1271subdir('src/libsystemd')
1272subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001273subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001274subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001275
1276libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001277 'journal-core',
1278 libjournal_core_sources,
1279 journald_gperf_c,
1280 include_directories : includes,
1281 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001282
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001283libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001284libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001285 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001286 '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 +02001287 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001288 include_directories : includes,
1289 link_args : ['-shared',
1290 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001291 link_with : [libbasic,
1292 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001293 link_whole : [libsystemd_static,
1294 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001295 dependencies : [threads,
1296 librt,
1297 libxz,
1298 liblz4],
1299 link_depends : libsystemd_sym,
1300 install : true,
1301 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001302
1303############################################################
1304
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001305# binaries that have --help and are intended for use by humans,
1306# usually, but not always, installed in /bin.
1307public_programs = []
1308
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001309subdir('src/libudev')
1310subdir('src/shared')
1311subdir('src/core')
1312subdir('src/udev')
1313subdir('src/network')
1314
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001315subdir('src/analyze')
1316subdir('src/journal-remote')
1317subdir('src/coredump')
1318subdir('src/hostname')
1319subdir('src/import')
1320subdir('src/kernel-install')
1321subdir('src/locale')
1322subdir('src/machine')
1323subdir('src/nspawn')
1324subdir('src/resolve')
1325subdir('src/timedate')
1326subdir('src/timesync')
1327subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001328subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001329
1330subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001331subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001332subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001333subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001334
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001335############################################################
1336
1337# only static linking apart from libdl, to make sure that the
1338# module is linked to all libraries that it uses.
1339test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001340 'test-dlopen',
1341 test_dlopen_c,
1342 include_directories : includes,
1343 link_with : [libbasic],
1344 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001345
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001346foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001347 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001348 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001349 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001350
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001351 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001352 if condition
1353 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001354
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001355 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1356 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001357
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001358 nss = shared_library(
1359 'nss_' + module,
1360 'src/nss-@0@/nss-@0@.c'.format(module),
1361 version : '2',
1362 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001363 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1364 link_args : ['-Wl,-z,nodelete',
1365 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001366 '-Wl,--version-script=' + version_script_arg,
1367 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001368 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001369 libbasic],
1370 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001371 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001372 link_depends : sym,
1373 install : true,
1374 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001375
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001376 # We cannot use shared_module because it does not support version suffix.
1377 # Unfortunately shared_library insists on creating the symlink…
1378 meson.add_install_script('sh', '-c',
1379 'rm $DESTDIR@0@/libnss_@1@.so'
1380 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001381
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001382 test('dlopen-nss_' + module,
1383 test_dlopen,
1384 args : [nss.full_path()]) # path to dlopen must include a slash
1385 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001386endforeach
1387
1388############################################################
1389
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001390executable('systemd',
1391 systemd_sources,
1392 include_directories : includes,
1393 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001394 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001395 dependencies : [threads,
1396 librt,
1397 libseccomp,
1398 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001399 libmount,
1400 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001401 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001402 install : true,
1403 install_dir : rootlibexecdir)
1404
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001405exe = executable('systemd-analyze',
1406 systemd_analyze_sources,
1407 include_directories : includes,
1408 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001409 libshared],
1410 dependencies : [threads,
1411 librt,
1412 libseccomp,
1413 libselinux,
1414 libmount,
1415 libblkid],
1416 install_rpath : rootlibexecdir,
1417 install : true)
1418public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001419
1420executable('systemd-journald',
1421 systemd_journald_sources,
1422 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001423 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001424 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001425 dependencies : [threads,
1426 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001427 liblz4,
1428 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001429 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001430 install : true,
1431 install_dir : rootlibexecdir)
1432
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001433exe = executable('systemd-cat',
1434 systemd_cat_sources,
1435 include_directories : includes,
1436 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001437 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001438 dependencies : [threads],
1439 install_rpath : rootlibexecdir,
1440 install : true)
1441public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001442
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001443exe = executable('journalctl',
1444 journalctl_sources,
1445 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001446 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001447 dependencies : [threads,
1448 libqrencode,
1449 libxz,
1450 liblz4],
1451 install_rpath : rootlibexecdir,
1452 install : true,
1453 install_dir : rootbindir)
1454public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001455
1456executable('systemd-getty-generator',
1457 'src/getty-generator/getty-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-debug-generator',
1465 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001466 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001467 link_with : [libshared],
1468 install_rpath : rootlibexecdir,
1469 install : true,
1470 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001471
1472executable('systemd-fstab-generator',
1473 'src/fstab-generator/fstab-generator.c',
1474 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001475 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001476 link_with : [libshared],
1477 install_rpath : rootlibexecdir,
1478 install : true,
1479 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001480
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001481if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001482 executable('30-systemd-environment-d-generator',
1483 'src/environment-d-generator/environment-d-generator.c',
1484 include_directories : includes,
1485 link_with : [libshared],
1486 install_rpath : rootlibexecdir,
1487 install : true,
1488 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001489
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001490 meson.add_install_script(meson_make_symlink,
1491 join_paths(sysconfdir, 'environment'),
1492 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001493endif
1494
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001495if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001496 executable('systemd-hibernate-resume-generator',
1497 'src/hibernate-resume/hibernate-resume-generator.c',
1498 include_directories : includes,
1499 link_with : [libshared],
1500 install_rpath : rootlibexecdir,
1501 install : true,
1502 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001503
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001504 executable('systemd-hibernate-resume',
1505 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001506 include_directories : includes,
1507 link_with : [libshared],
1508 install_rpath : rootlibexecdir,
1509 install : true,
1510 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001511endif
1512
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001513if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001514 executable('systemd-gpt-auto-generator',
1515 'src/gpt-auto-generator/gpt-auto-generator.c',
1516 'src/basic/blkid-util.h',
1517 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001518 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001519 dependencies : libblkid,
1520 install_rpath : rootlibexecdir,
1521 install : true,
1522 install_dir : systemgeneratordir)
1523
1524 exe = executable('systemd-dissect',
1525 'src/dissect/dissect.c',
1526 include_directories : includes,
1527 link_with : [libshared],
1528 install_rpath : rootlibexecdir,
1529 install : true,
1530 install_dir : rootlibexecdir)
1531 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001532endif
1533
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001534if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001535 executable('systemd-resolved',
1536 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001537 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001538 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001539 libbasic_gcrypt,
1540 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001541 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001542 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001543 libm,
1544 libidn],
1545 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001546 install : true,
1547 install_dir : rootlibexecdir)
1548
1549 exe = executable('systemd-resolve',
1550 systemd_resolve_sources,
1551 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001552 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001553 libbasic_gcrypt,
1554 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001555 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001556 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001557 libm,
1558 libidn],
1559 install_rpath : rootlibexecdir,
1560 install : true)
1561 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001562endif
1563
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001564if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001565 executable('systemd-logind',
1566 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001567 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001568 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001569 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001570 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001571 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001572 install_rpath : rootlibexecdir,
1573 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001574 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001575
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001576 exe = executable('loginctl',
1577 loginctl_sources,
1578 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001579 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001580 dependencies : [threads,
1581 liblz4,
1582 libxz],
1583 install_rpath : rootlibexecdir,
1584 install : true,
1585 install_dir : rootbindir)
1586 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001587
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001588 exe = executable('systemd-inhibit',
1589 'src/login/inhibit.c',
1590 include_directories : includes,
1591 link_with : [libshared],
1592 install_rpath : rootlibexecdir,
1593 install : true,
1594 install_dir : rootbindir)
1595 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001596
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001597 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001598 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1599 pam_systemd = shared_library(
1600 'pam_systemd',
1601 pam_systemd_c,
1602 name_prefix : '',
1603 include_directories : includes,
1604 link_args : ['-shared',
1605 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001606 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001607 libshared_static],
1608 dependencies : [threads,
1609 libpam,
1610 libpam_misc],
1611 link_depends : pam_systemd_sym,
1612 install : true,
1613 install_dir : pamlibdir)
1614
1615 test('dlopen-pam_systemd',
1616 test_dlopen,
1617 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1618 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001619endif
1620
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001621if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001622 executable('systemd-user-sessions',
1623 'src/user-sessions/user-sessions.c',
1624 include_directories : includes,
1625 link_with : [libshared],
1626 install_rpath : rootlibexecdir,
1627 install : true,
1628 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001629endif
1630
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001631if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001632 exe = executable('bootctl',
1633 'src/boot/bootctl.c',
1634 include_directories : includes,
1635 link_with : [libshared],
1636 dependencies : [libblkid],
1637 install_rpath : rootlibexecdir,
1638 install : true)
1639 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001640endif
1641
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001642exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1643 include_directories : includes,
1644 link_with : [libshared],
1645 dependencies : [threads],
1646 install_rpath : rootlibexecdir,
1647 install : true)
1648public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001649
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001650exe = executable('systemctl', 'src/systemctl/systemctl.c',
1651 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001652 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001653 dependencies : [threads,
1654 libcap,
1655 libselinux,
1656 libxz,
1657 liblz4],
1658 install_rpath : rootlibexecdir,
1659 install : true,
1660 install_dir : rootbindir)
1661public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001662
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001663if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001664 executable('systemd-backlight',
1665 'src/backlight/backlight.c',
1666 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001667 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001668 install_rpath : rootlibexecdir,
1669 install : true,
1670 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001671endif
1672
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001673if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001674 executable('systemd-rfkill',
1675 'src/rfkill/rfkill.c',
1676 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001677 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001678 install_rpath : rootlibexecdir,
1679 install : true,
1680 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001681endif
1682
1683executable('systemd-system-update-generator',
1684 'src/system-update-generator/system-update-generator.c',
1685 include_directories : includes,
1686 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001687 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001688 install : true,
1689 install_dir : systemgeneratordir)
1690
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001691if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001692 executable('systemd-cryptsetup',
1693 'src/cryptsetup/cryptsetup.c',
1694 include_directories : includes,
1695 link_with : [libshared],
1696 dependencies : [libcryptsetup],
1697 install_rpath : rootlibexecdir,
1698 install : true,
1699 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001700
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001701 executable('systemd-cryptsetup-generator',
1702 'src/cryptsetup/cryptsetup-generator.c',
1703 include_directories : includes,
1704 link_with : [libshared],
1705 dependencies : [libcryptsetup],
1706 install_rpath : rootlibexecdir,
1707 install : true,
1708 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001709
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001710 executable('systemd-veritysetup',
1711 'src/veritysetup/veritysetup.c',
1712 include_directories : includes,
1713 link_with : [libshared],
1714 dependencies : [libcryptsetup],
1715 install_rpath : rootlibexecdir,
1716 install : true,
1717 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001718
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001719 executable('systemd-veritysetup-generator',
1720 'src/veritysetup/veritysetup-generator.c',
1721 include_directories : includes,
1722 link_with : [libshared],
1723 dependencies : [libcryptsetup],
1724 install_rpath : rootlibexecdir,
1725 install : true,
1726 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001727endif
1728
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001729if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001730 executable('systemd-sysv-generator',
1731 'src/sysv-generator/sysv-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 -04001737
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001738 executable('systemd-rc-local-generator',
1739 'src/rc-local-generator/rc-local-generator.c',
1740 include_directories : includes,
1741 link_with : [libshared],
1742 install_rpath : rootlibexecdir,
1743 install : true,
1744 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001745endif
1746
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001747if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001748 executable('systemd-hostnamed',
1749 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001750 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001751 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001752 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001753 install : true,
1754 install_dir : rootlibexecdir)
1755
1756 exe = executable('hostnamectl',
1757 'src/hostname/hostnamectl.c',
1758 include_directories : includes,
1759 link_with : [libshared],
1760 install_rpath : rootlibexecdir,
1761 install : true)
1762 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001763endif
1764
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001765if conf.get('ENABLE_LOCALED') == 1
1766 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001767 # logind will load libxkbcommon.so dynamically on its own
1768 deps = [libdl]
1769 else
1770 deps = []
1771 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001772
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001773 executable('systemd-localed',
1774 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001775 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001776 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001777 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001778 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001779 install : true,
1780 install_dir : rootlibexecdir)
1781
1782 exe = executable('localectl',
1783 localectl_sources,
1784 include_directories : includes,
1785 link_with : [libshared],
1786 install_rpath : rootlibexecdir,
1787 install : true)
1788 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001789endif
1790
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001791if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001792 executable('systemd-timedated',
1793 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001794 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001795 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001796 install_rpath : rootlibexecdir,
1797 install : true,
1798 install_dir : rootlibexecdir)
1799
1800 exe = executable('timedatectl',
1801 'src/timedate/timedatectl.c',
1802 include_directories : includes,
1803 install_rpath : rootlibexecdir,
1804 link_with : [libshared],
1805 install : true)
1806 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001807endif
1808
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001809if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001810 executable('systemd-timesyncd',
1811 systemd_timesyncd_sources,
1812 include_directories : includes,
1813 link_with : [libshared],
1814 dependencies : [threads,
1815 libm],
1816 install_rpath : rootlibexecdir,
1817 install : true,
1818 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001819endif
1820
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001821if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001822 executable('systemd-machined',
1823 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001824 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001825 link_with : [libmachine_core,
1826 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001827 install_rpath : rootlibexecdir,
1828 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001829 install_dir : rootlibexecdir)
1830
1831 exe = executable('machinectl',
1832 'src/machine/machinectl.c',
1833 include_directories : includes,
1834 link_with : [libshared],
1835 dependencies : [threads,
1836 libxz,
1837 liblz4],
1838 install_rpath : rootlibexecdir,
1839 install : true,
1840 install_dir : rootbindir)
1841 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001842endif
1843
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001844if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001845 executable('systemd-importd',
1846 systemd_importd_sources,
1847 include_directories : includes,
1848 link_with : [libshared],
1849 dependencies : [threads],
1850 install_rpath : rootlibexecdir,
1851 install : true,
1852 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001853
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001854 systemd_pull = executable('systemd-pull',
1855 systemd_pull_sources,
1856 include_directories : includes,
1857 link_with : [libshared],
1858 dependencies : [libcurl,
1859 libz,
1860 libbzip2,
1861 libxz,
1862 libgcrypt],
1863 install_rpath : rootlibexecdir,
1864 install : true,
1865 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001866
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001867 systemd_import = executable('systemd-import',
1868 systemd_import_sources,
1869 include_directories : includes,
1870 link_with : [libshared],
1871 dependencies : [libcurl,
1872 libz,
1873 libbzip2,
1874 libxz],
1875 install_rpath : rootlibexecdir,
1876 install : true,
1877 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001878
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001879 systemd_export = executable('systemd-export',
1880 systemd_export_sources,
1881 include_directories : includes,
1882 link_with : [libshared],
1883 dependencies : [libcurl,
1884 libz,
1885 libbzip2,
1886 libxz],
1887 install_rpath : rootlibexecdir,
1888 install : true,
1889 install_dir : rootlibexecdir)
1890 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001891endif
1892
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001893if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001894 exe = executable('systemd-journal-upload',
1895 systemd_journal_upload_sources,
1896 include_directories : includes,
1897 link_with : [libshared],
1898 dependencies : [threads,
1899 libcurl,
1900 libgnutls,
1901 libxz,
1902 liblz4],
1903 install_rpath : rootlibexecdir,
1904 install : true,
1905 install_dir : rootlibexecdir)
1906 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001907endif
1908
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001909if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001910 s_j_remote = executable('systemd-journal-remote',
1911 systemd_journal_remote_sources,
1912 include_directories : includes,
1913 link_with : [libshared],
1914 dependencies : [threads,
1915 libmicrohttpd,
1916 libgnutls,
1917 libxz,
1918 liblz4],
1919 install_rpath : rootlibexecdir,
1920 install : true,
1921 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001922
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001923 s_j_gatewayd = executable('systemd-journal-gatewayd',
1924 systemd_journal_gatewayd_sources,
1925 include_directories : includes,
1926 link_with : [libshared],
1927 dependencies : [threads,
1928 libmicrohttpd,
1929 libgnutls,
1930 libxz,
1931 liblz4],
1932 install_rpath : rootlibexecdir,
1933 install : true,
1934 install_dir : rootlibexecdir)
1935 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001936endif
1937
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001938if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001939 executable('systemd-coredump',
1940 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001941 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001942 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001943 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001944 libacl,
1945 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001946 libxz,
1947 liblz4],
1948 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001949 install : true,
1950 install_dir : rootlibexecdir)
1951
1952 exe = executable('coredumpctl',
1953 coredumpctl_sources,
1954 include_directories : includes,
1955 link_with : [libshared],
1956 dependencies : [threads,
1957 libxz,
1958 liblz4],
1959 install_rpath : rootlibexecdir,
1960 install : true)
1961 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001962endif
1963
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001964if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001965 exe = executable('systemd-binfmt',
1966 'src/binfmt/binfmt.c',
1967 include_directories : includes,
1968 link_with : [libshared],
1969 install_rpath : rootlibexecdir,
1970 install : true,
1971 install_dir : rootlibexecdir)
1972 public_programs += [exe]
1973
1974 meson.add_install_script('sh', '-c',
1975 mkdir_p.format(binfmtdir))
1976 meson.add_install_script('sh', '-c',
1977 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
1978endif
1979
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001980if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001981 executable('systemd-vconsole-setup',
1982 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001983 include_directories : includes,
1984 link_with : [libshared],
1985 install_rpath : rootlibexecdir,
1986 install : true,
1987 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001988endif
1989
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001990if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001991 executable('systemd-random-seed',
1992 'src/random-seed/random-seed.c',
1993 include_directories : includes,
1994 link_with : [libshared],
1995 install_rpath : rootlibexecdir,
1996 install : true,
1997 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001998endif
1999
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002000if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002001 executable('systemd-firstboot',
2002 'src/firstboot/firstboot.c',
2003 include_directories : includes,
2004 link_with : [libshared],
2005 dependencies : [libcrypt],
2006 install_rpath : rootlibexecdir,
2007 install : true,
2008 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002009endif
2010
2011executable('systemd-remount-fs',
2012 'src/remount-fs/remount-fs.c',
2013 'src/core/mount-setup.c',
2014 'src/core/mount-setup.h',
2015 include_directories : includes,
2016 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002017 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002018 install : true,
2019 install_dir : rootlibexecdir)
2020
2021executable('systemd-machine-id-setup',
2022 'src/machine-id-setup/machine-id-setup-main.c',
2023 'src/core/machine-id-setup.c',
2024 'src/core/machine-id-setup.h',
2025 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002026 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002027 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002028 install : true,
2029 install_dir : rootbindir)
2030
2031executable('systemd-fsck',
2032 'src/fsck/fsck.c',
2033 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002034 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002035 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002036 install : true,
2037 install_dir : rootlibexecdir)
2038
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002039executable('systemd-growfs',
2040 'src/partition/growfs.c',
2041 include_directories : includes,
2042 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002043 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002044 install_rpath : rootlibexecdir,
2045 install : true,
2046 install_dir : rootlibexecdir)
2047
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002048executable('systemd-makefs',
2049 'src/partition/makefs.c',
2050 include_directories : includes,
2051 link_with : [libshared],
2052 install_rpath : rootlibexecdir,
2053 install : true,
2054 install_dir : rootlibexecdir)
2055
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002056executable('systemd-sleep',
2057 'src/sleep/sleep.c',
2058 include_directories : includes,
2059 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002060 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002061 install : true,
2062 install_dir : rootlibexecdir)
2063
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002064exe = executable('systemd-sysctl',
2065 'src/sysctl/sysctl.c',
2066 include_directories : includes,
2067 link_with : [libshared],
2068 install_rpath : rootlibexecdir,
2069 install : true,
2070 install_dir : rootlibexecdir)
2071public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002072
2073executable('systemd-ac-power',
2074 'src/ac-power/ac-power.c',
2075 include_directories : includes,
2076 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002077 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002078 install : true,
2079 install_dir : rootlibexecdir)
2080
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002081exe = executable('systemd-detect-virt',
2082 'src/detect-virt/detect-virt.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-delta',
2090 'src/delta/delta.c',
2091 include_directories : includes,
2092 link_with : [libshared],
2093 install_rpath : rootlibexecdir,
2094 install : true)
2095public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002096
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002097exe = executable('systemd-escape',
2098 'src/escape/escape.c',
2099 include_directories : includes,
2100 link_with : [libshared],
2101 install_rpath : rootlibexecdir,
2102 install : true,
2103 install_dir : rootbindir)
2104public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002105
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002106exe = executable('systemd-notify',
2107 'src/notify/notify.c',
2108 include_directories : includes,
2109 link_with : [libshared],
2110 install_rpath : rootlibexecdir,
2111 install : true,
2112 install_dir : rootbindir)
2113public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002114
2115executable('systemd-volatile-root',
2116 'src/volatile-root/volatile-root.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
2123executable('systemd-cgroups-agent',
2124 'src/cgroups-agent/cgroups-agent.c',
2125 include_directories : includes,
2126 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002127 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002128 install : true,
2129 install_dir : rootlibexecdir)
2130
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002131exe = executable('systemd-path',
2132 'src/path/path.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)
2137public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002138
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002139exe = executable('systemd-ask-password',
2140 'src/ask-password/ask-password.c',
2141 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002142 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002143 install_rpath : rootlibexecdir,
2144 install : true,
2145 install_dir : rootbindir)
2146public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002147
2148executable('systemd-reply-password',
2149 'src/reply-password/reply-password.c',
2150 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002151 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002152 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002153 install : true,
2154 install_dir : rootlibexecdir)
2155
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002156exe = executable('systemd-tty-ask-password-agent',
2157 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2158 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002159 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002160 install_rpath : rootlibexecdir,
2161 install : true,
2162 install_dir : rootbindir)
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-cgls',
2166 'src/cgls/cgls.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
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002173exe = executable('systemd-cgtop',
2174 'src/cgtop/cgtop.c',
2175 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002176 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002177 install_rpath : rootlibexecdir,
2178 install : true)
2179public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002180
2181executable('systemd-initctl',
2182 'src/initctl/initctl.c',
2183 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002184 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002185 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002186 install : true,
2187 install_dir : rootlibexecdir)
2188
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002189exe = executable('systemd-mount',
2190 'src/mount/mount-tool.c',
2191 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002192 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002193 install_rpath : rootlibexecdir,
2194 install : true)
2195public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002196
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002197meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002198 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002199
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002200exe = executable('systemd-run',
2201 'src/run/run.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('systemd-stdio-bridge',
2209 'src/stdio-bridge/stdio-bridge.c',
2210 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002211 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002212 install_rpath : rootlibexecdir,
2213 install : true)
2214public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002215
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002216exe = executable('busctl',
2217 'src/busctl/busctl.c',
2218 'src/busctl/busctl-introspect.c',
2219 'src/busctl/busctl-introspect.h',
2220 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002221 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002222 install_rpath : rootlibexecdir,
2223 install : true)
2224public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002225
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002226if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002227 exe = executable('systemd-sysusers',
2228 'src/sysusers/sysusers.c',
2229 include_directories : includes,
2230 link_with : [libshared],
2231 install_rpath : rootlibexecdir,
2232 install : true,
2233 install_dir : rootbindir)
2234 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002235endif
2236
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002237if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002238 exe = executable('systemd-tmpfiles',
2239 'src/tmpfiles/tmpfiles.c',
2240 include_directories : includes,
2241 link_with : [libshared],
2242 dependencies : [libacl],
2243 install_rpath : rootlibexecdir,
2244 install : true,
2245 install_dir : rootbindir)
2246 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002247
2248 test('test-systemd-tmpfiles',
2249 test_systemd_tmpfiles_py,
2250 args : exe.full_path())
2251 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002252endif
2253
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002254if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002255 exe = executable('systemd-hwdb',
2256 'src/hwdb/hwdb.c',
2257 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2258 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002259 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002260 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002261 install : true,
2262 install_dir : rootbindir)
2263 public_programs += [exe]
2264endif
2265
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002266if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002267 executable('systemd-quotacheck',
2268 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002269 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002270 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002271 install_rpath : rootlibexecdir,
2272 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002273 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002274endif
2275
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002276exe = executable('systemd-socket-proxyd',
2277 'src/socket-proxy/socket-proxyd.c',
2278 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002279 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002280 dependencies : [threads],
2281 install_rpath : rootlibexecdir,
2282 install : true,
2283 install_dir : rootlibexecdir)
2284public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002285
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002286exe = executable('systemd-udevd',
2287 systemd_udevd_sources,
2288 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002289 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002290 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002291 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002292 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002293 dependencies : [threads,
2294 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002295 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002296 libacl,
2297 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002298 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002299 install : true,
2300 install_dir : rootlibexecdir)
2301public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002302
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002303exe = executable('udevadm',
2304 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002305 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002306 include_directories : includes,
2307 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002308 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002309 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002310 dependencies : [threads,
2311 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002312 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002313 libacl,
2314 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002315 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002316 install : true,
2317 install_dir : rootbindir)
2318public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002319
2320executable('systemd-shutdown',
2321 systemd_shutdown_sources,
2322 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002323 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-done',
2329 'src/update-done/update-done.c',
2330 include_directories : includes,
2331 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002332 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002333 install : true,
2334 install_dir : rootlibexecdir)
2335
2336executable('systemd-update-utmp',
2337 'src/update-utmp/update-utmp.c',
2338 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002339 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002340 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002341 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002342 install : true,
2343 install_dir : rootlibexecdir)
2344
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002345if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002346 executable('systemd-modules-load',
2347 'src/modules-load/modules-load.c',
2348 include_directories : includes,
2349 link_with : [libshared],
2350 dependencies : [libkmod],
2351 install_rpath : rootlibexecdir,
2352 install : true,
2353 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002354
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002355 meson.add_install_script('sh', '-c',
2356 mkdir_p.format(modulesloaddir))
2357 meson.add_install_script('sh', '-c',
2358 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002359endif
2360
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002361exe = executable('systemd-nspawn',
2362 systemd_nspawn_sources,
2363 'src/core/mount-setup.c', # FIXME: use a variable?
2364 'src/core/mount-setup.h',
2365 'src/core/loopback-setup.c',
2366 'src/core/loopback-setup.h',
2367 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002368 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002369 dependencies : [libacl,
2370 libblkid,
2371 libseccomp,
2372 libselinux],
2373 install_rpath : rootlibexecdir,
2374 install : true)
2375public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002376
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002377if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002378 executable('systemd-networkd',
2379 systemd_networkd_sources,
2380 include_directories : includes,
2381 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002382 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002383 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002384 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002385 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002386 install_rpath : rootlibexecdir,
2387 install : true,
2388 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002389
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002390 executable('systemd-networkd-wait-online',
2391 systemd_networkd_wait_online_sources,
2392 include_directories : includes,
2393 link_with : [libnetworkd_core,
2394 libshared],
2395 install_rpath : rootlibexecdir,
2396 install : true,
2397 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002398
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002399 exe = executable('networkctl',
2400 networkctl_sources,
2401 include_directories : includes,
2402 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002403 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002404 install_rpath : rootlibexecdir,
2405 install : true,
2406 install_dir : rootbindir)
2407 public_programs += [exe]
2408endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002409
2410executable('systemd-sulogin-shell',
2411 ['src/sulogin-shell/sulogin-shell.c'],
2412 include_directories : includes,
2413 link_with : [libshared],
2414 install_rpath : rootlibexecdir,
2415 install : true,
2416 install_dir : rootlibexecdir)
2417
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002418############################################################
2419
2420foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002421 sources = tuple[0]
2422 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2423 dependencies = tuple[2]
2424 condition = tuple.length() >= 4 ? tuple[3] : ''
2425 type = tuple.length() >= 5 ? tuple[4] : ''
2426 defs = tuple.length() >= 6 ? tuple[5] : []
2427 incs = tuple.length() >= 7 ? tuple[6] : includes
2428 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002429
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002430 name = sources[0].split('/')[-1].split('.')[0]
2431 if type.startswith('timeout=')
2432 timeout = type.split('=')[1].to_int()
2433 type = ''
2434 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002435 if want_tests == 'false'
2436 message('Not compiling @0@ because tests is set to false'.format(name))
2437 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002438 exe = executable(
2439 name,
2440 sources,
2441 include_directories : incs,
2442 link_with : link_with,
2443 dependencies : dependencies,
2444 c_args : defs,
2445 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002446 install : install_tests,
2447 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002448
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002449 if type == 'manual'
2450 message('@0@ is a manual test'.format(name))
2451 elif type == 'unsafe' and want_tests != 'unsafe'
2452 message('@0@ is an unsafe test'.format(name))
2453 else
2454 test(name, exe,
2455 env : test_env,
2456 timeout : timeout)
2457 endif
2458 else
2459 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2460 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002461endforeach
2462
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002463test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002464 'test-libsystemd-sym',
2465 test_libsystemd_sym_c,
2466 include_directories : includes,
2467 link_with : [libsystemd],
2468 install : install_tests,
2469 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002470test('test-libsystemd-sym',
2471 test_libsystemd_sym)
2472
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002473test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002474 'test-libudev-sym',
2475 test_libudev_sym_c,
2476 include_directories : includes,
2477 c_args : ['-Wno-deprecated-declarations'],
2478 link_with : [libudev],
2479 install : install_tests,
2480 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002481test('test-libudev-sym',
2482 test_libudev_sym)
2483
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002484############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002485
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002486fuzzer_exes = []
2487
2488foreach tuple : fuzzers
2489 sources = tuple[0]
2490 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2491 dependencies = tuple[2]
2492 defs = tuple.length() >= 4 ? tuple[3] : []
2493 incs = tuple.length() >= 5 ? tuple[4] : includes
2494
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002495 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002496 dependencies += fuzzing_engine
2497 else
2498 sources += 'src/fuzz/fuzz-main.c'
2499 endif
2500
2501 name = sources[0].split('/')[-1].split('.')[0]
2502
2503 fuzzer_exes += executable(
2504 name,
2505 sources,
2506 include_directories : [incs, include_directories('src/fuzz')],
2507 link_with : link_with,
2508 dependencies : dependencies,
2509 c_args : defs,
2510 install : false)
2511endforeach
2512
2513run_target('fuzzers',
2514 depends : fuzzer_exes,
2515 command : ['true'])
2516
2517############################################################
2518
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002519make_directive_index_py = find_program('tools/make-directive-index.py')
2520make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002521xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002522hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002523
2524subdir('units')
2525subdir('sysctl.d')
2526subdir('sysusers.d')
2527subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002528subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002529subdir('hwdb')
2530subdir('network')
2531subdir('man')
2532subdir('shell-completion/bash')
2533subdir('shell-completion/zsh')
2534subdir('docs/sysvinit')
2535subdir('docs/var-log')
2536
2537# FIXME: figure out if the warning is true:
2538# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2539install_subdir('factory/etc',
2540 install_dir : factorydir)
2541
2542
2543install_data('xorg/50-systemd-user.sh',
2544 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002545install_data('modprobe.d/systemd.conf',
2546 install_dir : modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002547install_data('README',
2548 'NEWS',
2549 'CODING_STYLE',
2550 'DISTRO_PORTING',
2551 'ENVIRONMENT.md',
2552 'LICENSE.GPL2',
2553 'LICENSE.LGPL2.1',
Felipe Satelerf9f54412017-12-18 10:58:13 -03002554 'TRANSIENT-SETTINGS.md',
2555 'UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002556 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2557 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002558
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002559meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2560meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2561
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002562############################################################
2563
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002564meson_check_help = find_program('tools/meson-check-help.sh')
2565
2566foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002567 name = exec.full_path().split('/')[-1]
2568 test('check-help-' + name,
2569 meson_check_help,
2570 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002571endforeach
2572
2573############################################################
2574
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002575if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002576 all_files = run_command(
2577 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002578 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002579 'ls-files',
2580 ':/*.[ch]'])
2581 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002582
userwithuide85a6902017-08-09 13:41:44 +00002583 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002584 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002585 output : 'tags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002586 command : ['env', 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002587 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002588 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002589 output : 'ctags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002590 command : ['env', 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002591endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002592
2593if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002594 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002595 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002596 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002597 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002598endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002599
2600if git.found()
2601 git_head = run_command(
2602 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002603 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002604 'rev-parse', 'HEAD']).stdout().strip()
2605 git_head_short = run_command(
2606 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002607 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002608 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2609
2610 run_target(
2611 'git-snapshot',
2612 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002613 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002614 git_head_short),
2615 '--prefix', 'systemd-@0@/'.format(git_head),
2616 'HEAD'])
2617endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002618
2619############################################################
2620
Lennart Poettering51b13862017-12-20 12:51:14 +01002621meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2622run_target(
2623 'check-api-docs',
2624 depends : [man, libsystemd, libudev],
2625 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2626
2627############################################################
2628
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002629status = [
2630 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2631
Yu Watanabe359b4962017-11-25 20:35:24 +09002632 'prefix directory: @0@'.format(prefixdir),
2633 'rootprefix directory: @0@'.format(rootprefixdir),
2634 'sysconf directory: @0@'.format(sysconfdir),
2635 'include directory: @0@'.format(includedir),
2636 'lib directory: @0@'.format(libdir),
2637 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002638 'SysV init scripts: @0@'.format(sysvinit_path),
2639 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002640 'PAM modules directory: @0@'.format(pamlibdir),
2641 'PAM configuration directory: @0@'.format(pamconfdir),
2642 'RPM macros directory: @0@'.format(rpmmacrosdir),
2643 'modprobe.d directory: @0@'.format(modprobedir),
2644 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2645 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2646 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2647 'bash completions directory: @0@'.format(bashcompletiondir),
2648 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002649 'extra start script: @0@'.format(get_option('rc-local')),
2650 'extra stop script: @0@'.format(get_option('halt-local')),
2651 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2652 get_option('debug-tty')),
2653 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002654 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002655 'maximum system UID: @0@'.format(system_uid_max),
2656 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002657 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2658 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2659 'minimum container UID base: @0@'.format(container_uid_base_min),
2660 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002661 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002662 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002663 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002664 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002665 'nobody user name: @0@'.format(nobody_user),
2666 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002667 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002668 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002669
2670 'default DNSSEC mode: @0@'.format(default_dnssec),
2671 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2672 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2673
2674alt_dns_servers = '\n '.join(dns_servers.split(' '))
2675alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2676status += [
2677 'default DNS servers: @0@'.format(alt_dns_servers),
2678 'default NTP servers: @0@'.format(alt_ntp_servers)]
2679
2680alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2681 '@@0@'.format(time_epoch)).stdout().strip()
2682status += [
2683 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2684
2685# TODO:
2686# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2687# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2688# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2689
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002690if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002691 status += [
2692 'efi arch: @0@'.format(efi_arch)]
2693
2694 if have_gnu_efi
2695 status += [
2696 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2697 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002698 'EFI lib directory: @0@'.format(efi_libdir),
2699 'EFI lds directory: @0@'.format(efi_ldsdir),
2700 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002701 endif
2702endif
2703
2704found = []
2705missing = []
2706
2707foreach tuple : [
2708 ['libcryptsetup'],
2709 ['PAM'],
2710 ['AUDIT'],
2711 ['IMA'],
2712 ['AppArmor'],
2713 ['SELinux'],
2714 ['SECCOMP'],
2715 ['SMACK'],
2716 ['zlib'],
2717 ['xz'],
2718 ['lz4'],
2719 ['bzip2'],
2720 ['ACL'],
2721 ['gcrypt'],
2722 ['qrencode'],
2723 ['microhttpd'],
2724 ['gnutls'],
2725 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002726 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002727 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002728 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002729 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002730 ['libiptc'],
2731 ['elfutils'],
2732 ['binfmt'],
2733 ['vconsole'],
2734 ['quotacheck'],
2735 ['tmpfiles'],
2736 ['environment.d'],
2737 ['sysusers'],
2738 ['firstboot'],
2739 ['randomseed'],
2740 ['backlight'],
2741 ['rfkill'],
2742 ['logind'],
2743 ['machined'],
2744 ['importd'],
2745 ['hostnamed'],
2746 ['timedated'],
2747 ['timesyncd'],
2748 ['localed'],
2749 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002750 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002751 ['coredump'],
2752 ['polkit'],
2753 ['legacy pkla', install_polkit_pkla],
2754 ['efi'],
2755 ['gnu-efi', have_gnu_efi],
2756 ['kmod'],
2757 ['xkbcommon'],
2758 ['blkid'],
2759 ['dbus'],
2760 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002761 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002762 ['hwdb'],
2763 ['tpm'],
2764 ['man pages', want_man],
2765 ['html pages', want_html],
2766 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002767 ['split /usr', conf.get('HAVE_SPLIT_USR') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002768 ['SysV compat'],
2769 ['utmp'],
2770 ['ldconfig'],
2771 ['hibernate'],
2772 ['adm group', get_option('adm-group')],
2773 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002774 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002775 ['debug hashmap'],
2776 ['debug mmap cache'],
2777]
2778
2779 cond = tuple.get(1, '')
2780 if cond == ''
2781 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2782 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002783 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002784 endif
2785 if cond
2786 found += [tuple[0]]
2787 else
2788 missing += [tuple[0]]
2789 endif
2790endforeach
2791
2792status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002793 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002794 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002795 '',
2796 'disabled features: @0@'.format(', '.join(missing)),
2797 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002798message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002799
2800if rootprefixdir != rootprefix_default
2801 message('WARNING:\n' +
2802 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2803 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2804 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2805endif